ROS2/UR_ROS2

2. ur_robot_driver - 이론

justhash 2025. 3. 18. 15:30

ur_robot_driver

repository의 핵심이라 할 수 있는 driver package. 여기서부터 출발 하기로 한다.

1. Overview

overview에 driver가 어떤 pkg들과 연동되는지에 대한 설명이 있다. driver repository에 없는 pkg는 dependency로 정의해두어 자동으로 설치되게 했다.( rosdep install, 물론 설치법 대로 진행한다면 vcs import로 .repos에 정의해둔 대로 git uri를 참조하여 src폴더에 추가하고 함께 build되도록 했다. )

 

2. Installation

깨닳음 1, 그동안 신경 안쓰던 rosdep install 뒤의 option들이 보이기 시작했다.

더보기
rosdep install --ignore-src --from-paths src -y

의 --ignore-src 옵션은 package.xml에 정의된 dependency들 중 src에 있는 것들은 제외하라는 뜻이다. 즉 vcs import로 depend pkg들을 src폴더에 포함시켰다면, rosdep install에서 제외되어 설치 경로가 /opt/ros/${ROS_DISTRO}가 아니라 작업중인 workspace가 되는 것이다.

 

(지금은 모른채로 vcs import무시하고 진행한 관계로 ur_description등의 pkg prefix가 /opt/ros/humble이다....

재밌군....

 

3. Startup the driver

ur_robot_driver는 ur robot을 ros와 연결하기 위한 driver이기 때문에 사용해보려면 robot이 필요하다. real은 없는 관계로 ur이 제공하는 URsim을 사용해야 한다. (URSim은 UR robot의 offline simulator로 robot과 controller가 구현되어 있는 simulator이다. 실제 로봇을 사용하는 것과 똑같은 테스트를 해볼 수 있다. == emulator라고 생각하면 될듯)

 

그 중 간편하게 사용해볼 수 있게 ursim docker image를 추천/제공한다.

 

본 설명은 real robot or ursim(virtual robot)이 준비가 되었다는 가정으로 진행된다. (아마 직접 해볼때는 설치를 먼저 진행 해야할 듯)

 

이 중 'Finish startup on the robot' 항목이 의문이다.

Headless mode가 아닌 이상 robot에서 External Control URCap 프로그램을 시작해야한다는데 무슨 말일까?

 

이어서, robot control mode 에 따라 해야하는 게 다르다.

operation modes에 대해서는 추후에 좀더 자세하게 봐보도록 하자.

4. Move the Robot

앞서 소개된 대로 모두 설정을 마쳤을 경우 robot을 움직일 수 있다.(real/virtual 움직이는 방법은 동일)

여러 종류의 controller를 원하는 대로 사용할 수 있고(각 controller들의 차이는 따로 알아보자), 그에 대한 움직이는 예제가 있다.

추가로, ROS node를 작성해 로봇을 움직이는 python 예제도 제공한다. (어떤 msg/srv사용하고, 어떤 움직임에 대한 예제인지 어떤 움직임까지 가능한지 직접 사용해보며 알아보자)

 

5. Simulation

ursim을 이용하는 방법인데 'ur_client_library' pkg의 'start_ursim.sh'를 실행한다. 근데 이러면 ip가 192.xx.x.x로 되어서 사용이 될 지 모르겠다. 같은 image인 'universalrobots/ursim_e-series'의 dockerhub에 있는 사용법을 따라 직접 docker run을 하면 172.17.0.2:xxxx로 실행된다. 이렇게는 'ur_robot_driver'의 ur_control.launch파일이 실행이 되는걸 확인했다.(움직여보진 않았지만)