Phase 1 | ROS로 조명 및 공조 시스템 제어하기 |
큰 그림.
복잡한 ROS 설치 과정을 마친 것만으로도 감사하며, 또 축하한다는 말을 드리고 싶습니다. 이제 제가 구현하고 있는 ROS IoT 스마트홈의 대략적인 구조를 보여드리겠습니다. 이 그림만 잘 기억한다면, 설치 과정을 마무리하고 기능들을 구현하는 것은 일도 아닐거라 생각합니다.
ROS 환경 세팅 2. 필수 패키지 설치 |
2. 필수 패키지 설치
ROS 환경을 계속 세팅해보겠습니다. 이전 포스팅에서 ROS Melodic을 설치해 기초를 닦았다면, 이번에는 IoT 스마트홈을 구축하기 위해 필요한 라이브러리를 설치해 실질적으로 활용할 수 있도록 해보겠습니다. 필수 패키지는 rosbridge_suite와 roslibjs, rosserial 총 세 가지입니다. 다음의 절차를 따라 천천히 설치해보겠습니다.
가. rosbridge_suite 설치
rosbridge는 ROS와 JSON 형식으로 통신을 함으로서 ROS의 범용성을 높여주는 패키지입니다. 이를 이용하면 json통신을 구현할 수 있는 환경과 ROS와 통신이 가능합니다. rosbridge를 통해 우리는 java, javascript, python을 사용하는 클라이언트와 통신이 가능하게 됩니다.
이 프로젝트에서 우리는 javascript를 시용해 ros를 웹과 연동시키기 위해 rosbridge를 사용할 예정입니다. 설치는 다음과 같이 진행합니다.
sudo apt-get install ros-melodic-rosbridge-suite
설지가 완료되면 다음의 명령을 통해 정상적으로 웹소켓 서버가 돌아가는지 확인합니다.
roslaunch rosbridge_server rosbridge_websocket.launch
... logging to /home/ubuntu/.ros/log/eb4d0b04-f4fe-11ea-ac15-000c2909ec49/roslaunch-ubuntu-97069.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://ubuntu:36055/
... (content omitted) ...
process[rosbridge_websocket-1]: started with pid [97084]
process[rosapi-2]: started with pid [97085]
[INFO] [1600167957.688893]: Rosapi started
2020-09-15 04:05:57-0700 [-] Log opened.
2020-09-15 04:05:58-0700 [-] registered capabilities (classes):
2020-09-15 04:05:58-0700 [-] - rosbridge_library.capabilities.call_service.CallService
2020-09-15 04:05:58-0700 [-] - rosbridge_library.capabilities.advertise.Advertise
2020-09-15 04:05:58-0700 [-] - rosbridge_library.capabilities.publish.Publish
2020-09-15 04:05:58-0700 [-] - rosbridge_library.capabilities.subscribe.Subscribe
2020-09-15 04:05:58-0700 [-] - <class 'rosbridge_library.capabilities.defragmentation.Defragment'>
2020-09-15 04:05:58-0700 [-] - rosbridge_library.capabilities.advertise_service.AdvertiseService
2020-09-15 04:05:58-0700 [-] - rosbridge_library.capabilities.service_response.ServiceResponse
2020-09-15 04:05:58-0700 [-] - rosbridge_library.capabilities.unadvertise_service.UnadvertiseService
2020-09-15 04:05:58-0700 [-] WebSocketServerFactory starting on 9090
2020-09-15 04:05:58-0700 [-] Starting factory <autobahn.twisted.websocket.WebSocketServerFactory object at 0x7f5496ad0390>
2020-09-15 04:05:58-0700 [-] [INFO] [1600167958.420812]: Rosbridge WebSocket server started at ws://0.0.0.0:9090
콘솔 로그의 마지막 줄을 보면 ws://0.0.0.0:9090 에서 웹소켓 서버가 시작되었음을 알 수 있습니다.
웹브라우저를 통해 0.0.0.0:9090으로 접속해보겠습니다.
위와 같은 화면이 나왔다면 성공입니다. 이제 ROS가 JSON을 통해 데이터를 주고 받을 준비가 되었습니다.
나. roslibjs 설치
roslibjs는 웹이 클라이언트로서 작동할 수 있게 하는 자바스크립트 코드입니다. 원격 데스크톱 프로그램을 깔 때 원격 지원을 해주는 쪽과 받는 쪽 모두 프로그램을 설치하듯, rosbridge도 비슷한 맥락으로 ROS 단과 Web 단에 각각 rosbridge_server와 roslibjs를 설치해야 합니다. 이 roslib를 설치하는 것은 웹서버를 실제로 작동시킬 때 다시 설명드리고 일단 여기서는 스킵하겠습니다.
다. rosserial 설치
rosserial은 ROS패키지를 실행시킬 여건이 안되는 낮은 성능의 프로세서에서 ROS와 통신이 가능하도록 만들어주는 패키지입니다.
가. 의 rosbridge 와 유사하지만, rosbridge는 JSON을 이용해 통신하며, rosserial은 이름처럼 시리얼 통신을 통해 저사양의 디바이스와 통신한다는 차이점이 있습니다. rosserial은 유선 / 무선 통신 모두를 지원하며, 이 프로젝트에서는 NodeMCU(ESP8266)을 사용할 예정이기 때문에, rosserial-arduino까지 모두 다운로드 받도록 하겠습니다.
sudo apt-get install ros-melodic-rosserial
sudo apt-get install ros-melodic-rosserial-arduino
Done!
어떤 특별한 성과를 내지 못했음에 아쉬운 느낌이 있습니다. 큰 일을 하기 위해서는 많은 준비가 따르기 마련입니다.
이 다음부터 ROS를 본격적으로 활용해 무언가를 만들어내는 과정을 함께 해 보겠습니다.
긴 글 읽어주셔서 감사합니다.
글이 도움이 되셨다면 왼쪽 아래의 공감버튼과 광고 클릭 부탁드립니다. 고마움을 표현할 수 있는 가장 쉬운 방법입니다.