ArduRover for School Project


For a senior project at my university, I have been tasked with designing and building an autonomous firefighting robot. Our sponsors (unnamed company) have specified we are to use the APM 2.5+ in our design, but we are free to use it however we see fit. Our contact at the sponsor company has used an APM (version unknown) for a multi-copter in the past, but since this is a competition he will not provide us with much help. He also has no programming experience so he wouldn't be much help in that respect either.

Here is what we've ordered and received so far:

1. APM 2.5+ with the XT-60 Power Module and the 3DR MTK GPS module

2. Losi Ready-To-Run 1/10 Scale Night Crawler (Claims to have 3 channel transmitter/receiver, but I see 3 on the receiver and 2 on the transmitter)

3. Battery and charger for #2

Here is what I have gathered so far from the rather poor documentation on the Google Code page for ArduRover and the far better, but still a bit confusing, information on the ArduPlane page:

1. Normal RC configuration is like this

1.a. Battery powers ESC

1.b. ESC powers RC Receiver and also reads Throttle channel of RC receiver

1.c. Receiver powers and controls steering servo

2. The APM somehow intercepts the signals from the receiver, from what I gather like this

2.a. Battery powers APM power module, which powers APM. APM power module also powers ESC

2.b. ESC is attached to one of the APM's Analog Outputs (not sure which one)

2.b.i Since the ESC powered the receiver before, the J1 jumper is removed from the APM while power over USB to separate the power pin on the analog outputs from the rest of the APM board

2.b.ii When being operated on the vehicle, the J1 jumper is replaced so the ESC powers the whole APM

2.c. Steering servo is attached to another analog output (not sure which one)

I will apologize for the remainder of this post being so big. I am one of two Computer Engineering majors on the team, so this is basically our baby. The part of the project we are responsible for not blowing up.

Now, there are a list of things that were not made clear by the documentation (plane or rover) that I'd like to clarify. I will start with the broadest questions first, the lower in the list the more assumptions I've made since I don't know the answers to the earlier questions.

1. What modes of operation does ArduRover have without any of the modifications I plan on making? For example, autonomous pre-planned GPS waypoints, autonomous GPS waypoints learned while driving manually, manual remote operator (with camera feed), etc.

2. Does the APM need any form of communication with a computer when operating autonomously? The sponsor contact seems to think the navigation code is run on a laptop and the results sent via MAVLink to the APM. I feel like that defeats the purpose of putting a microcontroller on the rover at all. I would like to run this bot with no operator or computer interaction, you turn it on and it maps the area and extinguishes fires all on its own.

3. I was instructed via the setup guide to load the ArduRover "firmware" onto the APM. After which I was able to communicate with the board over USB and get some diagnostic info out of it (this is from within the mission planner software). I'm assuming this "firmware" refers to the ArduRover code itself, as opposed to some firmware required to easily flash the board or something like that. If this is the case, then I should be able to modify this code in the Arduino IDE to suit my needs, correct?

4. Does the ArduRover code provide any hooks for external code? For example, is there an easy way to set waypoints while in route, or have code be called whenever the rover enters a waypoint? Or will I have to hack all that in myself?

5. Other than attempting to decipher all the code myself (which from what I've read so far still uses a lot of ArduPlane terminology despite have all four wheels on the ground) is there an easier guide to how the ArduRover code is laid out? 

6. Does APMrover2.pde contain the main loop from which I should start reading?

7. Where does the actual navigation code reside? 

8. Does the ArduRover code provide for any collision detection or object avoidance? If so, via which type of sensors. We plan to use 3-5 ultrasound proximity sensors and a MLX90620 thermopile array for thermal imaging.

9. I'm sure more questions will arise as the previous ones are answered. Thanks in advance for any information you may be able to provide.

You need to be a member of diydrones to add comments!

Join diydrones

Email me when people reply –


  • A guy that goes by odbot who made the wildthumper posted his project doing something similar to this you may want to look that up for ideals! 

  • Developer

    Hi Matthew,

    for navigation look at Steering.pde now and there is actually a ArduPilot Mega ­Code Outline from Mark Grennan that might be usefull

    i have found reading the forums is very good source of ongoing insights.


  • I see, Trinity on a large scale! 

    Will there be "walls" or other labyrinth to navigate?  Or simply a number of waypoints?  Heat sources would be interesting, one could zero in on them with IR sensors.

    Alan  KM6VV

  • Admin


    I suggest that you read all of the discussion and all of the comments on the ArduRover User Group to help you become familiar with the ArduRover code and hardware requirements. You also might want to read the APMRover 2, a fun UGV project for full autonomous recon missions...discussion.

    If your time is limited, you might want to find an individual who is familiar with R/C equipment, servos, ESCs, BECs, etc to help you with the hardware and component interconnections. The ArduRover Wiki is basic and should be familiar to an indiividual who has worked with R/C equipment.



  • @Matthew,

    For fire fighting?  Like the Trinity Fire Fighting contests?  It must be a really huge building!  Ardurover/plane is for more on a scale of a field (due to GPS resolution), or am I missing something?

    Alan KM6VV

  • 3D Robotics

    First, glad you're doing this. ArduRover is a lot of fun, but is not as mature as the other codebases. However, it's being dramatically improved now and should be in very good shape in the next few weeks.

    The code is in the GitHub repository here

    Some answers:

    1) Yes, all of those are built-in

    2) No. The mission is stored on APM, as you correctly surmised. 

    3) Yes, the firmware is what you load when you click on the ArduRover icon in the Mission Planner firmware page or use Arduino to load the code. 

    4) All that is easily done (over a MAVLink wireless connection) with the Mission Planner.

    5) Not really. But the code is commented

    6) Yes

    7) Navigation.pde

    8) Yes, it uses the ultrasonic sensor. This is in the manual

This reply was deleted.