최근 TurtleBot3를 가질 수 있게 되어서 개봉기[바로가기]도 올리고, 그 안에 있는 보드인 OpenCR 보드의 IMU만 한 번 아두이노 예제를 통해 학습[바로가기]을 수행했는데요... 이번에는 ROS에서 테스트를 해볼겸, 또 처음 사용해보는 rosserial이라는 패키지도 학습할 겸, 또 ROS 로봇 프로그래밍이라는 책도 구매했는데 학습도 할겸^^ 테스트를 해보았습니다. 이런 종류로 제가 올리는 글들이 항상 그렇지만, 단순히 방금 이야기한 책을 따라하면서 rosserial이라는 패키지를 학습하는 예제를 구동해보는 것이 전부인 글입니다. 일단, PC에 관련 패키지를 설치해야 하네요~
sudo apt-get install ros-kinetic-rosserial ros-kinetic-rosserial-server ros-kinetic-rosserial-arduino
.이렇게 설치합니다. 이제 ROS의 Arduino IDE 설정 문서[바로가기]와 ROS 로봇 프로그래밍에 있는데로 슬쩍 따라해서..
cd ~/Arduino/libraries rm -rf ros_lib rosrun rosserial_arduino make_libraries.py .
.라고 입력합니다. 이전에 우분투에서 아두이노를 설치[바로가기] 해서 위 경로를 그대로 사용하구요. 세 번째 줄의 rosrun 끝에 마침표(.)가 띄어쓰기 후에 있다는거 조심하세요~ 아니면 타겟 경로를 입력해야 합니다.^^ 그러고 나면 아두이노에서 ROS와 시리얼 통신을 할 수 있는 라이브러리가 설치가 됩니다. 이제.. 아두이노를 실행하고~~
예제에서 ROS->01.Basics->d_IMU라고 OpenCR 보드가 제공하는 라이브러리를 가져옵니다.
이렇게 ros_lib가 설치되었네요... 여기서 한가지 작업을 해야할 것이 있습니다.
ArduinoHardware.h를 찾아서 열고, 위에 표시도니 #else
후에 있는 #define SERIAL_CLASS
뒤를 USBSerial
이라고 변경해 주어야 합니다. 아두이노에 설치될 프로그램이 ROS와 통신하기 위한 가이드는 rosserial_arduino의 tutorial 문서[바로가기]를 확인하면 자세히 나와있더군요. 그러나 그냥 로보티즈가 배포하는 예제 코드[바로가기]를 사용하도록 하겠습니다^^. 그러나 이 코드도 꽤 복잡하던데요.. 이건 ROS의 표준 메시지 중 IMU에 관련된 문서의 규약[바로가기]을 따르기 때문인가 봅니다.
일단, 터미널에서 roscore를 실행하고
아까 d_IMU 예제를 OpenCR 보드에 업로드 시킵니다.~
그리고,
rosrun rosserial_python serial_node.py __name:=opencr _port:=/dev/ttyACM0 _baud:=115200
라고 명령을 줍니다.~.
그리고 rostotic list로 확인해보면 imu라는 토픽이 하나 나타나네요~~~ 물론 tf도~
rostopic echo /imu 명령을 주면 orientation, angular_velocity, linear_acceleration_covariance 등이 나타나는 것이 보입니다. ROS에서 이 메세지를 바로 사용할 수 있는 거겠죠&^^
뭐 아무튼~~
rviz를 실행합니다.^^
짠~ 아무것도 없네요ㅠㅠ.
axes를 추가합니다.^^
Fixed_Frame을 base_link로 하고~
추가된 Axes의 Reference Frame은 imu_link로 합니다.
짠~~ 넵.. 저 축이 로봇에 있는 IMU 센서에서 측정된 값대로 움직여 줍니다.^^
기준 축을 눈으로 확인하기 위해 하나더 추가하죠.. base_link를 reference frame으로 하게하고, length와 radius를 살짝 작제 해줍니다.~
ㅎ^^ 재미있게 되네요^^
이렇게 로봇을 막 기울여보면, rviz 상에서 axes가 어떻게 움직이는지 나타납니다. 오늘도 재미있는 테스트 후기였습니다.^^
'Robot > Robot Program - ROS' 카테고리의 다른 글
ROS의 개발도구로 VSCODE는 어떤가요 (24) | 2018.03.14 |
---|---|
ROS Subcriber와 Publish 실습: OpenCR IMU 테스트 (29) | 2017.12.28 |
ROS에서 LDS(Laser Distance Scanner) 사용해보기~ (28) | 2017.12.07 |
ROS에서 로보티즈 다이나믹셀 움직여보기 Dynamixel Workbench (16) | 2017.11.06 |
유니버셜 로봇팔 UR3를 ROS로 움직여보기 - 최초 연결, 상태 확인 (49) | 2017.09.22 |
ROS 가제보(Gazebo) 연습하기 - Pan/Tilt (25) | 2017.03.29 |
ROS URDF의 기초예제 Pan/Tilt 시스템 (24) | 2017.03.20 |