차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 | |||
activity:public:2020:ros:210127 [2021/07/31 23:03:55] – 99dohyung | activity:public:2020:ros:210127 [2021/07/31 23:05:19] (현재) – [1.4 개발환경] 99dohyung | ||
---|---|---|---|
줄 1: | 줄 1: | ||
+ | ======ROS 스터디 #8: 모바일 로봇====== | ||
+ | 2021년 01월 27일 18:00\\ | ||
+ | ZOOM 화상회의 | ||
+ | |||
+ | {{youtube> | ||
+ | |||
+ | =====1. 개념===== | ||
+ | **모바일 로봇(mobile robot/ | ||
+ | |||
+ | 모바일 로봇은 주변을 움직일 수 있는 기능((SLAM과 내비게이션 등이 활용된다))을 가진 로봇으로 다리를 가진 로봇과 바퀴를 가진 로봇, 트랙을 가진 로봇으로 분류한다. | ||
+ | ROS에서 지원하는 로봇은 [[https:// | ||
+ | |||
+ | ====1.1. 시리즈==== | ||
+ | * **터틀봇1**: | ||
+ | * **터틀봇2**: | ||
+ | * **터틀봇3**: | ||
+ | |||
+ | || | ||
+ | |||
+ | ====1.2. 하드웨어==== | ||
+ | |||
+ | 터틀봇3의 공식 모델은 터틀봇 버거, 와플, 와플 파이 3종류가 있다. | ||
+ | 아래 사진은 터틀봇3 버거이다.((이 문서에서도 특별한 언급이 없다면 터틀봇 버거를 중심으로 설명)) | ||
+ | |||
+ | {{https:// | ||
+ | |||
+ | 터틀봇3의 기본 구성품으로는 구동용 액추에이터, | ||
+ | |||
+ | 와플은 기구부가 물건을 적재하기 좋고 고토크의 액추에이터가 이용되며 Intel 프로세서 기반의 SBC, 360도 거리 센서인 LDS((Laser Distance Sensor)), 3차원 인식을 위한 Depth Camera가 이용되었다. | ||
+ | |||
+ | 와플 파이는 와플과 거의 같지만 SBC는 버거와 같은 라즈베리 파이를 채용했고 라즈베리파이 전용 카메라를 사용해 저렴한 가격을 실현했다. | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | || | ||
+ | ====1.3. 소프트웨어==== | ||
+ | |||
+ | 터틀봇3의 소프트웨어는 제어기로 사용되는 OpenCR 보드의 펌웨어(FW)((터틀봇3의 핵심이라는 의미로 turtlebot3_core라는 별칭으로 사용))와 4가지의 ROS 패키지로 이루어져 있다. | ||
+ | |||
+ | * **turtlebot3_core**: | ||
+ | |||
+ | * [[https:// | ||
+ | |||
+ | * [[https:// | ||
+ | |||
+ | * [[https:// | ||
+ | |||
+ | * [[https:// | ||
+ | |||
+ | || | ||
+ | ====1.4 개발환경==== | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | <sxh bash title: | ||
+ | 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 | ||
+ | </ | ||
+ | |||
+ | <sxh bash title: | ||
+ | cd ~/ | ||
+ | git clone https:// | ||
+ | git clone https:// | ||
+ | git clone https:// | ||
+ | cd ~/catkin_ws && catkin_make | ||
+ | </ | ||
+ | |||
+ | || | ||
+ | |||
+ | =====2. 시뮬레이션===== | ||
+ | |||
+ | ====2.1. Rviz==== | ||
+ | |||
+ | 로봇을 이동시켜보면서 Odometry와 tf를 확인해 보자. | ||
+ | [[http:// | ||
+ | |||
+ | <sxh bash title: | ||
+ | roslaunch turtlebot3_fake turtlebot3_fake.launch | ||
+ | </ | ||
+ | |||
+ | <sxh bash title: | ||
+ | roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch | ||
+ | </ | ||
+ | |||
+ | || | ||
+ | |||
+ | ====2.2. Gazebo==== | ||
+ | |||
+ | 시작하기 전, ROS 명령어를 실행하려는 **모든 터미널**에서 아래 한 줄을 실행해준다. | ||
+ | <sxh bash title: | ||
+ | export TURTLEBOT3_MODEL=burger | ||
+ | </ | ||
+ | |||
+ | |||
+ | <sxh bash title: | ||
+ | roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch | ||
+ | </ | ||
+ | |||
+ | gazebo에 터틀봇3의 3차원 모습이 불러온 것을 확인할 수 있다. | ||
+ | 이는 로봇만을 불러온 것으로 실제 시뮬레이션을 하기 위해서는 사용자가 환경을 지정하든지 gazebo에서 제공하는 환경 모델을 불러올 수 있다.((화면 상단 위의 insert를 클릭해 하위 파일을 선택하면 가능)) | ||
+ | 현재 구동 중인 gazebo를 종료하고 | ||
+ | |||
+ | <sxh bash title: | ||
+ | roslaunch turtlebot3_gazebo turtlebot3_world.launch | ||
+ | </ | ||
+ | |||
+ | <sxh bash title: | ||
+ | roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch | ||
+ | </ | ||
+ | |||
+ | 여기까지는 Rviz를 이용한 시뮬레이션과 동일하지만 gazebo는 몸테의 충돌를 확인할 수 있고, 위치를 계측하고, | ||
+ | |||
+ | <sxh bash title: | ||
+ | roslaunch turtlebot3_gazebo turtlebot3_simulation.launch | ||
+ | </ | ||
+ | |||
+ | <sxh bash title:RViz 실행> | ||
+ | roslaunch turtlebot3_gazebo turtlebot3_gazebo_rviz.launch | ||
+ | </ | ||
+ | |||
+ | <sxh bash title:SLAM 실행> | ||
+ | roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods: | ||
+ | </ | ||
+ | |||
+ | <sxh bash title: | ||
+ | rosrun map_server map_saver -f ~/map | ||
+ | </ | ||
+ | |||
+ | SLAM의 결과물로 지도를 얻을 수 있다. | ||
+ | |||
+ | 내비게이션으로 넘어가기 전에, 앞서 실행한 모든 프로그램을 종료한다. 그 뒤 패키지를 실행시키면 이전에 제작해둔 지도상에 로봇이 나타난다. | ||
+ | |||
+ | <sxh bash> | ||
+ | roslaunch turtlebot3_gazebo turtlebot3_world.launch | ||
+ | </ | ||
+ | |||
+ | <sxh bash title: | ||
+ | roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file: | ||
+ | </ | ||
+ | |||
+ | <sxh bash title:Rviz 실행 및 목적지 설정> | ||
+ | rosrun rviz rviz -d ' | ||
+ | </ | ||
+ | |||
+ | Rviz 상에서 로봇의 초기 위치를 지정한 후 목적지를 설정하면 목적지로 이동하는 모습을 확인할 수 있다. | ||
+ | |||
+ | |||