ROS 스터디 #8: 모바일 로봇

2021년 01월 27일 18:00
ZOOM 화상회의

모바일 로봇(mobile robot/mobot)

모바일 로봇은 주변을 움직일 수 있는 기능1)을 가진 로봇으로 다리를 가진 로봇과 바퀴를 가진 로봇, 트랙을 가진 로봇으로 분류한다. ROS에서 지원하는 로봇은 관련 위키에서 찾아볼 수 있다. 이 문서는 그 중 ROS2 공식 플랫폼 터틀봇2)에 대해 서술한다.

  • 터틀봇1: iRobot 사의 연구용 로봇 크리에이트(create)를 베이스로 2010년 개발되었다.3)
  • 터틀봇2: 유진로봇 사의 연구용 로봇 거북이(Kobuki)를 베이스로 2012년 개발되었다.
  • 터틀봇3: 기존 터틀봇 1, 2에서 사용자의 요구사항을 적용했으며 로보티즈 사의 스마트 액추에이터 다이나믹셀을 구동용으로 채용했다. 터틀봇3의 목표는 기능 및 품질을 유지하면서 플랫폼의 크기를 대폭 줄이고 가격을 낮추는 동시에 로봇 구성품을 사용자의 목적에 맞추어 변경 또는 확장하는데 있다. 터틀봇3는 기존 pc 대비 저가이면서 크기가 작고 임베디드에 적합하게 설계된 SBC4), 거리 센서 및 3D 프린팅 최신 기술을 적용해 더욱 향상된 시리즈이다.

터틀봇3의 공식 모델은 터틀봇 버거, 와플, 와플 파이 3종류가 있다. 아래 사진은 터틀봇3 버거이다.5)

turtlebot_buger.jpg

터틀봇3의 기본 구성품으로는 구동용 액추에이터, ROS를 구동하기 위한 SBC, SLAM 및 내비게이션을 위한 센서, 변형 가능한 기구부, 중간 제어기로 사용되는 임베디드 보드인 OpenCR, 타이어 및 캐터필러를 모두 이용 가능한 스프토킷 휠, 11.1V의 리튬폴리 배터리를 이용하고 있다.

와플은 기구부가 물건을 적재하기 좋고 고토크의 액추에이터가 이용되며 Intel 프로세서 기반의 SBC, 360도 거리 센서인 LDS6), 3차원 인식을 위한 Depth Camera가 이용되었다.

와플 파이는 와플과 거의 같지만 SBC는 버거와 같은 라즈베리 파이를 채용했고 라즈베리파이 전용 카메라를 사용해 저렴한 가격을 실현했다.

터틀봇3 버거의 오픈 소스 하드웨어

터틀봇3의 소프트웨어는 제어기로 사용되는 OpenCR 보드의 펌웨어(FW)7)와 4가지의 ROS 패키지로 이루어져 있다.

  • turtlebot3_core: 다이나믹셀8)의 엔코더 값을 가져와 로봇의 위치를 추정하거나 속도를 제어한다.또한 3축 가속도, 3축 자이로 센서9)로부터 가속도와 각가속도를 얻어 로봇의 방향을 추정하기도 하고 배터리 상태를 측정하여 토픽으로 전송하기도 한다.
  • turtlebot3: 터틀봇3의 로봇 모델, SLAM 및 내비게이션 패키지, 원격제어 패키지, 구동관련 bringup 패키지가 있다.

터틀봇3 공식 위키 참조

sudo apt install ros-melodic-joy ros-melodic-teleop-twist-joy ros-melodic-teleop-twist-keyboard \
ros-melodic-laser-proc ros-melodic-rgbd-launch ros-melodic-depthimage-to-laserscan ros-melodic-rosserial-arduino ros-melodic-rosserial-python \
ros-melodic-rosserial-server ros-melodic-rosserial-client ros-melodic-rosserial-msgs ros-melodic-amcl \
ros-melodic-map-server ros-melodic-move-base ros-melodic-urdf ros-melodic-xacro ros-melodic-compressed-image-transport \
ros-melodic-rqt-image-view ros-melodic-gmapping ros-melodic-navigation

cd ~/catkin_ws/src/
git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
cd ~/catkin_ws && catkin_make

로봇을 이동시켜보면서 Odometry와 tf를 확인해 보자. 참고 영상

roslaunch turtlebot3_fake turtlebot3_fake.launch

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

시작하기 전, ROS 명령어를 실행하려는 모든 터미널에서 아래 한 줄을 실행해준다.

export TURTLEBOT3_MODEL=burger

roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch

gazebo에 터틀봇3의 3차원 모습이 불러온 것을 확인할 수 있다. 이는 로봇만을 불러온 것으로 실제 시뮬레이션을 하기 위해서는 사용자가 환경을 지정하든지 gazebo에서 제공하는 환경 모델을 불러올 수 있다.10) 현재 구동 중인 gazebo를 종료하고

roslaunch turtlebot3_gazebo turtlebot3_world.launch

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

여기까지는 Rviz를 이용한 시뮬레이션과 동일하지만 gazebo는 몸테의 충돌를 확인할 수 있고, 위치를 계측하고, IMU 센서, 카메라 센서를 가상으로 사용할 수 있게 설정되어있다.

roslaunch turtlebot3_gazebo turtlebot3_simulation.launch  # 터틀봇이 랜덤하게 이동하면서 장애물을 감지하거나 벽에 부딪치기 전에 회피한다.

roslaunch turtlebot3_gazebo turtlebot3_gazebo_rviz.launch

roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping

rosrun map_server map_saver -f ~/map

SLAM의 결과물로 지도를 얻을 수 있다.

내비게이션으로 넘어가기 전에, 앞서 실행한 모든 프로그램을 종료한다. 그 뒤 패키지를 실행시키면 이전에 제작해둔 지도상에 로봇이 나타난다.

roslaunch turtlebot3_gazebo turtlebot3_world.launch

roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml

rosrun rviz rviz -d 'rospack find turtlebot3_navigation'/rviz/turtlebot3_nav.rviz

Rviz 상에서 로봇의 초기 위치를 지정한 후 목적지를 설정하면 목적지로 이동하는 모습을 확인할 수 있다.


1)
SLAM과 내비게이션 등이 활용된다
2)
오픈소스이고 보급형으로 개발되었기 떄문에 실습에 용이
3)
2011년에 판매 시작
4)
Single Board Computer
5)
이 문서에서도 특별한 언급이 없다면 터틀봇 버거를 중심으로 설명
6)
Laser Distance Sensor
7)
터틀봇3의 핵심이라는 의미로 turtlebot3_core라는 별칭으로 사용
8)
터틀봇3의 구동용 모터
9)
OpenCR에 실장됨
10)
화면 상단 위의 insert를 클릭해 하위 파일을 선택하면 가능
  • activity/public/2020/ros/210127.txt
  • 마지막으로 수정됨: 3년 전
  • 저자 99dohyung