본문 바로가기

팀 프로젝트

C-2345 자세 제어 4족보행 로봇 #10 (ROS 이기종 디바이스 간의 통신 실습)

반응형

지금까지 강의에서 노트북 두 대로 통신하는 실습이 나오면 못하고 넘어갔었다.

 

 

리눅스를 또 설치할 컴퓨터가 없었기 때문이다.

 

 

근데 찾아보니 있었다....

 

 

고1 때  사서 유럽여행 갈 때랑 친구 빌려줄 때 쓰고 몇 년 동안 서랍에 박혀있던 게 있었다.

Asus Transformer book t100ta

여기에 바로 리눅스랑 ROS를 깔아서 이기종간 통신을 실습하기로 했다.

 

 

 

 

 

 

우선 얘는 저가용 넷북에 들어가는 인텔 atom에 램도 2gb밖에 안돼서 우분투보다 더 가벼운 주분투(Xubuntu)를 설치해줬다.

 

 

주분투 공식 다운로드

https://xubuntu.org/download

 

Download Xubuntu « Xubuntu

Latest LTS release: 20.04, Focal Fossa The 20.04 release, codenamed Focal Fossa, is a Long Term Support release and has support for 3 years. To learn more about the release, please refer to the release announcement, which has links to complete release note

xubuntu.org

그리고 구형이라 그런지 부팅 usb를 인식만 하고 바이오스에서 usb부팅이 계속 안됐는데(선택하면 그냥 화면만 깜빡거림) 이거는 아래 글 3,4번을 참고했다.

 

 

https://github.com/5bentz/linux-asus-t100/blob/master/T100TA_guide.md

 

GitHub - 5bentz/linux-asus-t100: Getting Linux (Esp. Ubuntu) up and running well on the Asus Transformer T100

Getting Linux (Esp. Ubuntu) up and running well on the Asus Transformer T100 - GitHub - 5bentz/linux-asus-t100: Getting Linux (Esp. Ubuntu) up and running well on the Asus Transformer T100

github.com

 

우분투 기반에 무겁거나 중요도가 낮은 프로그램만 제거한게 xubuntu라고 한다.

 

 

그래서 그런지 확실히 윈도우를 깔았을 때보다 훨씬 빨랐다.

 

 

이후 바로 ros도 설치하고 세팅, 테스트까지 마쳤다.

turtlesim 테스트

+) xubuntu 같은 경우 기본 텍스트 편집기 이름이 gedit이 아니라 mousepad라서 gedit 대신 mousepad로 치던지 gedit을 설치해주면 된다.

 

 

 

 

 

 

 

 

 

 

바로 작동하는 걸 확인했으니 본격적인 실습으로 들어갔다.

 

 

5강 카메라 토픽 전송부분 실습 (56:00 ~ )

1. roscore pc의 bashrc에서 roscore의 ip 설정

roscore pc의 bashrc

*처음 건드는 사람은 위쪽의 localhost:11311이 들어간 2줄이 주석이 없고 아래 ip주소가 적힌 부분이 주석처리돼있을 것이다.

 

*localhost로 된 부분을 사용하면 그 컴퓨터 한 대 내부에서만 메시지 통신이 가능하고,

 

    ip주소가 적힌 부분으로 사용하면 다른 장치의 ros에서도

 

    1. roscore가 실행될 pc와 같은 네트워크(wifi)에 연결 

 

    2. roscore가  실행되는 장치의 ip주소를 안다 

 

    의 조건하에 이기종간 통신이 가능한 거 같다. (추측)

 

 

*여기서 roscore가 실행될 장치는 MASTER_URI와 HOSTNAME의 ip가 같다.

 

 

+)강의에서 박사님은 ifconfig로 ip주소를 확인하셨는데 구글링을 해보니 

$hostname -I

가 더 편한거 같다.

 

https://ko.wikihow.com/%EB%A6%AC%EB%88%85%EC%8A%A4%EC%97%90%EC%84%9C-IP-%EC%A3%BC%EC%86%8C-%ED%99%95%EC%9D%B8%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

 

리눅스에서 IP 주소 확인하는 방법

이 위키하우 글을 읽고 리눅스 컴퓨터에서 사설 그리고 공용 IP 주소를 볼 수 있는 방법을 익혀보자. 이 방법을 언제 사용할 수 있는지 알아보기. 공용 IP 주소는 컴퓨터에서 웹사이트 및 서비스

ko.wikihow.com

 

 

 

 

2. hostpc의 bashrc에서 ip설정

hostpc의 bashrc

*roscore pc와 달리 HOSTNAME에는 해당 장치의 ip주소를 넣고 MASTER_URI에는 1에서 확인한 roscore pc의 ip주소를 넣는다.

 

*네모로 가린 부분은 roscore pc의 ip이고 동그라미로 가린 부분은 hostpc, 즉 캡처를 한 pc의 ip주소이다.

 

 

 

 

3. roscore와 이미지 topic publish 하기

*roscore pc에서 roscore를 실행하고 usb_cam_node로 카메라 영상을 publish한다.

 

 

 

 

4. hostpc에서 카메라 영상 topic subscribe 하기

*hostpc에서는 roscore를 실행하지 말고 rqt_image view를 실행해서 다른 컴퓨터의 노드가 보내는 topic을 subscribe 한다.

 

roscore pc가 hostpc가 subscribe한 화면을 다시 찍고 있는 사진

성공적으로 다른 pc에서 roscore pc가 publish 한 이미지를 subscribe 했고 또 $rostopic list로 성공적으로 통신 중인 것도 확인했다.

 

 

정말 중요한 실습인 거 같다.

 

 

나중에 프로젝트 실전에 들어갔을 때 노트북이랑 Jetson Nano를 평소 아두이노처럼 유선으로 연결해 쓰는 게 아닌 무선으로 한다고 회의 때 들었는데 그 방법을 지금 배운 것 같다.

 

 

이 실습 하나로 ROS의 활용도가 얼마나 큰지 다시 한번 느꼈다.

 

 

 

 

 

 

 

===============================================================================

정확한 정보 전달보단 공부 겸 기록에 초점을 둔 글입니다.

틀린 내용이 있을 수 있습니다.

틀린 내용이나 다른 문제가 있으면 댓글에 남겨주시면 감사하겠습니다.   : )

===============================================================================

반응형