JetsonTX2에서 ROS를 사용한 GPS 감지

6391 단어 GPSJetsonTX2ROS

환경



장치: JetsonTX2
Jetpack 버전: 3.2
ROS: 키네틱
OS: Ubuntu16.04
가속도 센서: BU-353-S4( htps //w w. Ida-japan. 이. jp/GPS/부 353-S4(우 SB). pdf )

GPS 연결



Jetson에 GPS를 연결합니다. USB 포트에 꽂는 것만.
연결되면 다음 명령으로 GPS가 인식되는지 확인합니다.

bash

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 17ef:6047 Lenovo 
Bus 001 Device 006: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 001 Device 004: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Tecnnology, Inc. PL2303 Serial Port가 표시되면 OK.
다음으로/dev 이하에서 시리얼 포트로서 인식되고 있는 것을 확인한다.

bash
$ ls /dev/ttyUSB*
/dev/ttyUSB0

이 경우 USB0로 인식되고 있는 것을 확인할 수 있다.

GPS에서 신호 확인



시리얼 포트에서 송수신을 수행하는 명령으로 확인합니다. 설치되어 있지 않으면 다음 명령으로 설치한다.
$ sudo apt-get install cu 

이하의 커맨드로 수신 데이터를 확인할 수 있다. 인수에는, 앞서 조사한 USB의 시리얼 포트를 지정해, 보 레이트는 GPS 모듈의 사양에 맞추어 4800으로 한다.
$ cu -s 4800 -l /dev/ttyUSB0
Connected.
$GPGGA,052923.037,,,,,0,00,,,M,0.0,M,,0000*5D
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,052923.037,V,,,,,,,301119,,,N*4D
$GPGGA,052924.037,,,,,0,00,,,M,0.0,M,,0000*5A
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,2,1,08,24,75,007,32,57,79,173,22,01,62,020,,11,58,045,*72
$GPGSV,2,2,08,25,26,185,,04,19,064,,23,13,054,,16,01,328,*7D
$GPRMC,052924.037,V,,,,,,,301119,,,N*4A
$GPGGA,052925.037,,,,,0,00,,,M,0.0,M,,0000*5B

상기와 같은 데이터를 수신할 수 있으면 OK.
정지하려면 "~"(칠다)를 친다.

ROS 패키지 도입



GPS 데이터를 수신하는 ROS 패키지 중에서 ROS 추천nmea_navsat_driver을 이용한다. 또한이 패키지를 사용하려면 nmea_msgs도 필요합니다.
설치에는 다음 명령을 실행합니다.
$ cd ~/catkin_ws/src
$ git clone https://github.com/ros-drivers/nmea_msgs.git
$ git clone https://github.com/ros-drivers/nmea_navsat_driver.git
$ cd ~/catkin_ws
$ catkin_make
$ source ~/catkin_ws/devel/setup.bash

GPS 로깅



센서값의 로깅에는 rosbag를 사용한다.
참고: h tps:// 퀵했다. 작은 m/srs/있어 MS/f6 그림 2c36996 그림 34b C4d73

실행 방법



첫 번째 터미널에서 roscore를 시작하고 두 번째 터미널에서 nmea_navsat_driver를 시작합니다. 세 번째 터미널에서는 rosbag 파일을 생성하여 로그를 출력합니다.

Tearminal1
$ roscore

Tearminal2
$ rosrun nmea_navsat_driver nmea_serial_driver

Tearminal3
$ cd catkin_ws
$ mkdir rosbag
$ cd rosbag
$ rosbag record -a -O test-gps

출력 결과 확인


$ rosbag info test-gps.bag 
path:        test-gps.bag
version:     2.0
duration:    2:27s (147s)
start:       Nov 30 2019 10:59:23.44 (1575079163.44)
end:         Nov 30 2019 11:01:50.50 (1575079310.50)
size:        80.2 KB
messages:    447
compression: none [1/1 chunks]
types:       geometry_msgs/TwistStamped [98d34b0043a2093cf9d9345ab6eef12e]
             rosgraph_msgs/Log          [acffd30cd6b6de30f120938c17c593fb]
             sensor_msgs/NavSatFix      [2d3a8cd499b9b4a0249fb98fd05cfa48]
             sensor_msgs/TimeReference  [fded64a0265108ba86c3d38fb11c0c16]
topics:      /fix              147 msgs    : sensor_msgs/NavSatFix     
             /rosout             6 msgs    : rosgraph_msgs/Log          (2 connections)
             /time_reference   147 msgs    : sensor_msgs/TimeReference 
             /vel              147 msgs    : geometry_msgs/TwistStamped

/fix가 위치 정보이다.

데이터 시각화



다음 명령을 실행하면 다음과 같은 창이 나타납니다. 세로로 rosbag에 들어있는 ROS 화제가 어쨌든, 파란 수직선은 그 시간에 publish되었다는 것을 보여준다.
$ rqt_bag test-gps.bag


각 주제를 마우스 오른쪽 버튼으로 클릭하고 view->plot을 선택하면 그래프를 볼 수 있습니다. 이제 각 데이터를 비교할 수 있습니다.

CSV 출력



다음 명령을 실행하여 가속도 데이터, 속도, 회전 각도 등의 로그를 CSV 파일로 출력
할 수 있다.
rostopic echo -b test-gps.bag -p /fix > test-gps-data-raw.csv

CSV에서 그래프를 작성해 보았다. 다음과 같이 GPS에서의 위치 정보를 플롯할 수 있다.


기타



로깅 중 컴퓨터 종료 및 로그 데이터 복원 방법

좋은 웹페이지 즐겨찾기