Setup & Example/ROS2 + 예제

ROS2 MoveIt2 이용하여 UR3e Pick and Place 수행하기

코방코 2024. 1. 19. 22:59
728x90

 
 
이전 글에서 real UR3e 모델에 대해서 ROS2 Moveit2를 이용하여

Path Planning까지 수행해보았는데요,

 

ROS2 humble에서 UR3e 작동 및 MoveIt2 Path Planning

연구원에서 정말 좋은 경험을 많이 하는 것 같습니다. 언제 이렇게 3000만원짜리 로봇 팔을 제 맘대로 가지고 놀아볼 수 있을까요. 그것도 운이 좋게 소프트웨어를 거의 처음부터 세팅을 할 수 있

cobang.tistory.com

 
이번에는 ROS2 humble에서 Moveit2 를 이용하여

real UR3e로 Pick and place를 수행해보겠습니다.



저는 Ubuntu 22.04 - ROS2 humble - UR3e 를 사용하였는데요,

실제로 버전을 크게 손댄 부분은 없어서 ROS2 모델이면 다 적용될 것이라 생각하고,

UR 모델의 경우 모델 명만 수정해주면 작동될 것이라 생각합니다.


 
먼저 제가 작성한 Github repository 를 다음과 같이 내려받습니다.

저는 cpp 기반의 MoveGroupInterface 방식을 사용했습니다.

Github repository 의 readme에도 작동 방법이 설명되어있습니다.

 

GitHub - cobang0111/ur_pick_and_place_moveit: ROS2 Universal Robot - Pick and Place Example Package

ROS2 Universal Robot - Pick and Place Example Package - GitHub - cobang0111/ur_pick_and_place_moveit: ROS2 Universal Robot - Pick and Place Example Package

github.com

 

export COLCON_WS=~/workspace/ros_ur_driver

cd $COLCON_WS

cd src/Universal_Robots_ROS2_Driver 

git clone <https://github.com/cobang0111/ur_pick_and_place_moveit.git>

cd ../..

 
파일을 업데이트했으니 다시 빌드하겠습니다.

로봇 모델이 다르시다면,

빌드 이전에 launch/pick_and_place_moveit_launch.py 내의 모델명을 수정하셔야합니다.

colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release

source install/setup.bash

 
이제 rviz와 moveit을 활성화하겠습니다.

터미널 1개를 추가로 열고 다음 명령을 입력합니다.

IP와 로봇 모델이 다르면 명령을 수정하셔야합니다.

export COLCON_WS=~/workspace/ros_ur_driver

cd $COLCON_WS

source install/setup.bash

ros2 launch ur_calibration calibration_correction.launch.py robot_ip:=192.168.1.101 target_filename:="${HOME}/my_robot_calibration.yaml"

ros2 launch ur_robot_driver ur_control.launch.py ur_type:=ur3e robot_ip:=192.168.1.101 launch_rviz:=false

 

이제 UR 터치패드에서 external control 프로그램을 활성화합니다.

그리고 터미널 1개를 더 추가로 열고 다음 명령을 입력합니다.

마찬가지로 IP와 로봇 모델이 다르면 명령을 수정하셔야합니다.

export COLCON_WS=~/workspace/ros_ur_driver

cd $COLCON_WS

source install/setup.bash

ros2 launch ur_moveit_config ur_moveit.launch.py ur_type:=ur3e launch_rviz:=true robot_ip:=192.168.1.101 reverse_ip:=192.168.1.102

 
그리고 가장 첫 터미널에 다음 명령을 입력합니다.

로봇이 움직이니 주의하시기 바랍니다.

비정상적인 경로로 움직일 경우 즉시 비상 정지 버튼을 누르시기 바랍니다.

ros2 launch ur_pick_and_place_moveit ur_pick_and_place_moveit_launch.py

 


작동 영상입니다.

그리퍼는 아직 작동을 안시켰습니다,

 
아래 코드가 Pick and Place를 수행하도록 만든 CPP 코드인데요,

이를 적절하게 원하시는 위치로 수정하시고, Grasping 동작을 지정해서 사용하면 됩니다.

주석을 상세하게 달았으니 이해하기 편하실 것이라 생각합니다.

Constraint 도 적절하게 추가하시기 바랍니다.
 

다만 X, Y 좌표가 UR 터치패드에 나타나는 좌표와 부호가 반대입니다.

저만 그런걸 수도 있습니다. 잘 확인하시고 하시기 바랍니다.

또한, quaternion 회전 좌표가 사용되는데,

이를 Roll, Pitch, Yaw에 대한 회전을 이용하여 계산되도록 해두었습니다.

참고해서 잘 수정해서 사용하시길 바랍니다.
 
src/ur_pick_and_place_moveit.cpp

 

 


 
 

728x90
반응형