본문으로 바로가기

최근 TurtleBot3를 가질 수 있게 되어서 개봉기[바로가기]도 올리고, 그 안에 있는 보드인 OpenCR 보드의 IMU만 한 번 아두이노 예제를 통해 학습[바로가기]을 수행했는데요... 이번에는 ROS에서 테스트를 해볼겸, 또 처음 사용해보는 rosserial이라는 패키지도 학습할 겸, 또 ROS 로봇 프로그래밍이라는 책도 구매했는데 학습도 할겸^^ 테스트를 해보았습니다. 이런 종류로 제가 올리는 글들이 항상 그렇지만, 단순히 방금 이야기한 책을 따라하면서 rosserial이라는 패키지를 학습하는 예제를 구동해보는 것이 전부인 글입니다. 일단, PC에 관련 패키지를 설치해야 하네요~

본 글은 표윤석/조한철/정려운/임태훈 저 ROS 로봇 프로그래밍의 내용 중 일부를 학습하면서 정리되고 있는 글입니다. 로봇은 TurtleBot3 Burger이며, ROS 버전은 kinetic입니다. 따라하기 실습을 수행하면서 추가되는 정보를 공유하거나, 혹은 이 예제가 잘 작동된다는 정보도 공유하고, 더 중요한 것은 책을 보고 따라하는 분들과 나중에 저 자신을 위해 중간과정을 기록하는 의도로 작성된 글입니다.

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가 어떻게 움직이는지 나타납니다. 오늘도 재미있는 테스트 후기였습니다.^^


댓글을 달아 주세요

  1. BlogIcon 핑구야 날자 2017.11.23 12:43 신고

    설정한대로 움직여서 일반인이 볼 때는 참 신기해 보입니다.

  2. BlogIcon 『방쌤』 2017.11.23 15:18 신고

    어려우면서도~~~ 신기한~~~^^
    날씨가 추워요,,,ㅎ 건강 조심하시구요~ㅎ

  3. BlogIcon 봉리브르 2017.11.24 07:53 신고

    테스트후기 잘 보고 갑니다.
    따듯하고 여유로운 금요일 보내세요^^

  4. BlogIcon peterjun 2017.11.25 01:28 신고

    ROS로봇 프로그래밍이라는 책도 있군요.
    단순히 예제를 따라하신다고 하셨지만.... 저에게는 다른 나라 이야기같은 느낌이.. ㅎㅎ
    이 과정 자체를 즐기시는 것 같아요.

    • BlogIcon PinkWink 2017.11.25 10:55 신고

      단순 따라하기가 일단 공부의 시작이기도 하고... 이쪽이 하드웨어까지 같이 공부하는 거라 단순히 따라해도 안될때가(^^) 있어서 성취감이 약간 있죠^^

  5. BlogIcon *저녁노을* 2017.11.25 05:57 신고

    와..정말 신기해 보이네요.ㅎㅎ

  6. BlogIcon GeniusJW 2017.11.25 21:15 신고

    뭔가 신기방기한 물건이네요!!ㅋㅋ