Introducing FIREBRINGER - A generalised autonomous navigation algorithm for use with Ardupilot and MAVROS

GEEAR I - An Intelligent Autonomous Surface Vessel

Hey all,

Our company GEEAR has been developing FIREBRINGER - a generalised autonomous navigation algorithm implemented on ROS2 and combined with Ardupilot for field-robotic applications.

The algorithm is meant to support a variety of missions as shown below, from simple point-to-point travelling and trajectory tracking, to more advanced interaction with third-party vehicles and our favourite - real-world dense robotic swarms (in the full academic sense of emergent collaborative behaviour). We will continue working on populating our library of mission types/functionalities so you can expect more in the future.

Point-to-Point Travelling Bordered Trajectory Tracking Bordered Target Following Bordered Swarm Coordination Bordered

So far we have validated FIREBRINGER on real-world boats and ground vehicles using Pixhawk Cube Orange and on copters and fixed-winged aircraft in gazebo-SITL (example shown below with real-world experiments coming soon). You can find our recent video unveiling our adapted autonomous vessel prototype at the beginning of this post.

The algorithm is meant to be easy to use and tune, only requiring basic physical characteristics of the robot (maximum linear/angular velocity and maximum acceleration for each degree of freedom of the robot), and it offers plug-n-play functionality when combined with an Ardupilot autopilot through MAVROS (essentially, the algorithm receives all required tuning parameters from Ardupilot). In this way, we aim to allow remote-control vehicle developers to easily introduce autonomous functionality in their vehicles.

It is based on a lightweight, robust NMPC-variant integrated with artificial potential field theory. It can typically run at 100Hz on a normal PC and 25Hz on a RPi4B for all vehicle types.

For people familiar with ROS2, the algorithm offers even more advanced functionality. So far, it can receive topics regarding the location of other vehicles (third-party vehicle detection and collaborative position sharing), trajectory (e.g., NAV2 global path), destination (complete pose), and various other mission specific info. We are currently working on incorporating point-cloud/costmap information for surrounding obstacle avoidance. Our aim is to allow integration with any ROS2 perception package that may be used in field robotics. The algorithm outputs an optimal velocity for each degree of freedom which is supplied to the autopilot through MAVROS setpoint_velocity/cmd_vel topic and translated to actuation control through the autopilot module.

We are currently considering creating and publishing a complete ROS2 package for the algorithm which will include easy integration with Ardupilot but we wanted to gauge interest first. If everything goes well, we will pursue making it a stable feature of the Ardupilot ecosystem. Obviously we are open to ideas and recommendations (and some criticism :stuck_out_tongue: )!

Please post a picture at the top of the post

I was hoping that the video at the beginning would be shown as an image but apparently this cannot be done automatically. If it’s of interest, I will add videos of the gazebo-SITL simulations as well. We will also update the post with results of our real-world drone experiments as soon as we have them.

Hi Geo,

incredible work you have done there. we are working on a Test-Boat and are using Ardupilot to allow research from the university to happen on the boat to create some kind of standard api towards vessels for testing different local and global path planning algorithms of boats with a real ship and not only in a simulator. so we would be interested in looking into your work and to share our experiences with our work on a bigger boat (22x8m).
Looking to see more of your incredible work :slight_smile:

1 Like