知之者 不如好之者, 好之者 不如樂之者

기계처럼 살지 말고, 즐기는 인간이 되자

Project/ROS2 + CV + Robot (2023.12~2024.02)

ROS2 humble에서 MoveIt2 설치와 기본 튜토리얼

코방코 2023. 12. 27. 16:14
728x90
 

Getting Started — MoveIt Documentation: Humble documentation

Install ROS 2 Humble. It is easy to miss steps when going through the ROS 2 installation tutorial. If you run into errors in the next few steps, a good place to start is to go back and make sure you have installed ROS 2 correctly. One that users commonly f

moveit.picknik.ai

이 자료 기반으로 해야됩니다. 반드시 반드시

그러지 않으면 엄청나게 헤메게 됩니다. (접니다..)

ROS2 humble과 colcon이 설치되어 있을 때 진행이 가능합니다.

이전 글을 참조하시기 바랍니다.

 

ubuntu 22.04에 ROS 2 humble 설치 + colcon + Gazebo

ROS 2 humble 설치 이미 너무 좋은 레퍼런스가 있어 첨부하고 후처리 과정만 추가적으로 서술하겠습니다. ubuntu 22.04에 ROS 2 설치 1. 리눅스의 로케일을 UTF-8로 설정해 줍니다. 먼저 apt의 업데이트 및

cobang.tistory.com

 

그럼 moveit2 빌드를 시작하겠습니다.

# 이미 bashrc에 추가되어 있겠지만
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 mixin 빌드
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

 

colcon 에 -mixin 옵션이 없다고 에러 발생 하면 아래 과정 수행

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

# ros2 humble 용 tutorial 설치
mkdir -p ~/ws_moveit2/src

cd ~/ws_moveit2/src

git clone -b humble https://github.com/ros-planning/moveit2_tutorials

vcs import < moveit2_tutorials/moveit2_tutorials.repos

 

아래 과정은 꽤 시간이 걸립니다.

RAM 이 16GB 이하라면, colcon build 시 아래 명령으로 수행하기 바랍니다.

colcon build -parallel-workers 1 --mixin release

# colcon workspace 빌드
sudo apt update && rosdep install -r --from-paths . --ignore-src --rosdistro $ROS_DISTRO -y

cd ~/ws_moveit2

colcon build --mixin release

저는 humble 버전 빌드할 때는 별다른 오류가 발생하지 않았습니다.

 

# 워크스페이스 추가
source ~/ws_moveit2/install/setup.bash

# 영구적으로 bashrc에 추가
echo 'source ~/ws_moveit2/install/setup.bash' >> ~/.bashrc

source ~/.bashrc

 

default ROS 2 middleware가 RMW에서 Cyclone DDS로 바뀌었으므로 해당 방식으로 바꿔줘야 합니다.

sudo apt install ros-humble-rmw-cyclonedds-cpp

# 영구적으로 bashrc에 추가
echo 'export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp' >> ~/.bashrc

source ~/.bashrc

 

이제 튜토리얼을 실행합니다.

ros2 launch moveit2_tutorials [demo.launch.py](http://demo.launch.py/) rviz_config:=panda_moveit_config_demo_empty.rviz

 

정말 감격스러운 창이 떠오릅니다.

 


Panda 로봇 불러오기

 

좌측 하단의 Add 버튼을 클릭하면 다음 창이 뜨게됩니다.

 

MotionPlanning 을 선택하고 Ok를 누릅니다.

 

 

이제 화면에 로봇 팔이 나타납니다.

로봇 팔 이름은 Panda 입니다.

 


Panda 조작 시각화

Display tab을 보면 panda_link0 가 고정프레임으로 설정되어 있는 것을 확인할 수 있습니다.

 

MotionPlanning 좌측의 화살표 버튼을 누르면 세부 사항을 확인할 수 있습니다.

  • Robot Description 필드가 robot_description 으로 설정되도록 합니다.
  • Planning Scene Topic 필드가 /monitored_planning_scene 으로 설정되도록 합니다.
  • Trajectory Topic 하위 Planned Path 필드가 /display_planned_path 로 설정되도록 합니다.

 

여기 까지는 이미 설정되어 있습니다.

이제 Planning Request에서 Planning Group을 panda_arm 으로 설정합니다.

 

그럼 다음과 같이 arm 에 대해서 여러 화살표가 나타납니다.

 

네 가지 다른 overlapping visualizations가 있습니다

  1. /monitored_planning_scene planning environment에서 로봇의 구성 (기본적으로 활성화됨).
  2. 로봇의 계획된 경로 (기본적으로 활성화됨).
  3. 녹색: 모션 계획을 위한 시작 상태 (기본적으로 비활성화됨).
  4. 주황색: 모션 계획을 위한 목표 상태 (기본적으로 활성화됨).

이 시각화들의 표시 상태는 체크박스를 사용하여 켜고 끌 수 있습니다:

체크 박스에 따라 로봇 주변의 시각화 형태가 달라지는 것을 확인하실 수 있습니다.

 


Panda 조작

 

다음 단계에서는 장면 로봇, 시작 상태, 목표 상태만 보려고 합니다:

  • Planned Path 트리 메뉴에서 'Show Robot Visual' 체크박스를 선택합니다.
  • Scene Robot 트리 메뉴에서 'Show Robot Visual' 체크박스를 해제합니다.
  • Planning Request 트리 메뉴에서 'Query Goal State' 및 'Query Start State' 체크박스를 선택합니다.

녹색 마커 팔은 "시작 상태"를 설정하는 데 사용됩니다.

주황색 마커 팔은 "목표 상태"를 설정하는 데 사용됩니다.

화살표와 원을 이용해 팔의 위치를 이동하고 회전시킬 수 있습니다.

 


충돌 옵션 확인

 

이 섹션에서는 계획된 경로와 목표 상태를 숨깁니다:

  • Planned Path 메뉴에서 'Show Robot Visual' 체크 박스를 해제합니다.
  • Planning Request 메뉴에서 'Query Goal State' 체크 박스를 해제합니다.

이제 시작 상태(녹색 팔)만 보여야 합니다.

Planning 탭 아래 'Collision-Aware IK' 체크 박스를 해제합니다.

이렇게 하면, 충돌하는 링크가 빨간색으로 변합니다.

'Collision-Aware IK' 체크박스를 선택하고,

두 링크가 서로 충돌하도록 이동하면 충돌 없는 해결책을 찾으려고 시도합니다.

체크박스가 선택되지 않은 경우, 충돌이 발생하도록 허용합니다.

충돌하는 링크는 체크 박스의 상태에 관계없이 항상 빨간색으로 시각화됩니다.

 


도달 가능한 작업 공간 밖으로 이동

 

닿을 수 있는 작업 공간 밖으로 이동하려고 할 때 화살표를 제외하고 로봇은 더 이상 따라오지 않습니다.

다음 연습으로 넘어가기 전에,

  • Planned Path 트리 메뉴에서 'Show Robot Visual' 체크 박스를 선택합니다.
  • Planning Request 트리 메뉴에서 'Query Goal State' 체크 박스를 선택합니다.

 


Joint 이동

 

Joints 탭에서 각 조인트를 이동시킬 수 있습니다.

 


Panda로 Motion Planning 사용하기

 

이제 MoveIt RViz 플러그인에서 Panda로 Motion Planning을 할 수 있습니다.

  • 시작 상태를 원하는 위치로 이동합니다.
  • 목표 상태를 다른 원하는 위치로 이동합니다.
  • 두 상태가 로봇 자체와 충돌하지 않도록 확인합니다.
  • Planned Path 메뉴에서 'Show Trail' 체크 박스를 선택합니다.
  • Planning 탭에서 'Plan' 버튼과 execute를 눌러 시작 위치로부터 이동시킬 수 있습니다.

 

상단 Panel 메뉴에서 Trajectory Slider를 선택하여 시작점으로부터 목표 지점으로 이동하는 로봇의 잔상을 확인할 수 있습니다.

Cartesian Path를 사용하고, 사용하지 않음에 따라 경로의 차이를 확인할 수 있습니다.

 

초기에 속도와 가속도가 로봇 최대의 10% 로 제한되어 있는데 이 값을 옵션에서 변경할 수 있습니다.

 


수정한 rviz 파일 저장하기

 

상단 File 메뉴에서 Save Config를 선택하여 현재 수정한 rviz를 저장하고 불러올 수 있습니다.

Save Config As 로 저장하면 다른 이름으로 저장되어 해당 이름으로 불러올 수 있습니다.

만약 your_rviz_config.rviz 라고 저장했다면 다음과 같이 불러올 수 있습니다.

ros2 launch moveit2_tutorials demo.launch.py rviz_config:=your_rviz_config.rviz

 

다음 번엔 MoveIt2 와 Panda를 이용하여 물체를 집어 옮기는 예제를 수행해보겠습니다.

 

728x90
반응형