dGPS with RobotC: Issue with Navigation Functionality

I’m starting a new thread on this since it’s a different topic from my previous NXT-G question.

When I run the following code in RobotC 3.62 on my NXT brick with a recently-purchased dGPS, I get correct Lat/Lons out of the dGPS, but no matter what I enter for destination points (DGPSsetDestination), I get bogus data out for angle and distance to destination. The same sensor works fine with NXT-G using the same destination data. Using the latest dexterind-gps.h 133 2013-03-10 include file.

Any ideas?

#pragma config(Sensor, S2, DGPS, sensorI2CCustom)
//!!Code automatically generated by ‘ROBOTC’ configuration wizard !!//

/*

  • Id: dexterind-gps-test1.c 133 2013-03-10 15:15:38Z xander
    */

/**

  • dexterind-gps.h provides an API for the Dexter Industries GPS Sensor. This program

  • demonstrates how to use that API.

  • Changelog:

    • 0.1: Initial release
    • 0.2: Removed common.h from includes
  • Credits:

    • Big thanks to Dexter Industries for providing me with the hardware necessary to write and test this.
  • License: You may use this code as you wish, provided you give credit where it’s due.

  • THIS CODE WILL ONLY WORK WITH ROBOTC VERSION 3.59 AND HIGHER.

  • Xander Soldaat (xander_at_botbench.com)

  • 20 February 2011

  • version 0.2
    */

#include “drivers/dexterind-gps.h”

task main () {

long longitude = 0;
long latitude = 0;
long utc = 0;
bool linkstatus = false;
bool destination = false;
int dest_heading = 0;
int dest_distance = 0;
long lat_destination = 26203967;
long lon_destination = 50613246;
//long lat_destination = 0;
//long lon_destination = 0;

nxtDisplayCenteredTextLine(0, “Dexter Ind.”);
nxtDisplayCenteredBigTextLine(1, “GPS”);
nxtDisplayCenteredTextLine(3, “Test 1”);
nxtDisplayCenteredTextLine(5, “Connect sensor”);
nxtDisplayCenteredTextLine(6, “to S1”);
wait1Msec(2000);
eraseDisplay();

while (true) {

// Read the sensor’s data

DGPSsetDestination(DGPS, lat_destination, lon_destination);

utc = DGPSreadUTC(DGPS);
longitude = DGPSreadLongitude(DGPS);
latitude = DGPSreadLatitude(DGPS);
linkstatus = DGPSreadStatus(DGPS);
  dest_heading = DGPSreadRelHeading(DGPS);
//dest_heading = DGPSreadVelocity(DGPS);
	dest_distance = DGPSreadDistToDestination(DGPS);

nxtDisplayTextLine(2, "UTC: %d", utc);
nxtDisplayTextLine(3, "Lon: %d", longitude);
nxtDisplayTextLine(4, "Lat: %d", latitude);

nxtDisplayTextLine(5, "Head: %d", dest_heading);
nxtDisplayTextLine(6, "Dist: %d", dest_distance);
nxtDisplayTextLine(7, "Bool: %d", destination);

wait1Msec(500);

}
}

/*

  • Id: dexterind-gps-test1.c 133 2013-03-10 15:15:38Z xander
    */

Update: I verified the same behavior in RobotC 4.27. The reported angle to destination and distance to destination look like the values for a (0,0) destination, not the point I’m sending via the DGPSsetDestination command.

I know the third party drivers aren’t your responsibility, but you do advertise RobotC compatibility for the dGPS. Can you try to verify this problem and see if there’s something simple I’m doing wrong?

Excellent, thank you very much for letting us know!

Bottom Line: dGPS should not be polled more frequently than 1 time per second.

I’m sorry for the trouble, but glad we got to the bottom of this.