이전 글에서 real UR3e 모델에 대해서 ROS2 Moveit2를 이용하여
Path Planning까지 수행해보았는데요,
이번에는 ROS2 humble에서 Moveit2 를 이용하여
real UR3e로 Pick and place를 수행해보겠습니다.
저는 Ubuntu 22.04 - ROS2 humble - UR3e 를 사용하였는데요,
실제로 버전을 크게 손댄 부분은 없어서 ROS2 모델이면 다 적용될 것이라 생각하고,
UR 모델의 경우 모델 명만 수정해주면 작동될 것이라 생각합니다.
먼저 제가 작성한 Github repository 를 다음과 같이 내려받습니다.
저는 cpp 기반의 MoveGroupInterface 방식을 사용했습니다.
Github repository 의 readme에도 작동 방법이 설명되어있습니다.
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
'Setup & Example > ROS2 + 예제' 카테고리의 다른 글
ROS2 MoveIt2 에서 UR3e + Intel RealSense Pick and Place 예제 수행 (3) | 2024.01.27 |
---|---|
ROS2 UR3e + Intel RealSense 임시 결합 하기 (1) | 2024.01.24 |
ROS2 humble에서 UR3e 작동 및 MoveIt2 Path Planning (1) | 2024.01.18 |
ROS2 humble에서 OpenManipulator-X Pick and Place + yolov8 으로 시작 명령 주기 (0) | 2024.01.05 |
ROS2 humble에서 OpenManipulator-X 환경 구성 및 조작 (3) | 2024.01.05 |