Ardusub modification for attitude and position control

Hi everyone,

we have a task for our BlueROV2 Heavy and we would like to get your opinion on feasibility and our planned approach.
The task is to implement orientation and position control, to be more specific, we would like to control orientation angles (roll, pitch, yaw) and position of the ROV. For a start, we would use PID controllers. Orientation and position references would be generated topside and sent to the BlueROV through ROS. Our setup is the standard BlueROV2 Heavy + visual odometry for the position feedback.
We are aware that the current Ardusub has controllers for the angle rates and that there is an unstable release of Ardusub that supports waypoint navigation (guided mode).
Our plan is to modify current Ardusub version to achieve orientation angle control (if this is not already available but we are unaware of?) and to use guided mode for waypoint navigation but instead of GPS data to feed it with position provided by visual odometry from the RPi. In the process we would use available Ardusub structures, or implement new ones if necessary.

Do you think this is the best approach for the task? Do you believe it is feasible? Do you have any recommendations, tips, advice? We are open for suggestion for an alternative approaches.

Thank you!

Hi @sample ,

Attitude control is available at 4.0, though not in guided moded, check this gist.

The difficulty of this task depends on how extreme are the attitudes you want to achieve. For smaller angles it should be straight forward to implement.

Thank you for your reply,

So if attitude can be controlled through mavlink messages I suppose there is some corresponding structure in the source code for ardusub which handles that. Do you think there is some other structures that can be reused for implementing the relative XYZ position controller? Basically like a hybrid of these two features that would allow us to control all 6 DOF based on IMU and VO feedback.

Do you think any of the code for GUIDED mode can be reused for relative XYZ position control when there is no GPS input?

the VO is merged into the ekf and can effectively be the main positioning system.
What is your VO system?

This is something that caught my attention recently: Copter: add 6DoF support by IamPete1 · Pull Request #16105 · ArduPilot/ardupilot · GitHub

It is a PR adding 6dof support to copters. Their implementation already seems to deal with position control in arbitrary orientations by using ahrs_view, but I didn’t have the time to look at it carefully yet.

We are using Intel RealSenseT265 VIO sensor. Thanks for your help :smiley:, we’ll look into it and contact you if we have any further questions!

Cool,

would you mind sharing some more information about your project? My largest concern of using something like the T265 is how much the murkiness of the water could affect it.

Our goal is to develop an experimental setup for validation of control and estimation algorithms based on BlueROV2 Heavy.
Yes, we have similar concerns but still didn’t test it enough to draw any meaningful conclusions.

2 Likes