지금까지 많은 것들을 쌓아왔습니다.
Vision 없이 고정된 위치를 Pick and Place 해보았고,
로봇 팔을 Vision 을 기반으로 물체를 인식하고 집도록 하기 위하여
Camera Image 로 인식된 이미지로부터 Camera coordinate와 World coordinate 로 변환하는 방법을 공부했고,
이에 필요한 Input들을 얻기 위해서 아래와 같이
YOLO 를 기반으로 특정 물체의 pixel 좌표를 얻는 동시에,
Intel Realsense Camera를 이용하여 Depth와 Camera Intrinsic Matrix를 얻을 필요가 있었습니다.
또한, MoveIt2 를 이용하여 현재 카메라 link의 위치와 quaternion 을 얻을 필요가 있었습니다.
이제는 vision 을 기반으로 로봇팔이 해당 위치로 이동하고,
물체를 집어 옮기도록 해보겠습니다.
코드와 토픽 subscribing, publishing관련해서는
아직 리팩터링이 많이 필요하지만,
이를 위해 기록을 미루다가는 너무 가물가물해질 것 같아
얼른 초안을 작성해두고 보완하겠습니다.
최종 목표는 YOLO 가 아닌, NVlab의 CenterPose를 붙이는 것이기 때문에
일단은 Camera를 통해 들어온 정보를 기반으로 Pick and Place가 가능한 정도이며,
또한, Calibration이 정확하지 않기에 실제 작동 시 오차가 있는 것을 감안하여야 합니다.
지난 번 ROS2 YOLOv8 repository를 붙였던 상태에서
ur_camera_position.cpp 파일을 다음과 같이 수정하겠습니다.
예전에 camera position 과 quaternion을 얻어오는 코드에서
yolo topic을 구독해서 pick and place를 수행하도록 어거지로 작성을 해봤습니다.
CenterPose로 수행할 때는 좀 더 깔끔하게 subscribing과 publishing 가능하도록 수정을 해보겠습니다..
그리고 패키지를 다시 빌드 해주시기 바랍니다.
그리고 해당 첫번째 터미널에서 다음과 같이 realsense camera node를 활성화 시키겠습니다.
export COLCON_WS=~/workspace/ros_ur_driver
cd $COLCON_WS
colcon build
source install/setup.bash
ros2 launch realsense2_camera rs_launch.py depth_module.profile:=640x480x30 pointcloud.enable:=true
depth 와 color 해상도가 일치하지 않으면,
지난 번 글처럼 노란색 3d 박스가 다른 위치에 그려지는 문제가 발생하니 주의하시기 바랍니다.
두 번째 터미널에서 rviz 활성화 해주겠습니다.
export COLCON_WS=~/workspace/ros_ur_driver
cd $COLCON_WS
source install/setup.bash
ros2 launch ur_robot_driver ur_control.launch.py ur_type:=ur3e robot_ip:=192.168.1.101 launch_rviz:=false
세 번째 터미널에서 moveit2 활성화 해주겠습니다.
이 때, UR 터치패드에서 외부 제어 프로그램 실행시켜주시기 바랍니다.
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
4번째 터미널에서 YOLO 활성화 시켜주겠습니다.
export COLCON_WS=~/workspace/ros_ur_driver
cd $COLCON_WS
source install/setup.bash
ros2 launch yolov8_bringup yolov8_3d.launch.py input_image_topic:=/camera/camera/color/image_raw input_depth_topic:=/camera/camera/depth/image_rect_raw input_depth_info_topic:=/camera/camera/depth/camera_info target_frame:=camera_link device:=cpu model:=yolov8m.pt
이제 rviz에서 여러 display를 add 시켜주고
pick and place를 수행시켜보겠습니다.
export COLCON_WS=~/workspace/ros_ur_driver
cd $COLCON_WS
source install/setup.bash
ros2 launch ur_camera_position ur_camera_position_launch.py
시연 동영상입니다.
'Project > ROS2 + CV + Robot (2023.12~2024.02)' 카테고리의 다른 글
RealSense 기반 ROS2 에서 Real Time CenterPose 실행 (0) | 2024.02.20 |
---|---|
ROS2 기반 Isaac ROS CenterPose Example 수행하기 (0) | 2024.02.20 |
이미지로부터 실제 좌표를 얻기 위한 Camera Transformation 수행 (1) | 2024.02.13 |
ROS2 에서 Intel realsense 기반 YOLOv8 분석하고 결과 topic publishing 하기 (0) | 2024.02.06 |
ROS2 MoveIt2 이용하여 UR3e 의 Link Position 및 Quaternion 획득하기 (0) | 2024.01.31 |