---
# System prepended metadata

title: GPS
tags: [NTURT, electrical_system, software]

---

# GPS
###### tags: `software` `electrical_system` `NTURT`

## Library

### GPSD

Install the gps deamon and client by

```bash=
sudo apt install gpsd gpsd-clinets
```

- Very handy command to checkout the received GPS singal: [cgps](https://www.systutorials.com/docs/linux/man/1-cgps/)
- Control the mode of a GPS: [gpctl](https://manpages.ubuntu.com/manpages/jammy/man1/gpsctl.1.html)

### C library

Install the library by

```bash=
sudo apt install libgps-dev
```

- Tutorial: [A Beginner’s Guide To Using gpsd (GPS Devices) In Linux](https://kickstartembedded.com/2022/07/23/a-beginners-guide-to-using-gpsd-in-linux/)
- GPS C library: [libgps manpage](https://manpages.ubuntu.com/manpages/jammy/man3/libgps.3.html)

### ROS / ROS2 GPS driver

:::warning
If you're only using this driver, the above libaries are unnecessary, but it's handly for checking out the received signal.
:::

:::warning
Though `gpsd` broadcast received GPS signal using tcp/ip on port 2947, the GNSS receiver (at least GN200 that we use) transmits on serial. So use **serial** mode when using ROS driver.
:::

- Tutorial: [ROS 學習筆記 – NMEA Driver](https://mapostech.com/ros-nmea-driver/)
- Github: [ros-drivers/nmea_navsat_driver](https://github.com/ros-drivers/nmea_navsat_driver/tree/ros2)

## Receiver

Currently, the GNSS receiver on our race car is [GN200](https://www.topgnss.com/product1/showproduct.php?id=39).
