ROS 에서 Ublox F9p 모듈, RTK(NTRIP, RTCM) 사용
ROS

ROS 에서 Ublox F9p 모듈, RTK(NTRIP, RTCM) 사용

이 글은 ublox의 C099-F9P application board를 기준으로 사용/설명되어 있습니다.

 

처음 보드를 사용하면 기본값으로 1Hz의 주기로 측위정보가 들어오도록 설정되어 있다.

이 설정을 바꾸기 위해 여기에서 u-center라는 프로그램을 다운받아 설치한 후

아래의 과정을 통해 메뉴얼 상의 주기인 8Hz로 변경하였다.

Configuration view를 켜고,

RATE 설정으로 이동하여 Measurement Period를 125ms로 설정하여 Frequency가 8Hz가 되도록 맞추었다.

 

이제 ROS에서 사용하기 위해 드라이버를 받아야 한다.

1.https://github.com/KumarRobotics/ublox

ROS wiki에서 나오는 ublox 기본 드라이버 패키지

(해당 패키지로는 ROS에서 RTK(ntrip)을 사용하는 것이 힘들다고 판단)

그래서 아래 두 패키지를 사용하기로 했다

1.https://github.com/ros-agriculture/ublox_f9p

 

ros-agriculture/ublox_f9p

ROS driver for ublox ZED-F9P receiver. Contribute to ros-agriculture/ublox_f9p development by creating an account on GitHub.

github.com

이 패키지로 ROS와 Ublox모듈이 통신할 수 있게 된다. 물론 여기까지만 해도 topic을 통해 위도, 경도가 수신됨을 확인할 수 있다. 하지만, 더 정확한 위치를 얻기 위해 아래의 패키지를 추가로 설치하고 NTRIP정보를 수신한다.

 

 

2.https://github.com/ros-agriculture/ntrip_ros

 

ros-agriculture/ntrip_ros

NTRIP client, imports RTCM streams to ROS. Contribute to ros-agriculture/ntrip_ros development by creating an account on GitHub.

github.com

(추가: 해당 패키지의 launch파일 내에서 "rtcm_topic"의 value를 "/ublox_gps/rtcm" 으로 변경 후, 정보를 받아올 서버/ID/PW/위성기준점(mountpoint) 등을 모두 지정해 주어야 한다. 연결할 서버의 프로토콜 version 에 따라 통신에 실패할 수 있으니 여러 서버를 시도해 보길 권한다. 필자는 서울시 GNSS 측위서비스를 이용하였고, 국토정보플랫폼, GNSS 데이터 통합센터 등을 이용하여도 된다. 당연하지만, 측위할 곳과 가장 가까운 위성기준점을 선정해야 더 정확한 값을 얻을 수 있을 것이다.)

 

이 두번째 패키지로 인터넷에서 RTCM정보를 받아와 topic으로 뿌려준다.  그러면 위의 ublox_f9 패키지가 이 topic을 subscribe하여 측위정보 보정에 이용하게 된다. 여기까지 진행했다면 RTK가 켜지게 되는데, RTK가 켜졌는지는 보드의 RTK글씨 옆에 있는 노란 LED가 깜빡이는지(또는 켜져있는지) 확인하면 된다.

점멸 여부는 Fixed mode가 적용되었는지를 나타내는 것으로, 이에 대한 내용은 manual에 설명되어 있다.