연구원에서 정말 좋은 경험을 많이 하는 것 같습니다.
언제 이렇게 3000만원짜리 로봇 팔을 제 맘대로 가지고 놀아볼 수 있을까요.
그것도 운이 좋게 소프트웨어를 거의 처음부터 세팅을 할 수 있었습니다.
그래서 더더욱 고생했지만, 많이 배운 듯 합니다.
이번 글은 전 세계적으로 가장 유명한 UR3e 협동 로봇팔을 ROS2를 이용해서 연동하고,
Moveit2 를 이용해서 path planning 까지 시연한 글입니다.
제가 다른 사이즈의 로봇까지 테스트해보진 않았지만, 적어도 URe series 에 대해서는
전부 다 적용될 것이라고 생각합니다.
저는 ROS2 humble 이 설치된 Ubuntu 22.04 PC에서 이를 수행하였고,
ROS2 humble 환경 설정 과정은 아래 글을 통해 수행하실 수 있습니다.
아래 두 글을 따라 moveit2 까지 설치하시길 바랍니다.
드라이버 설치 및 작업 환경 구성
UR 사의 ROS2 Driver Github입니다. 잔에러가 발생하면 Issue를 참조해서 해결하시기 바랍니다.
먼저 ROS2 humble에서 ur을 작동시키기 위한 환경을 구성합니다.
정확히 아래 과정을 따라오셔야 나중에 작동할 때 에러가 발생하지 않습니다.
여기서 잘못해서 왜 rviz path planning이 작동하지 않는지 몰라 하루를 날렸습니다…
sudo apt install python3-colcon-common-extensions python3-vcstool
export COLCON_WS=~/workspace/ros_ur_driver
mkdir -p $COLCON_WS/src
workspace 라는 폴더가 생성됩니다.
cd $COLCON_WS
git clone -b humble https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver.git src/Universal_Robots_ROS2_Driver
vcs import src --skip-existing --input src/Universal_Robots_ROS2_Driver/Universal_Robots_ROS2_Driver-not-released.${ROS_DISTRO}.repos
rosdep updat
rosdep install --ignore-src --from-paths src -y
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
만약 아래와 같은 에러가 발생하면
ImportError: cannot import name 'generate_py' from 'rosidl_generator_py' (/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_generator_py/init.py)
다음 라이브러리를 설치해줍니다.
pip install empy==3.3.4
pip install lark
빌드가 끝나면 다음 명령을 실행합니다.
source install/setup.bash
UR3e - PC Connection
이제 UR과 컴퓨터를 이더넷 케이블로 연결하겠습니다.
참조한 원본 글입니다.
여기도 삽질을 정말 많이했습니다..
한 과정도 빠짐 없이 아래 과정을 잘 따라오시길 바랍니다.
먼저 컴퓨터에 랜 케이블을 연결하고 컨트롤 박스 하단으로 랜 케이블을 연결합니다.
그리고, UR 컨트롤 패널을 통해 UR 컨트롤 박스를 켜고,
우측 상단의 ≡ 버튼을 클릭하고 설정 - 시스템 - 네트워크를 선택합니다.
다음은 고정 IP 설정을 수행합니다.
컨트롤 패널에서 다음과 같이 입력해줍니다.
PC 에서도 Wired Setting을 선택하여 다음과 같이 고정 IP를 추가해줍니다.
로봇과 PC의 IP가 다른 점 인지하시길 바랍니다.
ROS2 등을 이더넷 케이블 연결을 통해 접속하려면
URCap 설치가 필요합니다.
먼저 USB가 필요합니다.
비어있는 USB 또는 USB를 백업해두시고 시작하시기 바랍니다.
USB를 컴퓨터에 연결해 아래 링크에서 URCap 1.0.5 버전 (최신 버전) .urcap 파일 하나를 다운로드 받습니다.
그리고 아래 링크의 과정을 따라서 URCap 설치를 진행해줍니다.
그전에 UR 소프트웨어 기준을 충족해야하니 잘 확인하시기 바랍니다.
아래 링크에 해당 설명이 있습니다.
재시작 후 설치가 성공적으로 완료되었다면,
설정의 URCaps 메뉴에 다음과 같이 화면이 나타납니다.
이제 우측 상단 설치 메뉴에서
URCaps를 선택하고
다음과 같이 IP를 설정합니다.
여기는 Control 하는 PC의 IP가 들어갑니다.
Port는 로봇 모델과 상관없이 50002 고정인 것 같습니다.
그럼 이제, 필드버스 메뉴에서 이더넷/IP 를 사용하지 않음으로 바꾸어 주어야합니다.
왜 사용하지 않음이 되어야 작동하는지 모르겠습니다.
이거 하나 때문에 한 3시간 헤맸습니다..
그리고 이제 상단 프로그램 메뉴에서
다음과 같이 External Control을 넣어줍니다.
이제 PC에서 ping test를 수행합니다.
ping 192.168.1.101
아래와 같이 나타나면 연결이 성공적으로 이루어 진 것입니다.
터치 패드의 설정 - 네트워크 메뉴에서 네트워크에 연결되었습니다. 라는 문구가 떠있는지도 확인하시기 바랍니다.
ROS2 Moveit2 UR3e Operation
그럼 이제 ros2 로 실행해보겠습니다.
그전에 일단 로봇을 home 위치로 보냅시다.
이동 메뉴에서 홈을 선택하여 꾹 눌러 로봇이 home 에 위치할 때 까지 이동시킵니다.
이제 Calibration 부터 수행합니다.
실행 디렉토리는 ~/workspace/ros_ur_driver 에 위치하여야 합니다.
ros2 launch ur_calibration calibration_correction.launch.py robot_ip:=192.168.1.101 target_filename:="${HOME}/my_robot_calibration.yaml"
저는 별다른 동작없이 마무리 되었습니다.
그럼 이제 rviz2 와 함께 작동시켜보겠습니다.
ros2 launch ur_robot_driver ur_control.launch.py ur_type:=ur3e robot_ip:=192.168.1.101 launch_rviz:=true
로봇이 성공적으로 명령을 받을 수 있다고 합니다.
감동적인 화면이 나타납니다.
이는 로봇의 현재 상태가 rviz에 그대로 출력되는 것이며,
이제 ROS2 를 통해 로봇이 이동하는 것이 rviz 화면에도 반영됩니다.
이동 메뉴에서 간단하게 조작을 해보시길 바랍니다.
그리고 이제 위에서 작성했던 로봇의 프로그램을 터치 패드 하단의 재생 버튼을 눌러 작동시켜줍니다.
로봇이 rviz를 시작했던 시점의 상태 (잘 따라왔다면 HOME) 으로 돌아가니 주의하시기 바랍니다.
이제 로봇이 명령을 수신할 준비가 완료되었으니 새 터미널을 열고 다음 명령을 입력합니다.
export COLCON_WS=~/workspace/ros_ur_driver
cd $COLCON_WS
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
그럼 추가적인 새 rviz 창이 나타나는데요,
path planning 이 익숙하지 않으시면
아래 글을 참조해서 Path Planning을 plan하시기 바랍니다.
plan 후 바로 execute 하지 마시고
path를 확인하고 하시기 바랍니다.
로봇이 가끔 이상한 경로를 path로 계산하기 때문입니다.
그리고 준비가 되셨다면, 로봇 주변에 물체나 사람을 멀리하고
execute 를 누르시면, 로봇이 path planning 결과대로 작동합니다.
작동 영상입니다.
정말 감격스러운 순간입니다.
이 간단한 것을 위해 몇 시간을 디버깅했는지 모르겠습니다.
정말로.. 이틀은 그냥 날아갔네요
그럼 다음 글에서는 UR3e를 사용하여
간단하게 Gripper 없이 두 지점을 왔다갔다 하도록
Pick and Place를 수행하는 글을 작성하겠습니다.
'Setup & Example > ROS2 + 예제' 카테고리의 다른 글
ROS2 UR3e + Intel RealSense 임시 결합 하기 (1) | 2024.01.24 |
---|---|
ROS2 MoveIt2 이용하여 UR3e Pick and Place 수행하기 (0) | 2024.01.19 |
ROS2 humble에서 OpenManipulator-X Pick and Place + yolov8 으로 시작 명령 주기 (0) | 2024.01.05 |
ROS2 humble에서 OpenManipulator-X 환경 구성 및 조작 (3) | 2024.01.05 |
ROS2 humble - Gazebo에서 yolov8로 실시간 영상 분석 하기 (1) | 2023.12.29 |