본문으로 바로가기

최근 로보티즈의 전문가용 로봇키트인 ROS 연구용 플랫폼 TurtlBot3를 만지고 놀 수 있게 되어 그 개봉기를 올렸는데요[바로가기]. 그 속에 모터와 각 종 센서를 제어하거나 모니터링하는 보드로 OpenCR이라는 보드가 들어가 있습니다. 이 보드만 따로 보다가 참 잘 만들어졌다고 느껴지더군요. 저도 예전에 지내던 회사[바로가기]에서 이런 느낌의 보드가 어떨지 기획한 적이 있는데 당시 동료 연구원들이 많이 반대해서 못 헀던게 또 아쉬움으로 남네요... 절대 절대 그때 만들었으면 잘 팔았을거라는 이야기를 하는 것이 아닙니다.^^. 그때는 나왔으면 아마 그대로 사장되었을 확률이 높죠... 아무튼~~~ 이 보드 좋더라구요^^ 판매페이지[바로가기]에서 보여주는 그림을 보면...

이렇습니다. 로보티즈가 판매하는 다이나믹셀과 직접 연결되는 커넥터에 아두이노 지원, UART, RS485, CAN 등의 다양한 통신 지원, 심지어~~~ MPU9250이라는 IMU 센서도 하나 가지고 있습니다. 괜찮네요~~ 오늘 저는 이 보드가 제공하는 아두이노 예제 중에서 IMU 센서에 대한 것을 돌려본 이야기를 할려고 합니다. 아무래도 로봇이 ROS를 대상으로 하고 있으니 예제와 그 설명도 당연히 ROS가 설치되는 Ubuntu를 기준으로 설명하게 되고, 저 역시도 그걸 따라했으니, 이 번 예제의 환경은 Ubuntu 16.04 버젼이 기준입니다. 

먼저 Ubuntu에서 아두이노를 설치하기 위한 절차를 수행해야 하는데요. 시리얼 포트에 대한 설정때문에 Ubuntu에서는 뭔가 하나 거쳐야 하는 단계가 있는 모양입니다.

wget https://raw.githubusercontent.com/ROBOTIS-GIT/OpenCR/master/99-opencr-cdc.rules
sudo cp ./99-opencr-cdc.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger

.이 단계는 로보티즈의 github에서 리눅스 환경에서 아두이노 설치 문서[바로가기]에 설명되어 있습니다. 그리고 ROS 로봇 프로그래밍이라는 책에서는 그 이유를 

리눅스에서는 시리얼 장치가 연결되었을 때 모뎀 장치인지 알기 위해 특정 명령어를 송신하는데 이것이 문제가 될 수 있기 때문에 해당 절차를 진행하지 않도록 하는 USB 포트에 대한 접근 권한과 모뎀으로 인식하지 않도록하는 설정을 추가

하는 것으로 설명하고 있습니다. 그리고... OpenCR의 GCC가 32비트용으로 64비트를 사용하는 저는

sudo apt-get install libncurses5-dev:i386

명령으로 따로 32비티와의 호환성에 대비를 해야한다고 하네요~ 그리고 난 후,

터미널 설정에서...

아두이노를 다운 받은 경로를 추가하고~~~ 아.. 아두이노를 다운 받은 후, tools 폴더에 압축을 풀었습니다.

이제 심플하게 터미널에서 arduino라고 입력하면 됩니다.~~~^^

아~~~ 윈도우에서만 보다가 여기서 보니 또 방갑네요~~^^

여기서... 파일>예제>OpenCR>IMU>IMU_Read_RollPitchYaw를 선택합니다.~

이렇게... 잘 로딩이 되죠^^

그리고 저는 TurtleBot에 있는 OpenCR 보드와 PC를 연결했습니다.

그리고 잘 실행되면 저 화면에 보이는 print 문의 내용이 시리얼 통신으로 들어오겠죠^^

아~~~ 이런... OpenCR 보드를 지원하게 하기 위해 위 그림처럼 Preference에서 추가 보드 매니저 URL에

ttps://raw.githubusercontent.com/ROBOTIS-GIT/OpenCR/master/arduino/opencr_release/package_opencr_index.json

라고 입력합니다.

그러면 저렇게 OpenCR 보드를 선택할 수 있습니다.

그리고... 포트도 ttyACM0에 잘 연결되었구요~

컴파일해 보니 괜찮네요~

업로드도 무사히 잘 수행되었습니다~~~

그리고 시리얼 모니터를 실행하셔도 되지만, 시리얼 플로터를 실행하면 이럴때는 좋습니다.~

안 움직일때는 저렇게 플랫하게 나오네요.. 타임 틱이 살짝 떨긴하지만, 아두이노에 시리얼 통신인 걸 감안하면 아주 좋은 것 같습니다.

이제 로봇을 저렇게 기울여 보았습니다.

앗.. 요렇게 뜨네요~~~^^ y축을 중심으로 회전하는 Pitch가 검출되고 있는 것 같습니다.

이번에는 요렇게~~~

ㅎㅎ.. 요렇게~~~ 잘 되네요^^

물론 Yaw 방향으로 회전도 잘 센싱됩니다.^^ 좋네요~~^^ 마음에 쏙 드는 아이입니다.^^

신고