2020 하계모각코 5회차

ROS(Robot Operating System) 공부(1)

https://www.ros.org/

국민대에서 주최하는 자율주행 경진대회에 참석하게 되어 나머지 두명의 팀원들과 같이 ROS를 공부하게 되었습니다.

ROS란, Robot Operating System의 약자로 로봇 응용 프로그램을 개발할 때 필요한 다양한 기능들(하드웨어 추상화, 하위 디바이스 제어 등)을 구현하고 개발 환경에 필요한 여러 라이브러리를 제공하는 오픈 소스 기반의 메타 OS입니다.

메타 OS는 우리가 알고 있는 전형적인 OS(윈도우, 리눅스, 맥)와는 조금 다른형태를 지니는 OS인데, 메타 OS는 일반적인 OS 위에서 동작하는 프레임워크입니다.

ROS는 오픈 소스를 기반으로 세계 각지에서 다양한 연구를 진행하고 있으며 다양한 질문 및 토론이 진행되는 커뮤니티가 활발하게 돌아가며 지속적으로 발전하고 있습니다.

ROS는 다양한 언어들로 구성이 되어있는데, 대표적으로 c++와 python으로 구성되어 있습니다.

이전에 ROS를 다뤄본 적이 없어 이에 해당되는 지식을 공부하기 위해 먼저 도서관에서 책을 빌려다 공부를 시작하였습니다.

복습

자율주행 경진대회 예선을 통과하기 위해서는 주최 측에서 제시하는 3가지의 과제를 팀원들과 같이 풀고 제출하여 통과를 받아야 하는데, 문제 중에 Python을 활용한 ROS 코드를 해석하는 문제가 있어 문제 해결을 위해 책과 인터넷을 활용하여 공부하였습니다.

문제와 답은 블로그에서 다룰 수 없어 문제 해결을 위해 참고하였던 사이트들을 정리하여 보았습니다.

http://wiki.ros.org/rospy/Overview/Initialization%20and%20Shutdown

ROS를 쉽게 공부할 수 있도록 위키사이트에 잘 정리되어 있어 공부하기가 비교적 수월하였습니다.

위 사이트에서 rospy.init_node(), rospy.on_shutdown() 함수의 기능을 이해하였습니다.

https://changun516.tistory.com/26

http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28python%29

https://m.blog.naver.com/PostView.nhn?blogId=passionvirus&logNo=80130186966&proxyReferer=https%3A%2F%2Fwww.google.com%2F

ROS의 기능 중에 가장 새로웠던 것이 바로 publisher 와 subscriber 인데 각각 이름 그대로 메시지를 송출하는 발행자와 발행된 메시지를 수신하는 구독자 기능이었습니다.

ROS는 최소 단위의 실행 가능한 프로세스를 가리키는 노드들로 구성되어 있고 이 노드들이 모여 패키지를 이룹니다. 각각의 노드와 노드는 메시지를 통해 노드 간의 데이터를 주고 받을 수 있습니다.

특이하게 노드 간의 통신이 일방적으로 하느냐 혹은 양방 간에 하느냐에 따라 이름이 바뀝니다. 한 노드에서 다른 노드로 일방적으로 정보를 전달하는 것을 토픽이라 하고, 두 노드 사이 양방 간에 메시지를 주고 받는 것은 서비스라고 하고 서비스와 비슷하게 양방 간에 메시지를 주고 받지만 형태가 조금 다른 액션이라는 것도 있습니다. 각각의 노드가 위에서 말한 publisher가 될 수도, subscriber가 될 수도 있게 되는 것입니다.

ROS가 가진 ROS 만의 명령어들도 있는데 다음 모각코 시간에 한 번 알아보겠습니다.

태그:

업데이트:

댓글남기기