본문으로 건너뛰기

MG-G01 GPS

MG-G01 GPS를 ROS 2에 연결하고 ublox_gps_node가 발행하는 /fix 토픽으로 위치 데이터를 확인합니다.

참고 자료

이 실습은 KumarRobotics ublox를 기반으로 배포되는 ros-jazzy-ublox-gps 패키지를 사용합니다.

준비물

  • Ubuntu 24.04와 ROS 2 Jazzy가 설치된 PC
  • MG-G01 GPS 모듈
  • GPS 신호를 수신할 수 있는 실외 공간 또는 창가

드라이버 설치

Jazzy용 바이너리 패키지를 설치합니다.

$ sudo apt update
$ sudo apt install -y ros-jazzy-ublox-gps

시리얼 포트 권한 설정

GPS를 연결한 뒤 시리얼 장치 이름을 확인합니다.

$ ls /dev/ttyACM*

/dev/ttyACM0처럼 표시됩니다.

일반 사용자가 시리얼 포트를 사용할 수 있도록 현재 사용자를 dialout 그룹에 추가합니다.

$ sudo usermod -aG dialout $USER
경고

그룹 권한은 로그아웃 후 다시 로그인해야 적용됩니다. PC를 재부팅해도 됩니다. 다시 로그인한 뒤 groups 명령어 결과에 dialout이 있는지 확인하세요.

설정 파일 작성

MG-G01 실습에 사용할 설정 파일을 만듭니다.

$ mkdir -p ~/ublox_config
$ nano ~/ublox_config/mg_g01.yaml

아래 내용을 입력합니다. deviceuart1.baudrate는 앞에서 확인한 장치 경로와 실제 통신 속도에 맞게 수정합니다.

~/ublox_config/mg_g01.yaml
ublox_gps_node:
ros__parameters:
debug: 0
device: /dev/ttyACM0
frame_id: gps_link
rate: 1.0
nav_rate: 1
dynamic_model: portable
fix_mode: auto
uart1:
baudrate: 9600
config_on_startup: false
inf:
all: true
publish:
all: false

GPS 실행

설정 파일을 지정해 ublox_gps_node를 실행합니다.

$ ros2 run ublox_gps ublox_gps_node --ros-args \
--params-file ~/ublox_config/mg_g01.yaml

새 터미널에서 위치 토픽을 확인합니다.

$ ros2 topic list
/diagnostics
/fix
/fix_velocity
/parameter_events
/rosout

$ ros2 topic echo /fix --once
header:
stamp:
sec: 1783927772
nanosec: 29167069
frame_id: gps_link
status:
status: 0
service: 1
latitude: 35.836977499999996
longitude: 128.4846042
altitude: 78.142
# (생략)

$ ros2 topic echo /fix_velocity --once
header:
stamp:
sec: 1783927788
nanosec: 29940151
frame_id: gps_link
twist:
twist:
linear:
x: -0.003
y: -0.012
z: -0.003
angular:
x: 0.0
y: 0.0
z: 0.0
# (생략)

드라이버는 주로 다음 토픽을 발행합니다.

  • /fix: 위도, 경도, 고도, 위치 공분산
  • /fix_velocity: GPS 기반 속도

실습 확인 포인트

  • 실내에서는 위성 신호가 약해 status.status가 음수로 표시될 수 있습니다.
  • 처음 전원을 켠 뒤 위치가 안정될 때까지 시간이 걸릴 수 있습니다.
  • 위도와 경도가 0.0으로 유지되면 안테나 방향, 실외 수신 환경, 장치 경로, 통신 속도를 확인합니다.