본문 바로가기
Autonomous Vehicle/ROS programming

ROS에서 UART 통신하기 (아두이노, GPS)

by kim.jeff 2021. 2. 5.

 

ROS에서 UART 통신하기 (아두이노, GPS)

 

Communication through UART(Universal Asynchronous receiver/transmitter) In ROS

 


아두이노와 같은 MCU의 경우 Uart 통신을 많이 이용하곤 한다. 많은 센서들 또한 UART 지원하여 편리하게 서로 이어줄 수 있는데, ROS의 경우엔 따로 패키지를 설치해주어야 통신을 지원한다. GNSS 장치에서 지원하는 uart와 uart to usb 를 통해 ubuntu PC에서 정보를 받을 수 있도록 하는 시스템을 어떻게 구성했는지 확인하고 설치 과정을 기록해 보도록 하겠습니다.

 

1. 시리얼통신 패키지 설치하기

$ sudo apt-get install ros-kinetic-serial

2. catkin_ws/src 에서 폴더 생성하기

$ cd /catkin_ws/src/
$ mkdir serial-example

3. 예제코드 다운로드받기 

serial 라이브러리를 이용해 ROS에서 시리얼 데이터 수신을 구현한 예제들을 다운받습니다.

https://github.com/garyservin/serial-example

 

garyservin/serial-example

Simple use of http://wjwwood.io/serial/ library with ROS - garyservin/serial-example

github.com

$ git clone https://github.com/garyservin/serial-example.git

4. 우분투에서 USB연결되어있는 포트 확인하기

$ dmesg | grep tty

5. serial-example/src 폴더의 serial_example_node.cpp에서 설정값 수정하기 (보드레이트, 포트)

ser.setPort("/dev/ttyACM0"); // USB0로 바꿔주기
ser.setBaudrate(9600);

6. 빌드하기

$ cm

7. 권한 설정하기

$ sudo chmod 766 /dev/ttyUSB0

 

8. 데이터 Publish 하는 노드 실행하기

$ roscore  
$ rosrun serial_example serial_example_node  

$ rostopic list

다음의 명령어로 전송되고 있는 토픽을 확인해볼 수 있습니다.

 

하드웨어 구성은 다음과 같습니다.

 


출처

enssionaut.com/board_robotics/906

 

로봇 - ROS(Robot Operating System) 개념과 활용 - 4. ROS node를 이용하여 direct serial 통신하기

ROS 노드들은 TCP/IP 프로토콜의 메시지 통신을 기반으로 데이터를 주고 받습니다. 하지만 대다수의 센서들과 MCU의 통신은 일반적인 serial 프로토콜을 이용해 통신을 하는 경우가 많습니다. 여러

enssionaut.com