NAV-SOL gps message handling

This commit is contained in:
Pascal Brisset
2007-05-25 10:08:55 +00:00
parent 2fa4abd640
commit c8fde7e920
9 changed files with 60 additions and 10 deletions
+2 -6
View File
@@ -37,11 +37,11 @@
</block>
<block name="eight 1">
<eight radius="75" center="1" turn_around="2"/>
<eight radius="nav_radius" center="1" turn_around="2"/>
</block>
<block name="oval" strip_button="Oval">
<oval p1="1" p2="2" radius="80"/>
<oval p1="1" p2="2" radius="nav_radius"/>
</block>
<block name="MOB" strip_button="MOB">
@@ -53,10 +53,6 @@
<circle radius="75" wp="1" pitch="auto" throttle="0.7"/>
</block>
<block name="circle left 1">
<circle radius="-75" wp="1"/>
</block>
<block name="climb 75">
<circle radius="50+(estimator_z-ground_alt)/2" wp="1" throttle="0.75" pitch="0.3" vmode="throttle" until="10 > PowerVoltage()"/>
</block>
+7
View File
@@ -113,6 +113,13 @@
<field name="desired_climb" type="float" format="%.1f"></field>
</message>
<message name="GPS_SOL" ID="17">
<field name="Pacc" type="uint32"/>
<field name="Sacc" type="uint32"/>
<field name="PDOP" type="uint16"/>
<field name="numSV" type="uint8"/>
</message>
<message name="CAM" ID="20">
<field name="phi" type="int8" unit="deg"/>
<field name="theta" type="int8" unit="deg"/>
+2 -2
View File
@@ -64,8 +64,8 @@
</dl_setting>
<dl_setting MAX="-0.005" MIN="-0.1" STEP="0.005" VAR="v_ctl_auto_throttle_pgain" shortname="throttle_pgain"/>
<dl_setting MAX="1" MIN="0.05" STEP="0.05" VAR="v_ctl_auto_throttle_igain" shortname="throttle_igain"/>
<dl_setting MAX="0.00" MIN="-0.05" STEP="0.005" VAR="v_ctl_auto_throttle_pgain" shortname="throttle_pgain"/>
<dl_setting MAX="1" MIN="0.0" STEP="0.05" VAR="v_ctl_auto_throttle_igain" shortname="throttle_igain"/>
<dl_setting MAX="0" MIN="-4000" STEP="100" VAR="v_ctl_auto_throttle_dash_trim" shortname="dash trim"/>
<dl_setting MIN="0" MAX="3000" STEP="100" VAR="v_ctl_auto_throttle_loiter_trim" shortname="loiter trim"/>
<dl_setting MAX="1" MIN="0" STEP="0.01" VAR="v_ctl_auto_throttle_climb_throttle_increment" shortname="throttle_incr"/>
+1
View File
@@ -25,6 +25,7 @@
<message name="GYRO_RATES" period="1"/>
<message name="SURVEY" period="2"/>
<message name="ESTIMATOR" period="0.5"/>
<message name="GPS_SOL" period="2"/>
</mode>
<mode name="debug">
<message name="CALIB_START" period="0.5"/>
+31
View File
@@ -15,6 +15,37 @@
<field name="Vacc" format="U4" unit="mm"/>
</message>
<message name="DOP" ID="0x04" length="18">
<field name="ITOW" format="U4" unit="ms"/>
<field name="GDOP" format="U2"/>
<field name="PDOP" format="U2"/>
<field name="TDOP" format="U2"/>
<field name="VDOP" format="U2"/>
<field name="HDOP" format="U2"/>
<field name="NDOP" format="U2"/>
<field name="EDOP" format="U2"/>
</message>
<message name="SOL" ID="0x06" length="52">
<field name="ITOW" format="U4" unit="ms"/>
<field name="Frac" format="I4" unit="ns"/>
<field name="week" format="I2"/>
<field name="GPSfix" format="U1"/>
<field name="Flags" format="U1"/>
<field name="ECEF_X" format="I4" unit="cm"/>
<field name="ECEF_Y" format="I4" unit="cm"/>
<field name="ECEF_Z" format="I4" unit="cm"/>
<field name="Pacc" format="U4"/>
<field name="ECEFVX" format="I4" unit="cm/s"/>
<field name="ECEFVY" format="I4" unit="cm/s"/>
<field name="ECEFVZ" format="I4" unit="cm/s"/>
<field name="Sacc" format="U4"/>
<field name="PDOP" format="U2"/>
<field name="res1" format="U1"/>
<field name="numSV" format="U1"/>
<field name="res2" format="U4"/>
</message>
<message name="POSUTM" ID="0x08" length="18">
<field name="ITOW" format="U4" unit="ms"/>
<field name="EAST" format="I4" unit="cm"/>
+4
View File
@@ -171,5 +171,9 @@
#define PERIODIC_SEND_TUNE_ROLL() DOWNLINK_SEND_TUNE_ROLL(&estimator_p,&estimator_phi, &h_ctl_roll_setpoint);
#ifdef GPS
#define PERIODIC_SEND_GPS_SOL() DOWNLINK_SEND_GPS_SOL(&gps_Pacc, &gps_Sacc, &gps_PDOP, &gps_numSV)
#endif
#endif /* AP_DOWNLINK_H */
-2
View File
@@ -61,7 +61,6 @@ void enose_periodic( void ) {
enose_conf_requested = FALSE;
}
else if (enose_status == ENOSE_IDLE) {
LED_OFF(2);
enose_status = ENOSE_MEASURING_WR;
const uint8_t msg[] = { ENOSE_DATA_ADDR };
memcpy(i2c_buf, msg, sizeof(msg));
@@ -74,7 +73,6 @@ void enose_periodic( void ) {
enose_i2c_done = FALSE;
}
else if (enose_status == ENOSE_MEASURING_RD) {
LED_ON(2);
enose_val[0] = (i2c_buf[0]<<8) | i2c_buf[1];
enose_val[1] = (i2c_buf[2]<<8) | i2c_buf[3];
enose_val[2] = (i2c_buf[4]<<8) | i2c_buf[5];
+4
View File
@@ -52,6 +52,10 @@ extern int16_t gps_course; /* decideg */
extern int32_t gps_utm_east, gps_utm_north; /** cm */
extern uint8_t gps_utm_zone;
extern int32_t gps_lat, gps_lon; /* 1e7 deg */
extern uint16_t gps_PDOP;
extern uint32_t gps_Pacc, gps_Sacc;
extern uint8_t gps_numSV;
extern uint16_t last_gps_msg_t; /** cputime of the last gps message */
+9
View File
@@ -75,6 +75,10 @@ bool_t gps_pos_available;
uint8_t ubx_id, ubx_class;
int32_t gps_lat, gps_lon;
uint16_t gps_PDOP;
uint32_t gps_Pacc, gps_Sacc;
uint8_t gps_numSV;
#define UTM_HEM_NORTH 0
#define UTM_HEM_SOUTH 1
@@ -159,6 +163,11 @@ void parse_gps_msg( void ) {
gps_itow = UBX_NAV_VELNED_ITOW(ubx_msg_buf);
gps_pos_available = TRUE; /* The 3 UBX messages are sent in one rafale */
} else if (ubx_id == UBX_NAV_SOL_ID) {
gps_PDOP = UBX_NAV_SOL_PDOP(ubx_msg_buf);
gps_Pacc = UBX_NAV_SOL_Pacc(ubx_msg_buf);
gps_Sacc = UBX_NAV_SOL_Sacc(ubx_msg_buf);
gps_numSV = UBX_NAV_SOL_numSV(ubx_msg_buf);
} else if (ubx_id == UBX_NAV_SVINFO_ID) {
gps_nb_channels = UBX_NAV_SVINFO_NCH(ubx_msg_buf);
uint8_t i;