제가 강조해서 자꾸 좌표계가 tf가 중요하다고 말하고 있는데, 그 이유를 예시와 함께 좀 더 자세히 살펴보고자 합니다.
# 예시 종속성 설치
sudo apt install ros-noetic-slam-gmapping
# Terminal 1
roslaunch smb_gazebo smb_gazebo.launch world:=big_map_summer_school
# Terminal 2
roslaunch py_tf2_tutorial slam_gmapping.launch
# Terminal 3
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
# [option] rviz (이전 예시에서 rviz를 추가하였다면 넘어가셔도 좋습니다.)
rviz
로봇이 움직이면서 자신의 위치를 파악함과 동시에 지도를 생성하는 예시입니다.
퀴즈: 만약 tf tree가 온전히 연결되어 있지 않다면 어떤 일이 발생할까요?
센서 입장에서도 tf는 매우 중요합니다.
같은 데이터라도 그 기준이 어딘지에 따라서 전혀 다른 의미를 가질 수 있기 때문입니다.
예를 들어, 라이다의 tf를 180도 반대로 설정해버리면 후방에 있는 장애물을 전방 장애물로 잘못 인식할 수 있습니다.
더불어, 로봇 팔과 같은 관절로봇에게도 tf는 무척 중요한 의미를 갖습니다. 각 joint의 상태를 통해 tf를 계산하고 이를 통해 최종적으로 로봇 팔의 끝점이 어디에 위치하는지 계산할 수 있습니다.
이번 시간에는 조금 쉬어가는 느낌으로 유용한 ROS Package를 소개해드리고자 합니다.
MoveIt은 다관절 로봇의 모션 제어를 위한 프레임워크입니다. 이름만 들어서는 감이 잘 오지 않지요? 간단한 예시를 통해 살펴봅시다.
MoveIt은 관절 로봇의 기본 구성과 Mass Matrix, 각 모터의 제한과 원하는 움직임을 지정해주면 이에 따라 각 관절의 위치, 속도, 가속도 경로를 최적화(Planning) 해주는 프레임워크이며, 그 밖에도, 물체 인지, 장애물 회피, End Effector에 가해지는 힘까지 고려 가능한 거대한 오픈소스 프로젝트입니다.
MoveIt Motion Planning Framework
이번 예제로 저와 함께 MoveIt의 가장 기본적인 데모를 함께 실행해보겠습니다. 예시에 사용되는 로봇은 FRANKA EMIKA의 PANDA라는 로봇입니다. FRANKA EMIKA - PANDA
아래 커멘드 라인을 함께 따라와주세요.
sudo apt install ros-noetic-moveit-setup-assistant
sudo apt install ros-noetic-moveit
sudo apt install ros-noetic-gazebo-ros-control joint-state-publisher
sudo apt install ros-noetic-controller-manager
sudo apt install ros-noetic-ros-controllers
sudo apt install ros-noetic-ros-control
sudo apt install ros-noetic-robot-state-publisher
cd ~/catkin_ws
git clone https://github.com/ros-planning/moveit_tutorials.git -b master
git clone https://github.com/ros-planning/panda_moveit_config.git -b noetic-devel
cd ~/catkin_ws/src
rosdep install -y --from-paths . --ignore-src --rosdistro noetic
cd ~/catkin_ws
catkin build
source devel/setup.bash
roslaunch panda_moveit_config demo_gazebo.launch
여기까지 잘 따라오셨나요? 그렇다면 강의자의 설명에 따라 RViz Motion Planning Plugin을 사용해봅니다.
참고자료