mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-01-03 06:28:27 -04:00
Rover : log multiple rangefinder instances in DPTH message
This makes log_dpth method to log multiple instances of rangefinder Co-Authored-By: Josh Henderson <69225461+hendjoshsr71@users.noreply.github.com>
This commit is contained in:
parent
9a29f2558c
commit
6faa586dec
@ -38,8 +38,8 @@ void Rover::Log_Write_Attitude()
|
|||||||
// Write a range finder depth message
|
// Write a range finder depth message
|
||||||
void Rover::Log_Write_Depth()
|
void Rover::Log_Write_Depth()
|
||||||
{
|
{
|
||||||
// only log depth on boats with working downward facing range finders
|
// only log depth on boats
|
||||||
if (!rover.is_boat() || !rangefinder.has_data_orient(ROTATION_PITCH_270)) {
|
if (!rover.is_boat() || !rangefinder.has_orientation(ROTATION_PITCH_270)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -47,35 +47,43 @@ void Rover::Log_Write_Depth()
|
|||||||
Location loc;
|
Location loc;
|
||||||
IGNORE_RETURN(ahrs.get_position(loc));
|
IGNORE_RETURN(ahrs.get_position(loc));
|
||||||
|
|
||||||
// check if new sensor reading has arrived
|
for (uint8_t i=0; i<rangefinder.num_sensors(); i++) {
|
||||||
uint32_t reading_ms = rangefinder.last_reading_ms(ROTATION_PITCH_270);
|
const AP_RangeFinder_Backend *s = rangefinder.get_backend(i);
|
||||||
if (reading_ms == rangefinder_last_reading_ms) {
|
|
||||||
return;
|
if (s == nullptr || s->orientation() != ROTATION_PITCH_270 || !s->has_data()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if new sensor reading has arrived
|
||||||
|
const uint32_t reading_ms = s->last_reading_ms();
|
||||||
|
if (reading_ms == rangefinder_last_reading_ms[i]) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
rangefinder_last_reading_ms[i] = reading_ms;
|
||||||
|
|
||||||
|
float temp_C;
|
||||||
|
if (!s->get_temp(temp_C)) {
|
||||||
|
temp_C = 0.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
// @LoggerMessage: DPTH
|
||||||
|
// @Description: Depth messages on boats with downwards facing range finder
|
||||||
|
// @Field: TimeUS: Time since system startup
|
||||||
|
// @Field: Inst: Instance
|
||||||
|
// @Field: Lat: Latitude
|
||||||
|
// @Field: Lng: Longitude
|
||||||
|
// @Field: Depth: Depth as detected by the sensor
|
||||||
|
// @Field: Temp: Temperature
|
||||||
|
|
||||||
|
logger.Write("DPTH", "TimeUS,Inst,Lat,Lng,Depth,Temp",
|
||||||
|
"s#DUmO", "F-GG00", "QBLLff",
|
||||||
|
AP_HAL::micros64(),
|
||||||
|
i,
|
||||||
|
loc.lat,
|
||||||
|
loc.lng,
|
||||||
|
(double)(s->distance_cm() * 0.01f),
|
||||||
|
temp_C);
|
||||||
}
|
}
|
||||||
rangefinder_last_reading_ms = reading_ms;
|
|
||||||
|
|
||||||
// get temperature
|
|
||||||
float temp_C;
|
|
||||||
if (!rangefinder.get_temp(ROTATION_PITCH_270, temp_C)) {
|
|
||||||
temp_C = 0.0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
// @LoggerMessage: DPTH
|
|
||||||
// @Description: Depth messages on boats with downwards facing range finder
|
|
||||||
// @Field: TimeUS: Time since system startup
|
|
||||||
// @Field: Lat: Latitude
|
|
||||||
// @Field: Lng: Longitude
|
|
||||||
// @Field: Depth: Depth as detected by the sensor
|
|
||||||
// @Field: Temp: Temperature
|
|
||||||
|
|
||||||
logger.Write("DPTH", "TimeUS,Lat,Lng,Depth,Temp",
|
|
||||||
"sDUmO", "FGG00", "QLLff",
|
|
||||||
AP_HAL::micros64(),
|
|
||||||
loc.lat,
|
|
||||||
loc.lng,
|
|
||||||
(double)(rangefinder.distance_cm_orient(ROTATION_PITCH_270) * 0.01f),
|
|
||||||
temp_C);
|
|
||||||
|
|
||||||
// send water depth and temp to ground station
|
// send water depth and temp to ground station
|
||||||
gcs().send_message(MSG_WATER_DEPTH);
|
gcs().send_message(MSG_WATER_DEPTH);
|
||||||
}
|
}
|
||||||
|
@ -216,8 +216,8 @@ private:
|
|||||||
// true if we have a position estimate from AHRS
|
// true if we have a position estimate from AHRS
|
||||||
bool have_position;
|
bool have_position;
|
||||||
|
|
||||||
// range finder last update (used for DPTH logging)
|
// range finder last update for each instance (used for DPTH logging)
|
||||||
uint32_t rangefinder_last_reading_ms;
|
uint32_t rangefinder_last_reading_ms[RANGEFINDER_MAX_INSTANCES];
|
||||||
|
|
||||||
// Ground speed
|
// Ground speed
|
||||||
// The amount current ground speed is below min ground speed. meters per second
|
// The amount current ground speed is below min ground speed. meters per second
|
||||||
|
Loading…
Reference in New Issue
Block a user