본문 바로가기

전체 글

천정의 마커 인식을 통한 로봇의 위치인식 OpenCV Marker Recognition 글에서 카메라로 특정한 패턴의 마크를 인식하는 프로그램을 만든 적이 있습니다. 이번에는 이 프로그램을 실내용 모바일 로봇의 주행에 사용하려 합니다. 천정에 마크를 붙이고 로봇에 장착된 카메라로 마크를 봄으로 마크의 위치를 계산하고 역으로 로봇의 위치를 계산하는 방법입니다. 이 때 마크의 위치는 미리 알고 있어야 합니다. 왜냐하면, 우리는 단지 마크를 기준으로 로봇의 위치를 계산할 수 있기 때문입니다. 다음 절차를 따라 진행해 보시기 바랍니다: 1. 다음 소스코드를 다운로드 받고 특정 폴더에 압축을 풀어줍니다. 이 코드는 윈도우즈에서 실행되며, 컴파일 하려면 Visual Studio C++ 2008이 필요합니다. 2. 로지텍 화상 카메라를 구매합니다. 제가 사.. 더보기
무인운전차량의 자율주행을 위한 장애물 대응 여기서는 무인운전차량의 자율주행 소프트웨어에서 전방 장애물에 대응하는 방법에 대한 내용을 소개합니다. 다음 그림과 같이 골프 카트의 전방 범퍼에 사람의 무릎 높이로 장애물을 감지하기 위한 레이저 스캐너(Sick LMS151-10100)가 지면과 수평으로 장착되어 있습니다. 이 센서를 통해 50Hz로 환경 정보를 수집하고 차량의 진행 방향에 있는 장애물을 감지하여 차량의 속도와 감속도를 조절하게 됩니다. 아직은 우회경로를 만들어 장애물을 회피하거나 하는 기능은 구현되어있지 안고, 단지 장애물이 감지되면 차량은 장애물과 충돌하지 않고 멈추도록 되어있습니다. 자세한 내용은 다음 파일을 참조하시기 바랍니다: 자율주행 소프트웨어의 소스코드에서 문서와 관련된 소스코드는 PathFollowing.cpp, PathFo.. 더보기
무인운전차량의 자율주행을 위한 경로추종 여기서는 무인운전차량의 자율주행 소프트웨어에서 경로추종에 관련된 내용을 소개합니다. 경로계획이 끝나면 차량이 추종해야할 연속된 경유점들의 집합인 경로가 만들어지는데, 경로추종에서는 차량이 경로를 벗어나지 않도록 제어하는 것을 말합니다. 동시에 전방 장애물과의 거리나 경로상의 곡률반경, 조향각, 구심가속도 등을 고려하여 차량의 현재속도를 제한하는 것까지 포함하고 있습니다. 다음 그림에서와 같이 추종해야 할 경로가 붉은색으로 표시되어 있고 차량은 이 경로를 벗어나지 않도록 조향각과 속도를 제어하고 있습니다. 자세한 내용은 다음 파일을 참조하시기 바랍니다: 자율주행 소프트웨어의 소스코드에서 문서와 관련된 소스코드는PathFollowing.cpp, PathFollowing.h 파일입니다. 이 파일들을 참조하시기.. 더보기
무인운전차량의 자율주행을 위한 경로계획 여기서는 무인운전차량의 자율주행 소프트웨어에서 경로계획에 관련된 내용을 소개합니다. 본 내용은 차량이 알려지지 않은 장소에서 임의의 위치로부터 지도를 만들며 경로를 찾아가는 내용이 아니고, 차량이 이동 가능한 모든 경로를 이미 가지고 있으며 차량의 위치와 목적지의 위치가 알려져 있는 상황에서 최적의 경로를 찾고 이를 보간하는 것에 대한 내용입니다. 다음 그림에서와 같이 위성지도상에 어두운 초록색으로 경로들이 표시되어 있고 경로상의 흰 점이 하나하나의 vertex 들입니다. 그리고 흰색 사각형은 차량의 목적지로 설정 가능한 정류소 위치입니다. 경로 파일은 다음과 같이 저장되어 있습니다. 저장된 데이터의 각 칼럼은 vertex의 위치 x, y와 최고 속도, 주차장 명입니다. 여기서 주차장 명이 생략된 경우는.. 더보기
무인운전차량의 주행환경 편집 소프트웨어 무인운전차량의 자율주행과 관련된 내용으로, 주된 기능으로 차량의 주행 경로를 편집하는 소프트웨어에 대한 설명입니다. 아래 이미지는 프로그램의 실행 모습인데, 다음이나 네이버 지도에서 구할 수 있는 위성 지도가 배경으로 깔리고 초록색과 갈색으로 경로와 건물외벽이 그려져 있습니다. 이것 말고는 별다른 기능이 없는데, 그래도 실외주행에서 차량의 주행경로를 편집하는 용도로 잘 사용하고 있습니다. 경로는 vertex와 edge의 연결로 구성되는데 vertex는 한 개 이상의 edge가 연결된 점이고 edge는 두 vertex 사이를 연결하는 선분입니다. 먼저 마우스 왼쪽 버튼으로 vertex를 클릭하면 밝은 녹색이 되는데 이때 드래그 하여 vertex의 위치를 변경하게 됩니다. vertex가 밝은 녹색으로 선택된.. 더보기
무인운전차량의 조향각 캘리브레이션 얼마전 무인운전차량의 자율주행에 대한 글을 썼는데, 이번에는 이 무인운전차량의 조향 핸들의 캘리브레이션 방법에 대해 설명드리도록 하겠습니다. 실제로 차량을 자율주행할 때, 조향 핸들이 캘리브레이션 되어있지 않은 경우 데드레쿠닝에 많은 오차를 발생하게 됩니다. 물론 Fiber Optic Gyro센서(http://blog.daum.net/pg365/247)와 같이 정밀한 자이로 센서가 장착되어 있다면 이러한 과정이 필요하지 않겠지만, FOG센서가 가격이 만만찮습니다. 차량 핸들과 종단의 바퀴가 연결되는 기구적 메커니즘을 살펴보면 차량 핸들의 회전각과 전륜의 조향각은 선형으로 비례하지 않는 구조입니다. 그래서 실험으로 이 둘의 관계식을 구해보는 수밖에 없습니다. 이를 위해서는 정밀하게 차량의 회전을 측정할 수.. 더보기
도로의 자석을 이용한 무인운전차량의 위치인식 지난글에서 무인운전차량의 자율주행 소프트웨어에 대하여 소개드렸었습니다. 차량의 자율주행에서 가장 핵심이 되는 기술이 바로 위치인식 기술입니다. 로봇이 원하는 목적지로 움직이기 위해서는 자신의 위치를 아는 것이 필수입니다. 실외에서는 GPS가 있기때문에 위치인식이 쉬운 것 아니냐고 반문하시는 분들도 계시겠지만, 실제로 실내보다 실외가 위치인식이 까다롭습니다. 왜냐면 GPS의 정밀도가 떨어지기 때문입니다. 차량이 도로에서 자신의 위치를 몇 미터씩 틀리게 추정한다면 바로 사고로 이어지겠죠. 그러면 DGPS를 쓰면 되지않겠냐고 하시지만, 실제로 DGPS도 건물에 가리거나 하면 GPS와 마찬가지로 위치 점핑이 발생합니다. 또한 수km의 좁은 지역에서는 몇 개의 스테이션으로 해결이 가능하나 넓은 지역을 커버하기에는.. 더보기
무인운전차량의 자율주행 소프트웨어 며칠전 무인운전차량의 자율주행에 관한 글을 작성하였는데요. 여기서는 무인운전차량을 자율주행한 소프트웨어를 공개합니다. 이 소프트웨어에는 레이저 스캐너(Sick LMS151-10100), Fiber optic gyro(DSP3000), (주)엔티렉스에서 만든 구동부 제어기를 엑세스 하기위한 장치드라이버 코드와 주행에 관련된 A* 경로계획, 경로 추종, 자석을 이용한 Kalman filter 위치인식 등 각종 알고리즘에 관련된 코드, 화면 표시에 관련된 코드가 작성되어 있습니다. 아직 개발이 진행중인 코드이지만 자율주행에 관련된 작업을 하시는 분들께는 참고가 될 것으로 믿고 올립니다. 제가 이제까지 올린 코드들은 대부분 단편적인 코드들로 프로젝트에 관련된 알고리즘을 패스트 프로토타이핑 하는 것들이었으나 지금.. 더보기