From 379075d29ce5710c9e97b4ec41772302b84a7035 Mon Sep 17 00:00:00 2001 From: Mark Charlebois Date: Mon, 25 May 2015 23:20:19 -0700 Subject: [PATCH 01/17] POSIX: Increased number of devmap entries The orb_advertise and/or orb_publish calls were failing because there were not enough devmap entries allocated for all the orb topics advertised. The number of entries was increased from 50 to 100. Signed-off-by: Mark Charlebois --- src/drivers/device/vdev.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/drivers/device/vdev.cpp b/src/drivers/device/vdev.cpp index 8ff8ae1fc8..3e3c02a939 100644 --- a/src/drivers/device/vdev.cpp +++ b/src/drivers/device/vdev.cpp @@ -64,7 +64,7 @@ private: px4_dev_t() {} }; -#define PX4_MAX_DEV 50 +#define PX4_MAX_DEV 100 static px4_dev_t *devmap[PX4_MAX_DEV]; /* From 79e084a154c3b4d945fb00d85fc2307667f9ae2f Mon Sep 17 00:00:00 2001 From: TSC21 Date: Tue, 26 May 2015 18:05:26 +0100 Subject: [PATCH 02/17] drivers: added validity check --- src/drivers/ll40ls/ll40ls.cpp | 2 ++ src/drivers/mb12xx/mb12xx.cpp | 4 ++++ src/drivers/trone/trone.cpp | 10 ++++++++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/drivers/ll40ls/ll40ls.cpp b/src/drivers/ll40ls/ll40ls.cpp index 8984220625..d806638788 100644 --- a/src/drivers/ll40ls/ll40ls.cpp +++ b/src/drivers/ll40ls/ll40ls.cpp @@ -295,6 +295,8 @@ test(const bool use_i2c, const int bus) } warnx("periodic read %u", i); + warnx("valid %u", (float)report.current_distance > report.min_distance + && (float)report.current_distance < report.max_distance ? 1 : 0); warnx("measurement: %0.3f m", (double)report.current_distance); warnx("time: %lld", report.timestamp); } diff --git a/src/drivers/mb12xx/mb12xx.cpp b/src/drivers/mb12xx/mb12xx.cpp index afeb8e5545..ec07399f54 100644 --- a/src/drivers/mb12xx/mb12xx.cpp +++ b/src/drivers/mb12xx/mb12xx.cpp @@ -832,6 +832,7 @@ test() } warnx("single read"); + warnx("measurement: %0.2f m", (double)report.current_distance); warnx("time: %llu", report.timestamp); /* start the sensor polling at 2Hz */ @@ -860,6 +861,9 @@ test() } warnx("periodic read %u", i); + warnx("valid %u", (float)report.current_distance > report.min_distance + && (float)report.current_distance < report.max_distance ? 1 : 0); + warnx("measurement: %0.3f", (double)report.current_distance); warnx("time: %llu", report.timestamp); } diff --git a/src/drivers/trone/trone.cpp b/src/drivers/trone/trone.cpp index 23e52547a1..6150cc90e2 100644 --- a/src/drivers/trone/trone.cpp +++ b/src/drivers/trone/trone.cpp @@ -125,6 +125,7 @@ private: work_s _work; ringbuffer::RingBuffer *_reports; bool _sensor_ok; + uint8_t _valid; int _measure_ticks; bool _collect_phase; int _class_instance; @@ -211,7 +212,7 @@ static const uint8_t crc_table[] = { 0xfa, 0xfd, 0xf4, 0xf3 }; -/* static uint8_t crc8(uint8_t *p, uint8_t len) { + static uint8_t crc8(uint8_t *p, uint8_t len) { uint16_t i; uint16_t crc = 0x0; @@ -221,7 +222,7 @@ static const uint8_t crc_table[] = { } return crc & 0xFF; -}*/ +} /* * Driver 'main' command. @@ -234,6 +235,7 @@ TRONE::TRONE(int bus, int address) : _max_distance(TRONE_MAX_DISTANCE), _reports(nullptr), _sensor_ok(false), + _valid(0), _measure_ticks(0), _collect_phase(false), _class_instance(-1), @@ -586,6 +588,10 @@ TRONE::collect() /* TODO: set proper ID */ report.id = 0; + // This validation check can be used later + _valid = crc8(val, 2) == val[2] && (float)report.current_distance > report.min_distance + && (float)report.current_distance < report.max_distance ? 1 : 0; + /* publish it, if we are the primary */ if (_distance_sensor_topic >= 0) { orb_publish(ORB_ID(distance_sensor), _distance_sensor_topic, &report); From ff1f3ba7f1f8ca52a2e4cddac4d7436b8ccc8936 Mon Sep 17 00:00:00 2001 From: TSC21 Date: Tue, 26 May 2015 18:08:55 +0100 Subject: [PATCH 03/17] drivers: added validity check to sf0x --- src/drivers/sf0x/sf0x.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/drivers/sf0x/sf0x.cpp b/src/drivers/sf0x/sf0x.cpp index 431184d046..7861c0596b 100644 --- a/src/drivers/sf0x/sf0x.cpp +++ b/src/drivers/sf0x/sf0x.cpp @@ -854,7 +854,7 @@ test() } warnx("single read"); - warnx("val: %0.2f m", (double)report.current_distance); + warnx("measurement: %0.2f m", (double)report.current_distance); warnx("time: %llu", report.timestamp); /* start the sensor polling at 2 Hz rate */ @@ -885,7 +885,9 @@ test() } warnx("read #%u", i); - warnx("val: %0.3f m", (double)report.current_distance); + warnx("valid %u", (float)report.current_distance > report.min_distance + && (float)report.current_distance < report.max_distance ? 1 : 0); + warnx("measurement: %0.3f m", (double)report.current_distance); warnx("time: %llu", report.timestamp); } From b1991b3813c00f28e657c44874e1dfc248019bb9 Mon Sep 17 00:00:00 2001 From: tumbili Date: Thu, 25 Jun 2015 23:44:47 +0200 Subject: [PATCH 04/17] scale epv and eph correctly --- src/platforms/posix/drivers/gpssim/gpssim.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/platforms/posix/drivers/gpssim/gpssim.cpp b/src/platforms/posix/drivers/gpssim/gpssim.cpp index 8b535e5992..9108a6f228 100644 --- a/src/platforms/posix/drivers/gpssim/gpssim.cpp +++ b/src/platforms/posix/drivers/gpssim/gpssim.cpp @@ -272,8 +272,8 @@ GPSSIM::receive(int timeout) { _report_gps_pos.lon = gps.lon; _report_gps_pos.alt = gps.alt; _report_gps_pos.timestamp_variance = hrt_absolute_time(); - _report_gps_pos.eph = (float)gps.eph; - _report_gps_pos.epv = (float)gps.epv; + _report_gps_pos.eph = (float)gps.eph * 1e-2f; + _report_gps_pos.epv = (float)gps.epv * 1e-2f; _report_gps_pos.vel_m_s = (float)(gps.vel)/100.0f; _report_gps_pos.vel_n_m_s = (float)(gps.vn)/100.0f; _report_gps_pos.vel_e_m_s = (float)(gps.ve)/100.0f; From f7a6afc976d696ecb6c28b5247ac823fe068d69c Mon Sep 17 00:00:00 2001 From: tumbili Date: Fri, 26 Jun 2015 00:40:02 +0200 Subject: [PATCH 05/17] improve SITL startup script --- posix-configs/SITL/init/rcS | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/posix-configs/SITL/init/rcS b/posix-configs/SITL/init/rcS index e8f257195a..445b7ce339 100644 --- a/posix-configs/SITL/init/rcS +++ b/posix-configs/SITL/init/rcS @@ -22,6 +22,9 @@ param set CAL_ACC0_YSCALE 1.01 param set CAL_ACC0_ZSCALE 1.01 param set CAL_ACC1_XOFF 0.01 param set CAL_MAG0_XOFF 0.01 +param set MPC_XY_P 0.4 +param set MPC_XY_VEL_P 0.2 +param set MPC_XY_VEL_D 0.005 rgbled start tone_alarm start gyrosim start @@ -32,8 +35,13 @@ gpssim start hil mode_pwm commander start sensors start +navigator start attitude_estimator_q start position_estimator_inav start mc_pos_control start mc_att_control start mixer load /dev/pwm_output0 ../../ROMFS/px4fmu_common/mixers/quad_x.main.mix +mavlink stream -r 50 -s POSITION_TARGET_LOCAL_NED -u 14556 +mavlink stream -r 50 -s LOCAL_POSITION_NED -u 14556 +mavlink stream -r 50 -s ATTITUDE -u 14556 +mavlink stream -r 50 -s ATTITUDE_TARGET -u 14556 From bd96f21ccbffafef469c1b79e32ae1ac3ad2fe03 Mon Sep 17 00:00:00 2001 From: tumbili Date: Fri, 26 Jun 2015 00:41:07 +0200 Subject: [PATCH 06/17] fill local position setpoint message entirely --- src/modules/mavlink/mavlink_messages.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/modules/mavlink/mavlink_messages.cpp b/src/modules/mavlink/mavlink_messages.cpp index 24f04fd74f..5bc7c0492e 100644 --- a/src/modules/mavlink/mavlink_messages.cpp +++ b/src/modules/mavlink/mavlink_messages.cpp @@ -1776,6 +1776,10 @@ protected: msg.x = pos_sp.x; msg.y = pos_sp.y; msg.z = pos_sp.z; + msg.yaw = pos_sp.yaw; + msg.vx = pos_sp.vx; + msg.vy = pos_sp.vy; + msg.vz = pos_sp.vz; _mavlink->send_message(MAVLINK_MSG_ID_POSITION_TARGET_LOCAL_NED, &msg); } From 3defabfbea145242f7a78910241f114831046917 Mon Sep 17 00:00:00 2001 From: tumbili Date: Fri, 26 Jun 2015 15:00:59 +0200 Subject: [PATCH 07/17] build land detector for posix --- makefiles/posix/config_posix_sitl.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/makefiles/posix/config_posix_sitl.mk b/makefiles/posix/config_posix_sitl.mk index c317264143..806e59e7cb 100644 --- a/makefiles/posix/config_posix_sitl.mk +++ b/makefiles/posix/config_posix_sitl.mk @@ -40,6 +40,7 @@ MODULES += modules/position_estimator_inav MODULES += modules/navigator MODULES += modules/mc_pos_control MODULES += modules/mc_att_control +MODULES += modules/land_detector # # Library modules From 40cc11a5eda0161458a81f55d1c44a8f288655e1 Mon Sep 17 00:00:00 2001 From: tumbili Date: Fri, 26 Jun 2015 15:01:17 +0200 Subject: [PATCH 08/17] ported land detector --- .../land_detector/FixedwingLandDetector.cpp | 4 +- .../land_detector/land_detector_main.cpp | 39 +++++++++++-------- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/src/modules/land_detector/FixedwingLandDetector.cpp b/src/modules/land_detector/FixedwingLandDetector.cpp index 5f7ded9cb2..b98f3fd4ce 100644 --- a/src/modules/land_detector/FixedwingLandDetector.cpp +++ b/src/modules/land_detector/FixedwingLandDetector.cpp @@ -87,12 +87,12 @@ bool FixedwingLandDetector::update() if (hrt_elapsed_time(&_vehicleLocalPosition.timestamp) < 500 * 1000) { float val = 0.95f * _velocity_xy_filtered + 0.05f * sqrtf(_vehicleLocalPosition.vx * _vehicleLocalPosition.vx + _vehicleLocalPosition.vy * _vehicleLocalPosition.vy); - if (isfinite(val)) { + if (PX4_ISFINITE(val)) { _velocity_xy_filtered = val; } val = 0.95f * _velocity_z_filtered + 0.05f * fabsf(_vehicleLocalPosition.vz); - if (isfinite(val)) { + if (PX4_ISFINITE(val)) { _velocity_z_filtered = val; } } diff --git a/src/modules/land_detector/land_detector_main.cpp b/src/modules/land_detector/land_detector_main.cpp index 1ca319ce63..58753d5ca7 100644 --- a/src/modules/land_detector/land_detector_main.cpp +++ b/src/modules/land_detector/land_detector_main.cpp @@ -38,6 +38,10 @@ * @author Johan Jansen */ +#include +#include +#include +#include #include //usleep #include #include @@ -80,7 +84,7 @@ static void land_detector_deamon_thread(int argc, char *argv[]) static void land_detector_stop() { if (land_detector_task == nullptr || _landDetectorTaskID == -1) { - errx(1, "not running"); + warnx("not running"); return; } @@ -95,7 +99,7 @@ static void land_detector_stop() /* if we have given up, kill it */ if (++i > 50) { - task_delete(_landDetectorTaskID); + px4_task_delete(_landDetectorTaskID); break; } } while (land_detector_task->isRunning()); @@ -104,7 +108,7 @@ static void land_detector_stop() delete land_detector_task; land_detector_task = nullptr; _landDetectorTaskID = -1; - errx(0, "land_detector has been stopped"); + warnx("land_detector has been stopped"); } /** @@ -113,7 +117,7 @@ static void land_detector_stop() static int land_detector_start(const char *mode) { if (land_detector_task != nullptr || _landDetectorTaskID != -1) { - errx(1, "already running"); + warnx("already running"); return -1; } @@ -125,13 +129,13 @@ static int land_detector_start(const char *mode) land_detector_task = new MulticopterLandDetector(); } else { - errx(1, "[mode] must be either 'fixedwing' or 'multicopter'"); + warnx("[mode] must be either 'fixedwing' or 'multicopter'"); return -1; } //Check if alloc worked if (land_detector_task == nullptr) { - errx(1, "alloc failed"); + warnx("alloc failed"); return -1; } @@ -140,11 +144,11 @@ static int land_detector_start(const char *mode) SCHED_DEFAULT, SCHED_PRIORITY_DEFAULT, 1000, - (main_t)&land_detector_deamon_thread, + (px4_main_t)&land_detector_deamon_thread, nullptr); if (_landDetectorTaskID < 0) { - errx(1, "task start failed: %d", -errno); + warnx("task start failed: %d", -errno); return -1; } @@ -163,9 +167,9 @@ static int land_detector_start(const char *mode) usleep(50000); if (hrt_absolute_time() > timeout) { - err(1, "start failed - timeout"); + warnx("start failed - timeout"); land_detector_stop(); - exit(1); + return 1; } } printf("\n"); @@ -174,7 +178,6 @@ static int land_detector_start(const char *mode) //Remember current active mode strncpy(_currentMode, mode, 12); - exit(0); return 0; } @@ -189,12 +192,15 @@ int land_detector_main(int argc, char *argv[]) } if (argc >= 2 && !strcmp(argv[1], "start")) { - land_detector_start(argv[2]); + if (land_detector_start(argv[2]) != 0) { + warnx("land_detector start failed"); + return 1; + } } if (!strcmp(argv[1], "stop")) { land_detector_stop(); - exit(0); + return 0; } if (!strcmp(argv[1], "status")) { @@ -204,13 +210,14 @@ int land_detector_main(int argc, char *argv[]) warnx("running (%s): %s", _currentMode, (land_detector_task->isLanded()) ? "LANDED" : "IN AIR"); } else { - errx(1, "exists, but not running (%s)", _currentMode); + warnx("exists, but not running (%s)", _currentMode); } - exit(0); + return 0; } else { - errx(1, "not running"); + warnx("not running"); + return 1; } } From c49511fb665127138bea698803067da1a9bdb5f3 Mon Sep 17 00:00:00 2001 From: tumbili Date: Fri, 26 Jun 2015 15:01:53 +0200 Subject: [PATCH 09/17] start land detector for SITL --- posix-configs/SITL/init/rcS | 1 + 1 file changed, 1 insertion(+) diff --git a/posix-configs/SITL/init/rcS b/posix-configs/SITL/init/rcS index 445b7ce339..d9f94c5ce0 100644 --- a/posix-configs/SITL/init/rcS +++ b/posix-configs/SITL/init/rcS @@ -35,6 +35,7 @@ gpssim start hil mode_pwm commander start sensors start +land_detector start multicopter navigator start attitude_estimator_q start position_estimator_inav start From 47c4ece9eb01eb66e97df2b968a9878da284a79c Mon Sep 17 00:00:00 2001 From: tumbili Date: Fri, 26 Jun 2015 15:02:12 +0200 Subject: [PATCH 10/17] use px4_poll instead of poll --- src/modules/navigator/navigator_main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/navigator/navigator_main.cpp b/src/modules/navigator/navigator_main.cpp index d7f971f067..e4ef373d1b 100644 --- a/src/modules/navigator/navigator_main.cpp +++ b/src/modules/navigator/navigator_main.cpp @@ -309,7 +309,7 @@ Navigator::task_main() const hrt_abstime mavlink_open_interval = 500000; /* wakeup source(s) */ - struct pollfd fds[8]; + px4_pollfd_struct_t fds[8]; /* Setup of loop */ fds[0].fd = _global_pos_sub; @@ -332,7 +332,7 @@ Navigator::task_main() while (!_task_should_exit) { /* wait for up to 100ms for data */ - int pret = poll(&fds[0], (sizeof(fds) / sizeof(fds[0])), 100); + int pret = px4_poll(&fds[0], (sizeof(fds) / sizeof(fds[0])), 100); if (pret == 0) { /* timed out - periodic check for _task_should_exit, etc. */ From 5e27b7bc31593b3057bcceb16eb071128e1d2eaf Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 27 Jun 2015 21:23:53 +1000 Subject: [PATCH 11/17] ms5611: fixed the i2c device on NuttX. This was left-over debugging noise from the POSIX bringup. --- src/drivers/ms5611/ms5611_i2c.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/drivers/ms5611/ms5611_i2c.cpp b/src/drivers/ms5611/ms5611_i2c.cpp index 730fd9b968..11baafd23b 100644 --- a/src/drivers/ms5611/ms5611_i2c.cpp +++ b/src/drivers/ms5611/ms5611_i2c.cpp @@ -71,8 +71,8 @@ public: virtual ~MS5611_I2C(); virtual int init(); - virtual int dev_read(unsigned offset, void *data, unsigned count); - virtual int dev_ioctl(unsigned operation, unsigned &arg); + virtual int read(unsigned offset, void *data, unsigned count); + virtual int ioctl(unsigned operation, unsigned &arg); #ifdef __PX4_NUTTX protected: @@ -139,7 +139,7 @@ MS5611_I2C::init() } int -MS5611_I2C::dev_read(unsigned offset, void *data, unsigned count) +MS5611_I2C::read(unsigned offset, void *data, unsigned count) { union _cvt { uint8_t b[4]; @@ -162,7 +162,7 @@ MS5611_I2C::dev_read(unsigned offset, void *data, unsigned count) } int -MS5611_I2C::dev_ioctl(unsigned operation, unsigned &arg) +MS5611_I2C::ioctl(unsigned operation, unsigned &arg) { int ret; From 0c1ec5eb8b11a5e6b10ff852e0591ddce3ff9b9c Mon Sep 17 00:00:00 2001 From: Ban Siesta Date: Sun, 28 Jun 2015 15:15:50 +0100 Subject: [PATCH 12/17] makefiles: add /dev/serial/by-id/pci-3D_Robotics* to the ports to try on Linux --- makefiles/nuttx/upload.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/makefiles/nuttx/upload.mk b/makefiles/nuttx/upload.mk index c590f17d10..e73c31dc31 100644 --- a/makefiles/nuttx/upload.mk +++ b/makefiles/nuttx/upload.mk @@ -15,7 +15,7 @@ ifeq ($(SYSTYPE),Darwin) SERIAL_PORTS ?= "/dev/tty.usbmodemPX*,/dev/tty.usbmodem*" endif ifeq ($(SYSTYPE),Linux) -SERIAL_PORTS ?= "/dev/serial/by-id/usb-3D_Robotics*" +SERIAL_PORTS ?= "/dev/serial/by-id/usb-3D_Robotics*,/dev/serial/by-id/pci-3D_Robotics*" endif ifeq ($(SERIAL_PORTS),) SERIAL_PORTS = "COM32,COM31,COM30,COM29,COM28,COM27,COM26,COM25,COM24,COM23,COM22,COM21,COM20,COM19,COM18,COM17,COM16,COM15,COM14,COM13,COM12,COM11,COM10,COM9,COM8,COM7,COM6,COM5,COM4,COM3,COM2,COM1,COM0" From b0642f8d32b3a2ec509b49d74832d651d5e0cf01 Mon Sep 17 00:00:00 2001 From: Ban Siesta Date: Sun, 28 Jun 2015 15:24:48 +0100 Subject: [PATCH 13/17] land_detector: shut up if started correctly --- src/modules/land_detector/land_detector_main.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/land_detector/land_detector_main.cpp b/src/modules/land_detector/land_detector_main.cpp index 58753d5ca7..34355c6b11 100644 --- a/src/modules/land_detector/land_detector_main.cpp +++ b/src/modules/land_detector/land_detector_main.cpp @@ -196,6 +196,7 @@ int land_detector_main(int argc, char *argv[]) warnx("land_detector start failed"); return 1; } + return 0; } if (!strcmp(argv[1], "stop")) { From 99d59971acbe9e1ecdf9ee3f1318005bb19fcd1b Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Sun, 28 Jun 2015 13:35:55 +0200 Subject: [PATCH 14/17] INAV app: Fix commandline handling Conflicts: src/modules/position_estimator_inav/position_estimator_inav_main.c --- .../position_estimator_inav/position_estimator_inav_main.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/modules/position_estimator_inav/position_estimator_inav_main.c b/src/modules/position_estimator_inav/position_estimator_inav_main.c index 372b9b06da..6f60e4878d 100644 --- a/src/modules/position_estimator_inav/position_estimator_inav_main.c +++ b/src/modules/position_estimator_inav/position_estimator_inav_main.c @@ -145,10 +145,9 @@ int position_estimator_inav_main(int argc, char *argv[]) inav_verbose_mode = false; - if (argc > 1) - if (!strcmp(argv[2], "-v")) { - inav_verbose_mode = true; - } + if (argc > 2 && !strcmp(argv[2], "-v")) { + inav_verbose_mode = true; + } thread_should_exit = false; position_estimator_inav_task = px4_task_spawn_cmd("position_estimator_inav", From 5523b1ee4f118cb07794e2394d029b09eb4e595e Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Sun, 28 Jun 2015 16:29:46 +0200 Subject: [PATCH 15/17] Re-enable INAV verbose options --- .../position_estimator_inav_main.c | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/modules/position_estimator_inav/position_estimator_inav_main.c b/src/modules/position_estimator_inav/position_estimator_inav_main.c index 6f60e4878d..327276c5c1 100644 --- a/src/modules/position_estimator_inav/position_estimator_inav_main.c +++ b/src/modules/position_estimator_inav/position_estimator_inav_main.c @@ -1071,25 +1071,25 @@ int position_estimator_inav_thread_main(int argc, char *argv[]) inertial_filter_correct(-y_est[1], dt, y_est, 1, params.w_xy_res_v); } - // if (inav_verbose_mode) { - // /* print updates rate */ - // if (t > updates_counter_start + updates_counter_len) { - // float updates_dt = (t - updates_counter_start) * 0.000001f; - // warnx( - // "updates rate: accelerometer = %.1f/s, baro = %.1f/s, gps = %.1f/s, attitude = %.1f/s, flow = %.1f/s", - // (double)(accel_updates / updates_dt), - // (double)(baro_updates / updates_dt), - // (double)(gps_updates / updates_dt), - // (double)(attitude_updates / updates_dt), - // (double)(flow_updates / updates_dt)); - // updates_counter_start = t; - // accel_updates = 0; - // baro_updates = 0; - // gps_updates = 0; - // attitude_updates = 0; - // flow_updates = 0; - // } - // } + if (inav_verbose_mode) { + /* print updates rate */ + if (t > updates_counter_start + updates_counter_len) { + float updates_dt = (t - updates_counter_start) * 0.000001f; + warnx( + "updates rate: accelerometer = %.1f/s, baro = %.1f/s, gps = %.1f/s, attitude = %.1f/s, flow = %.1f/s", + (double)(accel_updates / updates_dt), + (double)(baro_updates / updates_dt), + (double)(gps_updates / updates_dt), + (double)(attitude_updates / updates_dt), + (double)(flow_updates / updates_dt)); + updates_counter_start = t; + accel_updates = 0; + baro_updates = 0; + gps_updates = 0; + attitude_updates = 0; + flow_updates = 0; + } + } if (t > pub_last + PUB_INTERVAL) { pub_last = t; From 74d95f0441b55a57f9730e80afc8171a5edd1ee8 Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Sun, 28 Jun 2015 16:31:04 +0200 Subject: [PATCH 16/17] INAV: Remove extra C++ flag --- src/modules/position_estimator_inav/module.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/position_estimator_inav/module.mk b/src/modules/position_estimator_inav/module.mk index c92ba3007e..45c8762996 100644 --- a/src/modules/position_estimator_inav/module.mk +++ b/src/modules/position_estimator_inav/module.mk @@ -42,5 +42,5 @@ SRCS = position_estimator_inav_main.c \ MODULE_STACKSIZE = 1200 -EXTRACFLAGS = -Wframe-larger-than=3500 -Wno-unused +EXTRACFLAGS = -Wframe-larger-than=3500 From e9d597816518030572a3c5507c1067c84dbbba40 Mon Sep 17 00:00:00 2001 From: cctsao1008 Date: Tue, 30 Jun 2015 00:21:47 +0800 Subject: [PATCH 17/17] Adjust the duration of the BIND pulse Some DSMX Remote Receiver can't enter BIND mode with the duration about 25us but 120us. --- src/modules/px4iofirmware/dsm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/px4iofirmware/dsm.c b/src/modules/px4iofirmware/dsm.c index afde16ed39..b0e96b1f03 100644 --- a/src/modules/px4iofirmware/dsm.c +++ b/src/modules/px4iofirmware/dsm.c @@ -292,9 +292,9 @@ dsm_bind(uint16_t cmd, int pulses) /*Pulse RX pin a number of times*/ for (int i = 0; i < pulses; i++) { - up_udelay(25); + up_udelay(120); stm32_gpiowrite(usart1RxAsOutp, false); - up_udelay(25); + up_udelay(120); stm32_gpiowrite(usart1RxAsOutp, true); } break;