1. Trouble shooting
트러블슈팅 이라고 해야될지 모르겠지만, 실제 ubuntu에서는 예제들이 잘 작동한다.
하지만 WSL2에서는 문제가 있다. 바로 docker emulator가 제대로 실행되지 않는다는 점이다. (container는 실행 되지만 내부에서 실행되어야 할 DRCF emulator가 작동하지 않음 -> doosan robotics측에서 추후에 업데이트 예정이라고 함)
정확한 이유와 매커니즘은 나중에 따로 다루도록 하자.
일단 해결 방법은 emulator실행 파일dsr_common/bin/run_drcf.sh)을 보면 docker로 emulator를 실행시키는 명령어 코드가 있다.
여기에 --privileged 옵션을 추가해주면 해결된다. ( docker에서 ubuntu커널을 사용하는데 wsl은 다르다나 뭐라나... )
따라서 다음과 같이 추가해준 뒤 새로 build( colcon build )를 해주던지?
(추천) 이미 빌드된 상태에서 ~/ros2_ws/install/dsr_common/share/bin/run_drcf.sh 파일에서 수정해주도록 하자.
(추천하는 이유는, 큰 차이는 없지만 새로 git pull을 할때 수정된 내용이 있으면 작동하지 않는다. 이 부분 좀 더 공부해볼 필요가 있다.)
무튼 여기까지 마쳤다면 예제가 잘 작동할 것이다.
2. doosan robot2 예제 실행
예제 실행시 잘 작동한다. 하지만 pc의 사양때문인지, wsl이 gpu를 제대로 사용 못해서인지 gazebo는 굉장히 렉이 걸린다. 그냥 ubuntu에서는 그래픽드라이버 설치시 매우 잘 작동한다.
그러니 일단 gazebo는 뒤로 미루고 rviz정도로만 사용해두자.
우선 터미네이터 창에서 2개로 터미널을 나눠보자 (터미널 클릭 후 ctrl+shift+o)
이후 하나의 창에서 아래 명령어를 실행시킨다.
ros2 launch dsr_bringup2 dsr_bringup2_rviz.launch.py mode:=virtual host:=127.0.0.1 port:=12345 name:=dsr01
실행파일 : dsr_bringup2_rviz.launch.py (launch파일)
옵션 :
- mode(virtual/real) : 실행모드
- host(ip of emulator) : 가상모드 이기 때문에 127.0.0.1사용, real은 192.xxx.xxx.xxx사용
- port(port of emulator) : container(emulator실행되는) or 실제제어기에서 설정할 포트
- emulator namespace : 여러개 띄울 시 namespace로 각각을 구분
그럼 아래와 같은 화면을 마주할 것이다.
이후 두산로보틱스의 ROS 유투브강의(ROS1)을 참고했다.
다행히, ROS2와 구성하는 방법에서 문법의 차이가 있을 뿐, msg, srv 모두 동일하게 유지되었다.
아래 명령어를 다른 터미널창에서 실행해보자.
ros2 service call /dsr01/motion/move_joint dsr_msgs2/srv/MoveJoint "pos:
- 0.0
- 0.0
- 90.0
- 0.0
- 90.0
- 0.0
vel: 0.0
acc: 0.0
time: 2.5
radius: 0.0
mode: 0
blend_type: 0
sync_type: 0"
위 명령어는 MoveJoint srv로 로봇에게 pos값으로 이동하라는 명령을 한번 내리는 것이다.
GIF로 바꿔서 수정할것
위와 같이 움직이는 것을 rviz상으로 확인했다면, 제대로 이동했는지 값을 확인해보자
아래 명령어는 robot의 현재 pose를 받는 srv이다.
ros2 service call /dsr01/system/get_current_pose dsr_msgs2/srv/GetCurrentPose "space_type: 0"
space_type : 0(joint position), 1(task pose= {x, y, z, A, B, C} based base coordinate)
우리는 joint 값으로 명령을 내렸으니 joint space에서의 position을 확인한다.
위와 같은 출력값을 확인했다면 성공적이다.
여기까지 아주 간단하게 trouble shooting, 예제 실행 확인, 올바르게 실행되는지 확인 까지 진행하였다.
위 내용은 오롯이 코드를 뒤져서 알아낸 것이 아니라 (일부 있긴 하지만) 두산 로보틱스의 유투브 ROS강의, 자체 제공 ROS-manual, doosan robot2 git을 참고하며 알아낸 것이다.
(trouble shooting은 구글링과 gpt를 갈구며...)
다음 시간에는 위 소스들로 어떻게 확인했는지, 어떤 것들을 더 확인할 수 있는지, doosan robot2 패키지가 어떻게 작동하는 구조인지 확인해보도록 하자.
'ROS2 > doosan-robot2' 카테고리의 다른 글
4. doosan-robot2 (ROS2 pkg) -1, build (with, Docker install) (0) | 2025.02.27 |
---|---|
3. Ubuntu22.04(WSL)에 ROS2 설치 (0) | 2025.02.10 |
2. Window11에 Ubuntu22.04사용하기 (0) | 2025.01.26 |
1. ROS2 시작하기(In Window) (0) | 2025.01.25 |