Rover-4.1.0 released!

After many months of development and beta testing, Rover-4.1.0 has been released as the official Rover and Boat firmware!

The list of changes vs 4.0 can be found in the release notes and also copied below.

  1. AHRS/EKF enhancements and fixes:
    a) DCM fallback easier on boats
    b) EKF3 is default estimator (EKF2 is available as an option)
    c) EKF3 GSF can be invoked multiple times with source switching (no longer limited by EK3_GSF_RST_MAX)
    d) EKF3 IMU offset fix (vehicle’s reported position was slightly incorrect if INS_POS_XYZ params set)
    e) External AHRS/IMU support (e.g. VectorNav)
    f) Gaussian Sum Filter (GSF) allows emergency yaw correction using GPS
    g) GPS-for-yaw setup and reliability improved including
    i) alt estimate more robust
    ii) arming check added
    iii) position and yaw from different GPSs
    iv) EKF3 fix to reset yaw after GPS-for-yaw recovers
    h) Origin altitudes consistent across cores even if user takes off with no GPS lock
    i) Optical flow divide-by-zero protection (issue only found in simulator)
    j) Lane switching logic improvements
    k) Long distance travel supported (thousands of km) including double precision EKF and moving origin
    l) Longitude wrap fixed (allows autonomous flights as longitude wraps between -180 and 180 deg)
    m) Position jump fixed during GPS glitch and GPS/Non-GPS transitions
    n) PreArm check of roll/pitch and yaw angle difference fixed
    o) Sensor affinity (improves sensor failure redundancy)
    p) Source switching for GPS/Non-GPS transitions (see EK3_SRCx_ parameters)
    q) Yaw estimation and reliability improvements
  2. BLHeli improvements and fixes
    a) Bi-directional ESC telemetry fixes
    b) Bi-directional dshot 1200 supported
    c) Control of digital with non-digital outputs fixed
    d) Support dshot commands for LED, buzzer and direction control
    e) Passthru reliability improved
  3. Control improvements:
    a) Vectored thrust improvements (see MOT_VEC_ANGLEMAX parameter)
    b) Skid-steering supports prioritising steering vs throttle (see MOT_STR_THR_MIX parameter)
    c) Waypoint delay of -1 does not delay vehicle (same as 0)
  4. Walking robot support (basic)
  5. Object avoidance:
    a) BendyRuler hesitancy improvements
    b) Intel Realsense 435/455 camera support (companion computer required)
    c) Return to original path after clearing obstacle (see OA_OPTIONS parameter)
    d) Simple avoidance backs away from obstacles (see AVOID_BACKUP_SPD parameter)
    e) Simple avoidance accel limited (see AVOID_ACCEL_MAX parameter)
    f) Simple avoidance shaking reduced when vehicle stopped
    g) Simultaneous Dijkstra and BendyRuler path planning
    h) Obstacle database now 3D
    i) Obstacle filtering improvements
    j) Proximity sensor pre-arm check disabled if avoidance using proximity sensors is disabled
  6. Compass enhancements
    a) In-flight learning improvements (see COMPASS_LEARN = 3)
    b) Large vehicle calibration support (e.g. point vehicle north and push button in MP)
    c) Prioritisation (see MP’s compass prioritisation table)
    d) Custom orientations
  7. Intel RealSense T265 support (see VISO_TYPE = 2, companion computer required)
    a) Position and velocity from external sources accepted at up to 50hz
    b) Resets from external sources accepted
    c) VisualOdom feature removed from 1MB boards
  8. New autopilots and autopilot specific improvements
    a) CUAV-Nora, CUAV-X7
    b) CubeBlack supports external IST8308 compass
    c) CubeOrange serial 1/2 DMA fixed
    d) FlywooF745, FlywooF7451 Goku Nano
    e) Holybro Pix32v5
    f) iFlight BeastF7 and BeastH7
    g) KakuteF4Mini SBUS fix
    h) MatekF405-bdshot NeoPixel LEDs re-enabled on PWM5
    i) MatekH743, MatekF765-Wing
    j) mRo ControlZero, Nexus, PixracerPro
    k) PixC4-Pi and PixC4-Jetson
    l) Pix32v5 USB product string fixed and IMU heater enabled
    m) Pixhawk4 mini safety switch fix
    n) Pixhawk4 blue and red LEDs swapped
    o) QioTekZealotF427, QioTekZealotH743
    p) R9Pilot
    q) SuccexF4
  9. IMU improvements:
    a) temperature calibration
    b) faster gyro sampling on high performance autopilots (F7 and faster, see INS_GYRO_RATE)
  10. Logging improvements:
    a) Auxiliary function logging shows how it was invoked (switch, button or scripting)
    b) EKF not affected by logging start (EKF could become unhealthy due to timing delays)
    c) Direct mast rotation logging
    d) Download speeds improved on F765 and F777 based boards (USB buffers increased)
    e) Forced arm creates logs
    f) Memory leak when finding last log fixed
    g) RangeFinder logging enabled (RFND)
    h) Reliability improvements
    i) Replay/DAL RMGH log message format fix
    j) SD card slowdown with early mounts fixed
    k) Sonar water temperature logged in DPTH message
    l) THR onboard log message logs forward-back acceleration
  11. New drivers and driver specific improvements
    a) AllyStar NMEA GPS
    b) BMM150 as external compass
    c) CRSF and SRXL2 RC protocols
    d) Dshot (bi-directional) for RPM telemetry
    e) GY-US32-v2 lidar
    f) HC-SR04 lidar
    g) Intelligent Energy hydrogen fuel cell
    h) Lightware SF45b lidar
    i) MSP protocol support (and DJI DPV systems)
    j) RichenPower generator
    k) Rotoye smart battery
    l) RunCam Split 4 and RunCam hybrid support
    m) Smart Audio
    n) SMBus batteries up to 12 cells
    o) USD1 CAN radar
  12. Scripting enhancements:
    a) Button, Proximity, RangeFinder and RPM sensor support
    b) DO_ mission commands can be triggered from scripts
    c) I2C sensor driver support (i.e. allows writing sensor drivers in Lua)
    d) Logging (i.e. allows Lua scripts to write to onboard logs)
    e) Mission item read support
    f) Motor drivers support (used for walking robots)
    g) Position, velocity and direct steering & throttle control while in Guided mode
    h) Pre-arm checks (i.e. allows writing custom pre-arm checks in Lua)
    i) ROMFS support (allows writing scripts to ROMFS instead of SD Card)
    j) Serial port support (allows reading/writing to serial port from Lua)
    k) set home and get EKF origin support
    l) ToshibaCAN ESC usage time read support
    m) Lua scripts can be placed in root of ROMFS (only relevant for developers)
  13. Other enhancements:
    a) Baro parameters start with BARO_ (was GND_)
    b) Barometers get device id for easier identification
    c) ChibiOS upgrade to 20.3
    d) CRSF passthrough for Yaapu widget
    e) CSRF telemetry improvements to power setting and pass param requests more quickly
    f) DShot rates increased (see SERVO_DSHOT_RATE)
    g) Filesystem/MAVFTP expansion including @SYS for performance monitoring
    h) FrSky telem reports failsafe, terrain alt health and fence status
    i) GPS_DRV_OPTIONS allows forcing UBlox GPS to 115200 baud
    j) MAV_CMD_DO_REPOSITION support
    k) MAVFTP performance improvements
    l) OSD gets fence icon
    m) Parameter reset workaround by backing-up and restoring old params after eeprom corruption
    n) Pre-arm check of FLTMODE_CH and RCx_OPTION conflict
    o) RunCam OSD and camera control
    p) RunCam Hybrid supported (see RUNCAM_TYPE parameter)
    q) Sailboats get arming check for windvane health
    r) Septentrio GPSs support GPS_SBAS_MOD parameter
    s) Simple mode supports two paddle input
    t) Speed nudging in Auto made more consistent with Acro (i.e. same stick position results in same speed)
    u) Spektrum VTX control
    v) Switch to Manual mode after mission completes (see MIS_DONE_BEHAVIOR parameter)
    w) TURN_MAX_G renamed to ATC_TURN_MAX_G and applied to all turns
    x) Water depth and temperature sent to GCS using WATER_DEPTH mavlink message
  14. Bug fixes:
    a) Arming rejected in RTL, SmartRTL and Initializing modes
    b) Barometer averaging fixes for BMP380, BMP280, LPS2XH, SPL06 drivers
    c) Beacon driver protected from requests for data for non-existant beacons
    d) BLHeli Auto only affects telemetry passthrough to ease setup
    e) BLHeli fix that could cause failure to boot
    f) CAN GPS ordering fix (previously order could switch meaning GPS_POS_ params were used on the wrong GPS)
    g) CAN threading fix to resolve potential lockup when lua scripts use CAN
    h) Circular complex fence radius not truncated
    i) CRSF frame timeout increased to reduce RC failsafes
    j) CRSF message spamming and firmware string length fixed
    k) Declination automatic lookup rounding fix (caused inaccurate declination in some parts of world)
    l) Display re-enabled on 1MB boards
    m) Dshot bug fix for autopilots with I/O boards (CubeBlack, CubeOrange, etc)
    n) DShot (bi-directional) support on Pixhawk4, CUAVv5, CUAVv5-Nano
    o) DShot always sends 0 when disarmed (protects against motors spin while disarmed due to misconfiguration)
    p) DShot fix that could cause main loop jitter
    q) DShot buzzer tone disabled during motor test to remove bad interation
    r) ESC telemetry fixes including motor index on boards with I/O mcu
    s) I/O MCU reset fix if user had disabled safety switch (recovery from reset would leave motors not spinning)
    t) IMU semaphore fix to avoid occasional corruption
    u) KDECAN output range, motor order and pre-arm check messages fixed
    v) Motor test stops and reports failure if arming fails
    w) MSP temperature scaling fixed
    x) OSD overwrite and nullptr check fix
    y) Rangefinder initial buffer size and baudrate fix (affected Aintein US-D1 radar)
    z) RCOut banner displayed at very end of startup procedure to avoid invalid outputs
    aa) RM3100 compass scaling fixed
    ab) Scheduling slip workaround to avoid occasional 60ms delays found on MatekH7 (ChibiOS only)
    ac) Scheduler fix of premature run of tasks every 11 minutes
    ad) Serial port DMA contention heuristics improved (reduces chance of delays writing to serial devices)
    ae) Serial port performance improvements using FIFO on H7 boards
    af) Serial port info file (@SYS/uarts.txt) easier to understand
    ag) Speed control jumps avoided by resetting I-term when stopped
    ah) Throttle slew rate fix (MOT_SLEWRATE param)
    ai) Two paddle steering deadzone fix
    aj) Visual odometry yaw alignment fixed
    ak) Wheel encoder fix (data could be skipped)
    al) Wind direction calculation when not using wind speed sensor fixed
    am) WPNAV_RADIUS never less than 5cm

Thanks again for everyone’s contributions to this release! If you hit issues feel free to reply below or create a new topic and, if possible, provide an onboard log


Finally, all my toys have received this incredible release. They (and I too) want to thank you for it!

Starring … from left to right …

  • OpenRc Tractor 3D printed - Matek H743 Mini - ublox F9P - Neopixel lighting - Purpose: Lawnmower
  • Rochobby 1941 Willys MB 1/6 - Matek H743 Wing - ublox M9N + ublox M9Ncan - Neopixel lighting - Purpose: Crawler
  • Traxxas TRX-4 Bronco - Matek H743 Wing - ublox M9N - Neopixel lighting - Purpose: Crawler
  • Orlandoo Hunter OH32M01 - Matek H743 Mini, Neopixwl lighting (21 LED) - Purpose: not sure, fun I think
  • RC Benchy 3D printed - AUAV-X2 - ublox M8Q - Neopixel lighting - Purpose: fun
  • RC Tank 3D printed - AUAV/mro-X2.1 - ublox M8Q - Purpose: fun

That’s quite a line-up! Great stuff.

Regarding the new rover driver support for the Allystar NMEA GPS, is it for their entire range, or a particular recommended module? Looked through the Wiki and forums and didn’t see any specific modules mentioned, other than Tridge’s reference to them in his Big GPS Roundup post. Big GPS Round Up. He referenced the Allystar HD8040D chip, but not a specific Allystar module or eval kit board.

New to this and I’m researching sub-meter accuracy GNSS (GPS) units for a vectored thrust Arduboat project. Trying to watch the budget while using an external IP67 active antenna, with an GNSS board/module mounted inside an ABS plastic IP67 enclosure.

Any insight would be appreciated. Thank You


I think @tridge was originally interested in the Allystar GPSs because they were exceptionally cheap but I think after working with them more they’re not recommended. I think it is probably best to stick with a UBlox GPS.

Thank you for taking the time to reply Randy.

1 Like

Hi @rmackay9 ,is pixhawk used for commercial purpose ? Or any othere modules which is more reliable for automomous boats? Can u suggest any ?

Hi @Robot_Core,

I replied to your PM as well but for the greater audience, I normally don’t make specific autopilot suggestions because there are so many choices and each application and budget is different.

I think some general advice for commercial users could be:

  1. if you plan to use Lua scripts to customise behaviour an autopilot with an H7 CPU is required.
  2. for cold weather application an autopilot with a built-in heater might be good
  3. if a gas motor is used then vibration isolation could be important.

Maybe ask over in the ArduBoat forum here.

1 Like

Thank you @rmackay9 for your suggestion.