저는 ROS 학습용으로 우분투를 사용하고 있었습니다. 최근 YOLO 세팅하던 글에서 이야기헀지만, 저는 성능이 꽤 좋은 노트북을 하나 사용할 수 있는 기회가 있어서... 거기다가 우분투가 깔려있었죠... 델 얼라이언웨어인데요.. 꽤 좋은 노트북이죠.. 문제는 설치된 우분투와 라즈베리파이와 연결이 도저히 안되었다는 거죠.. 정말 많은 분들께서 SNS를 통해 중계되던 실시간 삽질(^^)에 도움말을 주셨지만 말이죠^^
정말 슬픈 하루였죠^^ 아무튼 이 사태후에 저는 큰 결심을 합니다.~~ 바로.. 리눅스 민트로 갈아타기로 했죠.. 제가 민트에 대해 처음 알게된것은 오로카 모임에서 저의 책 직강을 하고난 뒤풀이에서 ROS 세계의 전도사(^^)이신 표박사님의 추천을 받아서이죠^^ 그래서 이 기회에 그냥 가즈아~~~가 된거죠^^. 리눅스 민트의 설치는 정말 깔끔했습니다. 한가지 안타까운건, 폰로밍, 개인적으로 가지고 있는 에그, 저희 집 등 어디에서도 잘 접속되는 민트 공식 홈페이지가 제가 일하는 회사에서만 접속이 되지 않았습니다.ㅠㅠ. 그래서 설치 이미지 파일을 구하는데 좀 애를 먹었지만요^^
민트를 설치하고.. 가장 먼저 제가 제일 좋아하는 배경 중 하나로 바꾼뒤 느낀점은... 왜 이렇게 이뻐??? 였습니다. ㅎㅎ 확실히 위키백과 등에서 우분투에 비해 아름다움에 집중했다는 말이 이해가 됩니다.
뭔가 윈도우와 맥을 잘 섞은듯한 느낌~~~
꽤 마음에 들더군요~~~ 아싸~~~
그러나.. 한가지 문제에 봉착했습니다ㅠㅠ. sudo inxi -Fxz 명령으로 확인해 보면 분명 Network에 Qualcomm Atheros Device라고 와이파이 디바이스를 잡습니다. Killer 1550을 사용하는데 저렇게 나와서 약간 의아하긴 하지만 (PC 하드웨어 대한 지식이 거의 전무한 관계로ㅠㅠ) 아무튼 결론은 전 델 얼라이언웨어에서 우분투/민트 모두 wifi를 못 쓰고 유선랜을 사용하고 있습니다.ㅠㅠ. 에휴... 혹시 지나가는 고수님 계시면 도움을.ㅠㅠ. 아무튼... 민트는 이쁩니다. ㅎㅎㅎ 아.. 한가지 문제더... 맥이나 윈도우에서는 나타나지 않는데.. 회사에서 github과 제 블로그의 접속이 너무 느립니다. 왜 그런지ㅠㅠ.
민트에 ROS 깔기
이제.... ROS를 깔아야죠.. 뭐 사실 ROS 공식 홈의 안내대로 깔아줘도 됩니다만... 터틀봇의 깔끔한 설치를 위해 터틀봇3의 배포사인 로보티즈의 e매뉴얼 사이트의 도움을 받기로 합니다.^^ 로보티즈의 세팅 매뉴얼에서는 민트가 설치될 PC를 remote PC 라고 합니다. 뭐 아무튼 remote PC쪽 설치 안내페이지에서 도움을 받죠.
저 부분에서 install_ros_kinetic.sh를 받아 한 방에 잘 설치해주는 코드를 복사해서 실행하면 됩니다. 우와~
그 파일이 궁금해서 열어봤지만..흠... 뭐 그냥 그렇군 하고 지나가도록 하죠^^ 예전 도스 시절에 bat 파일을 예술적으로 만들던 분의 작품이 생각나네요^^
그리고... dependent 패키지를 설치해줍니다. 그리고, turtlebot3_msgs와 turtlebot3를 catkin_ws/src 폴더에 복사해두고, catkin_make까지 돌려놓는 코드도 복사해서 실행해 둡니다. 뭐 이러면 ROS 설치는 끝납니다. 사실 지금 버전 전 버전인 ROS indigo 버전을 설치하던 과정을 블로그에 올렸었는데요. 그거에 비하면 로보티즈가 제공해 주는 이 설치법을 따라하는게 정말 편하긴 합니다. 전 그냥 기다리면 되거든요^^
민트에 아두이노 깔기
이제 아두이노를 설치합니다. 왜냐면 OpenCR보드에 펌웨어를 넣어주기도 해야하고, 다이나믹셀 모터를 점검도 해야하거든요^^
일단 아두이노 홈페이지를 방문해서 Linux 버전을 다운로드 받아둡니다.
받은 파일을 home 밑에 tools 폴더를 만들어 압축을 풀어줍니다. (왜 tools 폴더냐구요? ㅎ... 그건 로보티즈의 표윤석 박사님의 책을 또한 따라가고 있기 때문이죠^^)
이제.. 하나씩 설정을 잡아야하는데, OpenCR관련 아두이노 설치에 대한 안내페이지에 따르면, 루트 권한없이 OpenCR 보드에 아두이노 프로그램을 업로드 하기 위한 설정이라고 합니다.
또한, 터틀봇3에서 하드웨어 제어를 전답하는 OpenCR보드의 라이브러리 사용을 위해 필요한 모듈도 설치하구요...
그리고, 아까 받은 파일 설치도 하고, bashrc에 path도 잡아줍니다.
짠~
아두이노 실행 잘 되네요^^
아두이노 설정에서 저 파일 그림의 json 파일 경로를
추가적인 보드 매니저 URI에 입력해 둡니다.
그리고 보드매니저에서 OpenCR 보드를 찾아 설치하고 나면 저렇게 보드 매뉴에서 OpenCR 보드를 사용할 수 있습니다.
헉.. 놀래셨죠? 갑자기 다 뜯어놔서~^^ 그냥 조립전 단계에서 저렇게 테스트해보고 싶었습니다^^. 사실 제가 볼때는 아두이노를 사용할 수 있는 로봇용 풀스팩 하이엔드급 보드가 OpenCR 보드라고 생각합니다. 전 OpenCR 보드 이야기를 몇 번 했는데요. ROS에서 OpenCR 보드의 IMU 정보를 받아오기라든지, 맥에서 OpenCR 보드를 이용해서 다이나믹셀 모터를 움직여본다든지... 터틀봇3의 자세를 한 번 관찰했다든지^^ 등의 이야기를 했었죠.. 아무튼. 전 OpenCR 보드가 너무~~ 마음에 듭니다. ㅎㅎㅎ
일단... Blink_LED 예제를 한 번 돌려보죠.. 민트에서 아두이노 설치와 OpenCR 보드의 연결이 잘 되었는지 말이죠^^
보드를 연결하고 업로드를 해주면 되겠습니다.^^ 잘 되면...
저렇게 LED가 키트(^^)스럽게 깜박일 겁니다.^^
터틀봇3 다이나믹셀 모터 확인하기
이제 다음 단계로 터틀봇에서 사용하고 있는 다이나믹셀 모터를 확인하러 갑니다. 저기 보이는 turtlebot3_setup에서 core를 읽습니다.
그리고 업로드하고 시리얼 모니터를 열면 나타납니다. 먼저... 외쪽 모터 하나만 OpenCR 보드와 연결하고, 1번을 선택합니다.
그러면 OK~~메세지가 나오면 OK 입니다. 이와 같이 또 오른쪽 모터만 OpenCR 보드에 연결하고 2번을 선택하는 거죠..
..그리고 turtlebot3_burger안에 있는 turtlebot3_core를 OpenCR에 업로드 해주면 됩니다.~
완성되었다네요 ~~^^
민트에서 ROS로 OpenCR보드 사용해보기
심플하게...
민트가 설치된 PC와 OpenCR이 연결된 상태에서 바로 한 번 테스트를 해보죠. ROSCORE를 실행하고
그리고, ROS에서 OpenCR보드의 IMU를 테스트할때 사용했던 pyserial 노드를 이용해서 OpenCR과 연결하도록 하죠
rosrun rosserial_python serial_node.py __name:=opencr _port:=/dev/ttyACM0 _baud:=115200
간단한 접속입니다~
뭐.. OpenCR 보드에 장착된 센서들이 다들 잘 연결되고 있고 publish가 시작된다는 메세지가 보이네요~~~
rostopic list로 보니 다들 정상적으로 잘 동작되는 모양입니다.
이제... turtlebot3_teleop의 turtlebot3_teteop_key를 실행해서 돌려보면 다이니막셀 모터달이 잘 동작하는 것을 또한 알 수 있죠^^
라즈베리파이에 ROS 설치
다음은.. 라즈베리파이로 가야죠...
이 부분은 좀 민망한데요.. e 매뉴얼에서 라즈베리파이를 라즈비안으로 설정하는 페이지로 가보면...
이미지 파일의 링크가 하나 주어지는데요...
이걸 아내하는대로 저 멋진 etcher.io에서 받은 유틸로 SD카드에 넣기만 하면 ROS까지 잘 설치되어 있습니다.ㅠㅠ. 너무 민망할 정도로 간단합니다.ㅠㅠ.
라즈베리파이에서의 세팅
이번엔 당연히 라즈베리파이로 가야죠~
이쁩니다. 설정까지 거의다 만져놓고 배포되는 것 같아... 뭐 아무것도 건드릴게 없습니다.~
살짝 sudo raspi-config를 통해 설정에 들어가서...
Advanced Option에서..
파일시스템을 확장합니다. 저는 32GB SD를 사용해서 이미지의 원크기보다 크기때문에 저 설정을 통해 나머지 용량도 다 사용하게 합니다. 리부팅~~~~
짠~ 용량이 다 회복되었네요^^
역시 배경을 수정해 줍니다. 아아.. 이게 정녕 라즈베리파이의 그래픽 성능이란 말입니까~^^
아이피를 적어두죠^^
터틀봇3와의 연결 (MINT - Raspberry Pi - OpenCR
드디어 마지막이네요...
민트에서 ssh 명령으로 라즈베리파이로 접근합니다.
nano를 이용해서 라즈베리파이에서 민트쪽의 IP를 ROS_MASTER_URI로 잡아 줍니다.
원리는 바로 저렇게 말이죠^^
그리고 민트에서의 bashrc도 저렇게 수정해 줍니다.
이제 민트쪽에서 roscore를 실행합니다.~~~~~
그리고, ssh로 연결된 라즈베리파이에서 turtlebot3_bringup의 turtlebot3_core.launch를 실행해 줍니다.
라즈베리파이는 위 사진처럼 OpenCR 보드와 연결되어 있어야 합니다.
그리고~~~ 저렇게.. 시작되면 정말 이쁘게 잘 연결된 거죠^^
민트(remote PC)에서 rostopic list를 보면 무선으로 remotepc와 라즈베리파이가 연결되었지만, 직접 시리얼로 연결할때와 동일하다는 것도 알 수 있습니다.
이제.. 민트쪽에서 키보드로 모터를 돌리던 teleop_key.launch를 실행합니다.
모터가 정말 잘 돕니다.^^ ㅎㅎ 도는 것만 볼까요?
아무튼... 터틀봇3도 다시 테스트 준비를 마쳤네요 ㅎㅎㅎㅎ^^
'Robot > Robot Program - ROS' 카테고리의 다른 글
ROS의 node와 topic을 예제를 통해 알아볼까? (22) | 2019.02.11 |
---|---|
역기구학을 풀 때 도움을 줄 수 있는 Python 모듈 - ikpy - (21) | 2018.08.20 |
ROS에서 아두이노로 만든 로봇 제어하기 - 일단은 LED 깜빡거리기 (19) | 2018.07.13 |
가제보 Gazebo 맥 Mac에서 설치하기... (22) | 2018.05.10 |
ROS의 개발도구로 VSCODE는 어떤가요 (24) | 2018.03.14 |
ROS Subcriber와 Publish 실습: OpenCR IMU 테스트 (29) | 2017.12.28 |
ROS에서 LDS(Laser Distance Scanner) 사용해보기~ (28) | 2017.12.07 |