What does the firmware actually comprise of?

Sorry a real noob here…

Our team is working on a boat, however we are following along with the ArduRover docs because that seems the closest. Here the docs show loading firmware onto the APM using Mission Planner: http://ardupilot.org/rover/docs/common-loading-firmware-onto-pixhawk.html.

I have 2 questions:

  1. The firmware is code that runs on an Arduino, right? A quick search shows that https://github.com/ArduPilot/ardupilot/tree/master/APMrover2 contains some code. Is this what runs on the microcontroller?

  2. For a boat, how does the firmware/hardware differ to that of a rover? A boat has different outputs to a rover (ie: propeller and rudder vs wheels) and thus the microcontroller would have to control servos and motor speed. How much code do we need to write ourselves (I have done Arduino programming before, but not with ArduPilot etc)

Hi Chris. If your talking embedded hardware (i.e. not a generic Linux board like a Raspberry Pi or Beaglebone) then v3.x.x (the most recent) of ArduRover runs on a 32bit ARM processor which isn’t Arduino. The last Arduino style board was an APM2.5 which run the 8bit process but its not powerful enough for the new maths (EKF).

The “ArduPilot” controller hardware and software doesn’t differ at all. i.e. you can use a Pixracer or Pixhawk on both your boat or rover and both with run the same ArduPilot APMRover2 software. There might be different external hardware i.e. propellor instead of wheels but there is normally some sort of ESC controlling both which can be controlled in the same way by the ArduPilot hardware.

Hope that helps a bit. Lots of info on the wiki (link below) that’s worth reading through.

Thanks, Grant.

Thanks very much for the explanation. If we need to modify the code running on the hardware (to fiddle with things like object avoidance etc), how easy is that? I gather it is open source so I should be able to download it, compile with a ?C/C++ compiler? for the ARM architecture and load it onto the board.

Additionally, we are going to get an APM 2.8, but according to those docs all APM versions are at the “end of life”. We are reluctant to get the newer Pixhawk or Pixracer because they cost twice as much and don’t offer any ?noticeable improvements?. To use the APM 2.8 do we just need to use older versions of the software or is it prohibitively difficult?

An APM2.8 is just some 3rd party manufactures version of it - they increase the version number to make it sound newer and perhaps they have made some hardware changes but its still running the same 2.50 version of the ArduPilot software. Its not difficult at all to use - you shouldn’t have any issues and the code is still available on the master-AVR branch on ardupilot github. Fork it and add features as much as you like. If they are good features submit a PR and we will try and incorporate them into the main code base.

Thanks, Grant.