Friday, September 22, 2023

INAV versus Ardupilot for Rover

I started making drones around 2011 when it was new and unregulated.  You bought a bunch of items from Hobbyking and China, read a bunch of stuff online, then experimented until your drone flew.  There were only a few expensive ready to fly drones from 3DR and DJI.

Fast forward to today and drones are highly regulated, intensely disliked by the public, and split into a few categories: racing, camera, industrial..  I have given up on drones but am still interested in autonomous vehicles, so I decided to build rovers.

My first rover is a converted Tamiya Grasshopper.  I used a Kakute F7 flight controller, GPS/compass, small OLED status display, Radiomaster TX and RX, and replaced the speed control in the Grasshopper.  

I tried it first with Ardupilot software, which I used in drones since 2011.  Wiring was a pain as I tried to keep the body of the car and add the rover functionality, which was a mistake.  With a smaller flight controller, a tight space, and a rover setup, I needed to add a separate board to allow me to change connections easily and debug.  This is the green board with the spaghetti of wires on the right side.

Ardupilot kept getting updated, and I had trouble getting it to work in rover mode, so I thought I would try Inav.  Here is what I learned:

Ardupilot

  • Complex but allows for much customization.  Hundreds of parameters to set and outputs to monitor.  My previous experience helped me.
  • Great documentation - you can look almost anything up.  Fair amount of videos available too.
  • Good community - lots of help available
  • Much easier to debug - logs available, status info on mission planner screens and onboard OLED
  • Limitations if you don't use an up to date Pixhawk controller.  For example, the newest software for Kakute F7 deleted the OLED screen support.

Inav

  • Simple and little support for customization.  It looks easy to get a quadcopter working but rovers are an afterthought and sometimes you need to set something up in a different way.
  • Poor documentation - most of the useful information is in Youtube videos and it is frustrating to listen to 10 minutes of video to find out how to fix one simple error message at times.
  • Good community - not a lot of people but they are helpful.  However, the community seems to be spread out over Reddit, Github, and Discord.
  • Difficult to debug - logs only available if you pull out the SD card and read it, poor status info on mission planner screens and onboard OLED
  • Lots of support for different affordable flight controllers.
If I had to do it over again, I would stick with Ardupilot.  However, it is more challenging to try and make Inav work, so stay tuned for more info.