PX4 Rover *Indoor* Offboard control

Hi, we are trying to use a PX4 (ackermann) rover indoors for dynamic autonomous control of a moving platform through ROS inorder to rendezvous with a UAV. Currently we are doing this in simulation with Gazebo 11 and PX4 version 1.12.3 (have not got round to upgrading yet). The simulation mimics a Vicon/Optitack system by sending vehicle position data to the VO topic. It does not get GPS packets. We intend to get this working on a real UGV as well.

We can get the vehicle into OFFBOARD mode, but cannot find the right topics/mavlink messages to send to the vehicle to get it to move. When sending any setpoint_raw (SET_POSITION_TARGET_LOCAL_NED) location, the vehicle simply slides backwards about a meter and stops.

I have had a look at the Rover Position control source and attempted to directly send actuator messages, but I am having issues running without lockstep (and also removing lockstep is probably not great for us). I am also not clear as to which mode the vehicle should be in when sending actuator messages as it feels like these messages arent getting through (at least according to QGC live mavlink inspector).

We have been stuck on this for a little while now, and would really appreciate some pointers as to what we can try. I have had a look through previous posts including (R1 Rover simulation | Offboard control) and (Does PX4 support OFFBOARD mode for Rover?) which seem to indicate that offboard mode is supported and can somehow work - but my guess is that it probably does work with GPS enabled (The source code also seems to corroborate this as position control takes current position from lat/long). I have also found no documentation anywhere apart from the traxxis stuff which is following mission mode.

So question is can I get rover position control to work without GPS.

Cheers in advance.

For anybody in the future! After some serious digging we found a solution. For PX4 1.12.3, it looks like Rover only supports velocity control in OFFBOARD mode with no GPS, with all other controls (mission and position) requiring GPS enabled. This is detailed in this PR: Support offboard velocity setpoints for rover by Jaeyoung-Lim · Pull Request #13225 · PX4/PX4-Autopilot · GitHub

However you must send velocity messages via SET_POSITION_TARGET_LOCAL_NED with position and acceleration ignore flags set. Working with mavros, you will need to send PositionTarget messages via setpoint_raw/local rather than setpoint_velocity. The control_velocity function within the source makes this clearer: PX4-Autopilot/RoverPositionControl.cpp at v1.12.3 · PX4/PX4-Autopilot · GitHub

Note however that there seems to be an update on the horizon ([Project tracker] Rover control improvements · Issue #19956 · PX4/PX4-Autopilot · GitHub) so this might change for future releases!

3 Likes

Thank you for posting the answer!