GPS
Moxom's Master has a NavCom SF-2050M GPS ( datasheet, user guide, other docs), which theoretically provides 10 cm accuracy when used with the NavCom corrections service. Precise Path, who donated it, report that we can expect more like several feet of accuracy in the real world, which should be sufficient for the navigation challenge.
Previously we used the Garmin "16x HVS 010-00258-63" (datasheet), which costs $110. It is intended for nautical use. It supports Coast Guard DGPS corrections and sports an RS-232 interface.
Interfacing with ROS
There is a third-party ROS package called gpsd_client which relays data from the GPS into ROS. Details on installation and testing are found in this tutorial. The package should be installed under ~/ros-stacks instead of the directory that the tutorial suggests, so that the user has full read/write permissions. Compile the package using:
$ rosmake --rosdep-install
GPSd
We use a Linux utility called GPSd to interface with the GPS; this means that we don't need to mess with tedium like parsing the NMEA messages used to communicate. Under Ubuntu the GPSd daemon isn't automatically started when you install it because it must first be configured with the serial and/or USB interfaces to communicate on. To do this configuration run the following command:
sudo dpkg-reconfigure gpsd
Specify the option -n so that GPSd connects to the GPS and attempts to get a fix before our software does; this should decrease start-up time.
Troubleshooting
View streaming data
Run this command:
python /usr/lib/pymodules/python2.6/gps/gps.py
Checking for a GPS
First, check whether GPSd has discovered anything on the interface on which it's listening with the gpsctl utility:
moore@moore:~$ gpsctl gpsctl: gpsctl: /dev/ttyS2 identified as Garmin Serial binary at 9600
This example shows the Garmin 16x GPS (the black dome). The Navcom GPS looks like this:
rhrt@moxoms-master:~$ gpsctl gpsctl: /dev/ttyS2 identified as at 57600
If no GPS is connected it will look like this:
moore@moore:~$ gpsctl gpsctl: gpsctl: /dev/ttyS2 identified as (null) at 9600
However, if the GPS has become disconnected since it was successfully identified by GPSd the identification may stick around. You can clear GPSd's memory by restarting it with sudo service gpsd restart.
Debugging
To debug things, run gpsd -n -N -D 1 /dev/ttyS2 (you'll need to stop the background daemon first if it's running with sudo service gpsd stop. There should be a significant amount of chatter printed as GPSd determines what type of GPS it is connected to, such as:
moore@moore:~$ gpsd -n -N -D 1 /dev/ttyS2 gpsd: garmin_gps not active. gpsd: => Probing device subtype 0 gpsd: GPGSV field 3 value of 10 != actual count 2 gpsd: => Probing device subtype 1 gpsd: => Probing device subtype 2 gpsd: unknown sentence: "$PGRMT,GPS 16x-HVS software ver. 2.90,,,,,,,,*7E\x0d\x0a"
There will be more if it can actually get a fix. If you increase the debug level (-D 1) it will be more obvious whether there is actually anything going on -- at -D 1 a GPS that isn't present looks much like a GPS that is. For reference, the messages are as follows when a GPS is not connected (note that the debug level has been set to 4):
moore@moore:~$ gpsd /dev/ttyS2 -n -N -D 4 gpsd: launching (Version 2.38) gpsd: listening on port gpsd gpsd: Unable to start ntpshm. gpsd must run as root. gpsd: successfully connected to the DBUS system bus gpsd: running with effective group ID 1000 gpsd: running with effective user ID 1000 gpsd: opening GPS data source at '/dev/ttyS2' gpsd: speed 9600, 8N1 gpsd: => GPS: $PASHQ,RID*28\x0d gpsd: => GPS: 0299661c0800040200001203 gpsd: Navcom: sent command 0x1c (Test Support Block) gpsd: Navcom: command 0x1c mode = 02, length = 0 gpsd: => GPS: 029966200e000001ae02000071000000f203 gpsd: Navcom: sent command 0x20 (Data Request) - data block id = ae at rate 00 gpsd: => GPS: 029966200e00000186020a0071000000d003 gpsd: Navcom: sent command 0x20 (Data Request) - data block id = 86 at rate 0a gpsd: garmin_gps not active. gpsd: no probe matched... gpsd: gpsd_activate(1): opened GPS (5)
To see a plot of the fixes the GPS is getting, use this command (you'll need the gnuplot-x11 installed):
gpsprof | gnuplot -persist
See the gpsprof man page for more information.
Background Information
In order to accurately determine the robot's position, as well as navigate to specific waypoints in the navigation challenge, we need a GPS; preferable one that will provide accuracy <1m. Generally, two ways of obtaining this kind of accuracy are DGPS and RTK (a decent summary).
RTK equipment is likely to be very expensive, especially because it requires a base station as well as the unit on the robot. This is very likely to exceed our allocated budget of $500. However, it would provide us with about 1cm accuracy.
DGPS is the less expensive option, but it is also less precise. There are many correction signals being broadcast for DGPS, the most widespread of which is WAAS. Ideally, WAAS could provide up to 0.9m resolution. WAAS has coverage across the US. Another correction signal is NDGPS provided by the US Coast Guard. Unlike WAAS, this is not nationwide, but it has excellent coverage at the location of the competition.
We should look into GPS receivers which could make use of these correction signals, and also check to see if any receivers support corrections from both systems.
Here's a relatively cheap GPS which would provide <3m resolution: Garmin GPS 15H. While not ideal, it's cheap and also has a corrections input, so we could play with using two correction signals to try to improve accuracy (admittedly, I don't know how well that would work). Also, <3m accuracy may be sufficient. We have at least one other sensor capable of positioning on the robot now (the accelerometer), and will likely be adding wheel encoders as well. By combining these with a Kalman filter, we could potentially get pretty decent accuracy.
Attachments
-
om-20000053.pdf
(6.6 MB) - added by hulettbh
3 years ago.
Novatel OEM3 GPS manual
-
CommandDescManual.pdf
(9.4 MB) - added by hulettbh
3 years ago.
-
InstallationOperatingManual.pdf
(0.5 MB) - added by hulettbh
3 years ago.
-
PowerPakManual.pdf
(0.7 MB) - added by hulettbh
3 years ago.

