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.