I am with a small team building a GPS-guided boat and am running into an issue where setting the mode to AUTO causes a mode change but does not drive the propeller or rudder (i.e., the boat simply sits in the water).
The boat system runs ArduRover 3.3 on a Navio2 and Raspberry Pi 3 B+. I use XBee radios for communication with custom GCS software, as Mission Planner does not suit our needs. To interact with ArduRover, we have the GCS send messages to the boat via XBee, and then the XBee message handler uses the MAVROS interface to control ArduRover (set waypoints, modes, etc).
So far, we’ve checked the following:
- Our system is properly powered with no failsafes triggering
- Our system is armed
- We can control the propeller and rudder in MANUAL mode using a FrSky X8R receiver and Taranis Q X7 controller
- We can confirm a home position is set on startup by checking MAVROS logs
- We can confirm that a mission with waypoints is set, again through MAVROS logs
- If we swap out the XBee for another 900MHz transceiver, use Mission Planner, and set the -C telemetry option in the /etc/default/ardurover file, we can set waypoints and use AUTO mode as intended (the -C option is normally commented out)
That said, I’m wondering if ArduRover requires radio heartbeat to one of the normal GCS applications (such as Mission Planner) and if it is possible to bypass this requirement for our custom GCS.
If you have downloaded the waypoints to Ardurover you do not need to be connected to a GCS to run the mission. Is the radio properly calibrated? Now that I reread your post your trying to do this through GCS only it looks like?
Thank you for the quick response!
The issue is not with the radio, as we can confirm in the logs that XBee messages are being received and the handler is executing MAVROS commands. To clarify, our GCS is only sending and receiving XBee messages – on our boat we run an XBee message handler that interfaces the MAVROS system (sets the mode, waypoints, etc).
Though after looking at the differences between our missions and the one Mission Planner sets, is there a particular way the missions need to be set? What we’ve been doing is clearing the current mission using a rosservice call, then we push a new waypoint to the current mission, and try to set AUTO mode after this.
When I said radio I meant your remote radio controller, Taranis, in your case. Everything else you are asking is a bit above my ability to comment on.
If you can extract a dataflash log from the flight controller from a failed attempt to get the mission to run that would be best. That should highlight what the issue is.
Rover/Boat does have a “GCS Failsafe” but it’s disabled by default. It can be enabled by setting FS_GCS_ENABLE = 1. I suspect this is not the issue though.
Thank you for your help and suggestions.
So I found the issue, and it was indeed not with the GCS, but with the mission format. We were simply pushing a waypoint to the mission after clearing it, and this was the issue. In order to enable autonomous control we need to have the first waypoint be the current position (specified with 0.0lat/0.0long/0.0alt) and then have the next waypoint be our desired destination. We also had to make autocontinue true and is_current false while the boat is in HOLD/MANUAL mode. All that said, our system is working as intended now.