MoveIt2는 ROS2 버전에 따라 설치 및 빌드 과정이 다르기 때문에 반드시 ROS2 버전을 확인해야 한다. 예를 들어, ROS2 Humble을 사용한다면 moveit2_tutorials
의 humble
브랜치를 클론해야 한다. 버전에 맞지 않는 문서를 그대로 따라 하면 빌드 에러나 패키지 충돌이 발생할 수 있다. 게다가 맞는 버전의 document를 따라하더라도 문제가 발생하기 때문에 아래 글을 꼭 참고하기 바란다.
나는 ros2 humble 버전을 설치하였다. OS 환경은 Ubuntu 22.04 (LTS)이다.
아래는 ros2 humble에 대한 MoveIt2 documentation링크이다.
https://moveit.picknik.ai/humble/index.html
ros2가 이미 잘 설치된 것을 가정하고 진행할 것이다.
처음에 소싱하는 것을 잊지 말자.
$ source /opt/ros/humble/setup.bash
rosdep을 설치하자
$ sudo apt install python3-rosdep
최신 패키지로 업데이트
$ sudo rosdep init
$ rosdep update
$ sudo apt update
$ sudo apt dist-upgrade
colcon 설치
$ sudo apt install python3-colcon-common-extensions
$ sudo apt install python3-colcon-mixin
$ colcon mixin add default
$ https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml
$ colcon mixin update default
vcstool 설치
$ sudo apt install python3-vcstool
Colcon workspace 만들고 이동, humble 브랜치로 클론할 것
$ mkdir -p ~/ws_moveit2/src
$ cd ~/ws_moveit2/src
$ git clone --branch humble https://github.com/ros-planning/moveit2_tutorials
Moveit 소스코드 다운
$ vcs import --recursive < moveit2_tutorials/moveit2_tutorials.repos
이미 설치된 moveit binaries 지우기, 의존성 자동 설치
$ sudo apt remove ros-$ROS_DISTRO-moveit*
$ sudo apt update && rosdep install -r --from-paths . --ignore-src --rosdistro $ROS_DISTRO -y
Colon workspace configure 주의! colcon build 에서 executor sequential 꼭 넣어야됨. 이 부분에서 executor sequential을 넣지 않는 경우 에러가 난다. ROS2 패키지는 패키지들 간 빌드 순서 의존성이 매우 강하기 때문에 병렬 빌드시에 문제가 터질 수밖에 없다. 따라서 sequential하게 빌드하는 옵션을 꼭 넣어주어야한다.
다시 한 번 강조하지만 반드시!! 넣어야한다.
std err 경고가 나오는 것은 무시해도 좋다.
빌드가 20분 정도 걸릴 것이다. 나중에 커스텀 패키지를 만드는 경우에는 --packages-select 옵션으로 해당 패키지만 빌드하여 시간을 꼭 아끼자.
$ cd ~/ws_moveit2
$ colcon build --mixin release --executor sequential
환경설정 적용하기
$ source ~/ws_moveit2/install/setup.bash
튜토리얼 실행하면 판다 로봇이 잘 나온다.
$ ros2 launch moveit2_tutorials demo.launch.py rviz_config:=panda_moveit_config_demo_empty.rviz