Mobile Robots & ROS

그동안 올렸던  mobile car/robot에 대한 내용을 정리하는 의미에서 이 글을 시작한다. Car 또는 wheeled robot의 움직이는 actuator와 움직이는 공간에서의 좌표와의 관계를 나타내는 kinematics는 로봇의 현재위치에서 새로운 위치로 움직이게 하기위해 자동차의 구동장치를 어떻게 조작해야 하는지에 대한 수학적 관계를 표현해 준다. 새로운 위치로 가는 방법은 다양한 방법이 있겠지만 최적의 path를 평가하는 알고리즘이 도입되어야 하고 주행 도중 우선 장애물을 피해야 하는 과정도 포함되어야 한다. 주행중 주변환경에 대한 map을 유추하고 그 map안에서 mobile robot 자신의 위치를 계산해 내는 과정이 필요하다. 그러므로 자율주행 로봇이나 자동차는 순간적으로 매우 많은 일을 수행할 수 있는 능력을 갖추어야 한다. 그러한 이유로, 자신의 위치를 정확히 알고 있다는 가정하에 주행로봇이 센서를 통해 map을 작성하는 일을 먼저 수행해 두면 훨씬 주행이 수월해 진다. 적어도 map 정보에 대해서는 높은 신뢰도를 얻을 수 있기 때문이다.

ROS(Robot Operating System)

ROS는 로봇관련 open source software platform으로, robot관련 자료를 검색하던중 알게되었지만, 로봇을 전공으로 하는 사람들은 이미 알고 있을것으로 생각된다. ROS는 로봇의 기능을 보다 쉽게 구현하기 위해 개발된 각종 tool이나 library를 포함하고 있으며, 이를 활용하면 수많은 기능을 개별적으로 구현할 필요가 없기 때문에 개발이 매우 용이해지는 장점이 있다. 인간에게는 매우 간단한 작업도 로봇으로 구현하려면 매우 많은것을 알로리즘이나 수학적으로 구현해야 한다는 점에서 보면 이러한 platform의 가치는 매우 높다고 할 수 있다. ROS에 대한 소개는 아래의 site에서 자세히 볼 수 있다. 필자도 여러 자료를 통해 사용법과 기능을 알아내는 과정이며, 매우 훌륭한 platform으로 생각한다. 기본적으로 file system, package, message, topic, node등의 개념을 사용하여 복잡한 로봇의 기능을 하나의 복잡한 알고리즘으로 구현하기 보다는 세분화된 기능들로 분할하여 구현하도록 하는 framework를 가지고 있다.

Robot Operating System

Navigation in ROS

ROS를 이용하여 구현해 본 주행 로봇의 navigation을 예로 들고자 한다. Robot은 turtlebot이라는 로봇으로 laser range finder를 장착한 로봇을 통해 앞서 소개한 내용을 모두 구현해 본 결과이다. SLAM은 아래 screenshot에서 볼수 있듯이 현재 위치의 particle cloud(녹색)에서 알 수 있듯이 particle filter를 사용하였고 로봇은 path planning을 통해 장애물(벽)을 피하면서 최적의 path를 따라서 목표지점으로 이동하는것을 알 수 있다. 목표지점의 pose(position & direction)는 화살표로 나타나 있다. 특히 첫번째 screenshot은 로봇이 계획한 path를 볼 수 있다. 사용한 simulator는 3D simulation이 구현되는 rviz이며 위 사이트에 자세히 소개되어 있다.

녹색선은 로봇이 찾아낸 최적 path를 나타내며, 로봇의 최적의 path를 따라 최종 목표지점까지 이동하는 것을 알 수 있다. 이 navigation 알고리즘은 매우 다양한 기능을 모두 합쳐 놓은 stack이며, global optimum path, local optimum path(장애물 선회), 주변 map을 얻기 위한 SLAM등의 다양한 기능을 수행한다. 단, 여기서 예로 보인 map은 2D map을 활용한 것이다.

Screenshot from 2017-04-27 22-33-49Screenshot from 2017-04-27 22-34-04Screenshot from 2017-04-27 22-34-15

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중