1. 개발환경
OS : Ubuntu 20.04
ROS : Noetic
OpenSource : OpenMANIPULATOR-X
2. 로봇팔 시뮬레이션 하기
※주의※
모든 개발환경이 구성되어 있어야 하며 자세한 사항은 다음 링크를 참고할것
https://emanual.robotis.com/docs/en/platform/openmanipulator_x/quick_start_guide/#install-ros-on-pc
1) 오픈매니퓰레이터 가제보 실행
roslaunch open_manipulator_gazebo open_manipulator_gazebo.launch
- 가제보가 open되면 플레이버튼 누르기
2) 컨트롤러도 시뮬레이션으로 진행하기 위해 use_platform설정 false로 바꿔주기
roslaunch open_manipulator_controller open_manipulator_controller.launch use_platform:=false
3) GUI 시뮬레이션 프로그램 실행
roslaunch open_manipulator_control_gui open_manipulator_control_gui.launch
- Timer Start 실행
3. 통신 확인
단순히 시뮬레이션 하는것으로 끝내는 것이 아니라 실제로 통신이 어떻게 이루어지는지 직접 확인해 보자.
1) rostopic list 확인
rostopic list
- 다음과 같은 토픽을 확인 할 수 있다. 그러나 토픽이 너무 많고 감이 잘 안와서 두번째 방법으로 확인해보자
2) rqtgraph로 직관적으로 확인하기
rqt_graph
- rostopic list보다 보기 편하고 어떤 node에서 topic이 publish 되는지 subscribe되는지 확인 할 수 있다.
- 특정 노드나 토픽에 마우스 커서를 올리면 해당 통신이 하이라이트 되면서 연관된 요소를 확인 할 수 있다.
- GUI컨트롤러에서 가제보까지 어떻게 통신이 이루어지는지 확인하기 위해 해당 부분을 하이라이트 하면 위와 같다.
- 사용자가 GUI컨트롤러에서 명령을 주면 /controm_gui라는 노드에서 /option 이라는 토픽이 publish되고 /open_manipulator_controller 라는 노드가 받고 이 컨트롤러가 다시 /gripper_position/command라는 토픽으로 가제보에게 전달한다.
- 그러나 위의 rqt_graph에는 그리퍼에 대한 정보만 있을 뿐 로봇팔의 위치에 대한 정보는 표현이 되어있지 않다. 로봇팔이 움직이는 위치값도 확인하기 위해 rqt_graph의 표현을 다음과 같이 바꿔보자
- /open_manipulator_controller에서 /joint#_position 토픽이 발행되는것을 확인 할 수 있게 되었으니 이를 확인해보자
3) rostopic echo /joint1_position
rostopic echo /joint1_position
rostopic echo /joint2_position
rostopic echo /joint3_position
rostopic echo /joint4_position
- 우측 터미널창을 보면 4개의 조인트 위치를 움직이면서 확인 할 수 있다.
4. 코드분석
위의 프로그램이 어떻게 동작하는지 코드를 분석해보자.
openmanipulator controller가 가제보 시뮬레이션으로 신호를 전송하는 파일은 다음과 같은 경로에 있다.
catkin_ws > src > open_manipulator > open_manipulator_control_gui > src > main_window.cpp
이러한 경로는 roslaunch <패키지 이름> <파일.launch> 에서 패키지 이름에 맞는 디렉토리를 확인해 보면 금방 찾을 수 있다.
소스코드를 보면 다음과 같이 짜여져 있으니 이를 참고해서 개발해보자!
'리눅스 > ROS' 카테고리의 다른 글
[ROS] 기본 용어 및 컨셉 (0) | 2022.02.25 |
---|---|
[ROS] 초기 설정 및 에러 폭탄 (0) | 2022.02.10 |