Responsibility of the GPSINS Server
This server talks to the GPS receiver, Inertial sensors and Odometry system and provides accurate and updated body positions and angles estimates. At best, body position is accurate up to decimeter level accuracy, while body angles are accurate up to 2 or 3 degrees.
Hardware and Services
GPS Receiver: Novatel Propak LB
IMU: Xbow AHRS 400CB-200
Additional: Omnistar High Performance (HP) subscription
The figure below shows how the GPSINS server fits into the rest of the system. In the figure, an arrow goes from a client and points at a server if it requests data from the server, blue boxes are clients or servers while grey entities are hardware.
We had plans for the a yaw gyro to augment the heading readings but in the end Crossbow was not able to provide it. It can be seen that the Speed Server and Move Client are clients that request for data from the GPSINS server while the GPSINS server requests for odometry data from the METER server.
Design and Implementation
More elaboration of the following can be found in the report linked from the References Section below.
The source can be found in the overbot cvs source tree at sandbox/gc/src/qnx/nav/gpsins/
The program man page can be found in sandbox/gc/doc/manuals/
Angular rates and euler angles(Roll, Pitch, Yaw) of the body is taken directly from the AHRS which already has kalman filtered angles at 60hz.
When GPS signal is present, the GPS receiver produces 20 hz of accurate data. With Omnistar HP, this can be accurate down to 10 cm.
Using an Extended Kalman Filter (refer to Report linked off the References Section below), the position estimation is given at 60hz by incorporate data from both sources.
The same filter is meant to incorporate the data from the odometry (see future work section below) server with the AHRS data when there is no GPS signal to provide the abstraction of 60hz position estimation.
Testing has only been done off the vehicle so far. To aid the testing and visualization of the position and angle data, a gui has been developed. Its source can be found at sandbox/gc/src/qnx/nav/gpsins_gui. The program man page can be found in sandbox/gc/doc/manuals/
Current Status and Further Work
A slightly older summary of how the GPSINS server works can be found in this report which I submitted as my Stanford University EE391 class report.