ROS란 Robot Operating System 으로 로봇 application 개발을 위한 툴, 소프트웨어입니다. 현재 ROS2가 나와있지만 많은 오픈소스가 ROS1로 되어있고 저도 학습용으로 ROS1을 설치해서 대체 이게 어떤 툴인지 알아보려고 합니다.
ROS 설치
현재 저는 Window10, wsl2 를 사용하고 있습니다. 위 링크 그대로 설치했을때 잘 수행되네요.
ROS Terms
ROS을 처음 접하면 생소한 용어들을 접하게 되는데 각각의 용어들이 어떤 의미를 갖는지 알아야 학습을 좀 더 수월하게 할 수 있을 것 같습니다.
Node: sub-part(excutable) of robotics application that uses ROS to communicatie with other nodes.
Message: ROS data type used when subscribing or publishing to topic.
Topic: Nodes can publish messages to a topic.
일단 정의만 보면 하나도 와닿지 않습니다. 일단 ROS를 설치하면 간단한 튜토리얼을 돌릴 수 있는데 귀여운 터틀심이라는 녀석입니다. 터틀봇도 이녀석이 원조이지 않을까 합니다.
rosrun turtlesim turtlesim_node
위의 커맨드로 터틀심을 실행하면 위와 같은 귀여운 거북이가 나옵니다. 처음에는 전혀 움직이지도 않고 뭔가 잘못되었나 싶지만 커맨드를 받을 노드가 없기 때문입니다. 현재 실행된건 turtlesim_node로 거북이 로봇(?)을 담당하는 노드입니다.
rosrun turtlesim turtle_teleop_key
위 커맨드를 수행하고 rosnode list를 통해 어떤 노드가 실행되고 있는지 확인하면 위 그림과 같이 출력됩니다. rosout은 항상 켜져있는 기본 노드로 노드들의 디버깅 정보를 가지고있다고 합니다. teleop_turtle은 키보드 값을 받아오는 노드입니다. turtle_teleop_key는 키 입력을 발행(publishing)하고 turtlesim은 입력 키를 전달받기 위해 topic을 구독(subscribing)합니다.
rosrun rqt_graph rqt_graph
그리고 노드들간의 통신이 어떻게 이루어지고 있는지 위와 같이 확인할 수 있습니다. 즉 토픽의 메시지를 생성(?), 변경해서 거북이를 움직이게 할 수 있습니다.
어제 받은 오픈소스를 수행시키는데 input file의 확장자가 .bag 였습니다.
ROS bag: The msg are stored/recorded time by time within bag files.
ROS bag는 robot이 움직이거나 동작할 때 통신에 사용된 msg를 저장한 데이터입니다. 예제 프로그램을 돌려보니 control에 관한 msg 뿐만 아니라 bag엔 그때 그때 수집된 센서 데이터도 저장되는 것 같습니다. 즉 매시간마다의 데이터가 저장되어있기 때문에 '녹화' 파일이라고 할 수 있고 이후에 bag를 다시 '재생'시킬 수 있습니다.
저는 lidar 센서도 없고 pcl 파일을 따로 받지도 않았지만 bag 파일을 읽어 위와 같이 재생하는것이 가능합니다.
rosbag의 정보를볼 수 있는데 bag에 저장된 message 개수, 데이터 크기, 타입등을 볼 수 있습니다. 해당 데이터는 위의 lidar data를 저장하고 있습니다.
아래는 다른 예제 bag파일인데 lidar 데이터가 아닌 이미지 데이터가 재생되는 파일입니다. 위 예제보단 뭔가 더 많아서 복잡한데 각각이 무엇을 의미하는지는 차차 알아가도록 하겠습니다.
'SLAM' 카테고리의 다른 글
IMU Preintergration on Maniforld for Efficient Visual-Inertial Maximum-a-Posteriori Estimation (0) | 2022.07.23 |
---|---|
SLAM Front-end with example code (0) | 2022.03.23 |
iSAM2: Incremental Smoothing and Mapping Using the Bayes Tree (0) | 2022.02.28 |
iSAM: incremental Smoothing and Mapping (0) | 2022.02.26 |
PTAM: Parallel Tracking and Mapping for Small AR Workspaces (0) | 2022.01.23 |
댓글