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
아래 내용을 입력합니다. device와 uart1.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으로 유지되면 안테나 방향, 실외 수신 환경, 장치 경로, 통신 속도를 확인합니다.