며칠전 무인운전차량의 자율주행에 관한 글을 작성하였는데요. 여기서는 무인운전차량을 자율주행한 소프트웨어를 공개합니다. 이 소프트웨어에는 레이저 스캐너(Sick LMS151-10100), Fiber optic gyro(DSP3000), (주)엔티렉스에서 만든 구동부 제어기를 엑세스 하기위한 장치드라이버 코드와 주행에 관련된 A* 경로계획, 경로 추종, 자석을 이용한 Kalman filter 위치인식 등 각종 알고리즘에 관련된 코드, 화면 표시에 관련된 코드가 작성되어 있습니다. 아직 개발이 진행중인 코드이지만 자율주행에 관련된 작업을 하시는 분들께는 참고가 될 것으로 믿고 올립니다. 제가 이제까지 올린 코드들은 대부분 단편적인 코드들로 프로젝트에 관련된 알고리즘을 패스트 프로토타이핑 하는 것들이었으나 지금 올리는 소프트웨어는 개발 기간이 꽤 소요되었으며 하드웨어에서 디버깅도 많이 되었습니다. 하지만 버그는 항상 존재한다는...
(Visual studio C++ 2008로 작성되었고, Windows XP/7에서 테스트 되었습니다.)
먼저 소프트웨어를 컴파일하기 위한 모드는 두 가지가 있습니다. 하드웨어(차량) 없이 시뮬레이션으로 자율주행을 테스트 해 볼 수 있는 시뮬레이션 모드와 실제 차량에 연결하여 자율주행을 진행할 수 있는 모드입니다. 시뮬레이션 모드로 컴파일 하기위해서는 다음과 같이 "SIMULATION"을 definition 해주면 됩니다. 실제 차량에서 코드를 수행하기 위해서는 "SIMULATION"을 삭제하고 컴파일 하면 됩니다. 아마도 생기원에서 실험하고 있는 골프카트와 동일하게 개조된 플랫폼을 가지고 있는 분은 없기때문에 항상 시뮬레이션 모드로 컴파일 하여야 할 것 같습니다. 몇 달 후 (주)엔티렉스에서 이 골프카트를 디바이스마트에 등록하고 판다고 하는데, 정말 실현될지는 모르겠습니다.
컴파일 하고 실행하면 다음과 같이 3개의 탭이 보이고 Navigation 화면이 표시될 것입니다. Navigation 탭에서는 차량의 위치를 설정하고 목적지를 선택하여 차량을 자율주행 시킬 수 있습니다. 차량의 위치를 옮길 때는 마우스 왼버튼으로 차량을 누르고 원하는 위치로 옮겨 버튼을 놓으면 됩니다. 차량을 회전할 때는 차량을 선택하고 마우스의 스크롤을 굴리면 됩니다. 목적지는 화면의 흰색 박스를 마우스로 클릭하거나 오른쪽 리스트 박스에서 선택하면 됩니다. 목적지가 선택되면 차량의 위치로부터 목적지까지 붉은색 경로가 만들어지고 차량이 주행하면서 지나온 경로는 삭제 됩니다. 바닥에 표시된 어두운 녹색은 차량이 이동할 수 있는 경로들이고 붉은색과 푸른색 원들은 자석의 N극과 S극을 의미합니다.
두 번째 탭인 Navigation 3D 탭을 누르면 3D로 차량의 진행 사항을 표시합니다. 여기서는 마우스 왼버튼으로 클릭하여 사용자가 보는 시점을 조절할 수 있습니다. 차량의 위치 조정과 목적지 선택 등은 첫번째 탭에서만 가능하고 여기서는 단지 시각적으로 3D 화면을 보여준다는 것 말고는 없습니다.
세 번째 탭인 Vehicle Status 탭에서는 차량의 각종 센서 값과 차량의 구동 상태를 표시합니다. 화면 중앙에 붉은 글씨로 에러가 표시되어 있는데, 현재 시뮬레이션 모드라 실제 장치들이 연결되지 않아 표시되는 에러입니다. 에러가 표시되어도 시뮬레이션에는 지장이 없지만, 실제 차량에 연결된 경우에는 장치간 연결에 에러가 표시되지 않는지 확인하여야 합니다.
시뮬레이션으로 자율주행을 수행하는 동영상을 참조하시기 바랍니다.