So me (Bitcraze) and Ramón (Drone Code foundation) were wondering about the current state of Aerial robotics in ROS. For those that were at ROScon, we setup a meetup and about 30 people showed up (See this tweet)!
Some time is passed and we have not seen that many activity happening in this category, so we want to gauge how big the aerial robotics community really is! And it would also be interesting to know what is still missing in the ROS framework to fully accommodate quadcopters or other flying platforms.
If anybody could perhaps answer the following questions in this thread?
Name and affiliation?
Which aerial platform do you use, autopilot and which ROS package?
What are you still missing in ROS framework for your platform and project?
Name and affiliation?
Kimberly McGuire, Bitcraze AB Which aerial platform do you use, autopilot and which ROS package?
The Crazyflie, with the crazyflie-firmware and python library. Currently helping out with the community ROS2 package Crazyswarm2 What are you still missing in ROS framework for your platform and project?
I love the visualization tools, but we need to still use a lot of own defined manual messages and services for take off, landing are necessary. MicroROS has great merit to provide a standard of communication though.
Update: I forgot to mention that I also worked on interfacing the Crazyflie with NAV2, as I talked about at ROScon kyoto.
Thanks for the post @KimMcG, I’m excited to meet more folks with similar interests
Name and affiliation?
Ramon Roche, General Manager, Dronecode Foundation Which aerial platform do you use, autopilot, and which ROS package?
PX4 Autopilot What are you still missing in ROS framework for your platform and project?
Better integration between PX4/microROS/ROS 2
I would also like to to point out Aerostack2 (github). They have made packages for Humble, and are very active. They are participating in top international competitions with good results, and this is the software they are using.
They are also part of the Coresense EU project, so they will include cognitive components soon.
Hello everyone !! Thanks @fmrico for pointing out the Aerostack2 framework. We are very interested in knowing which are the needs and interests of the aerial robotics ROS community.
Name and affiliation?
Miguel Fernandez-Cortizas, Researcher in the Computer Vision and Aerial Robotics (CVAR) group, at Polytechnic University of Madrid.
Which aerial platform do you use, autopilot, and which ROS package?
We use PX4 autopilot, Crazyflie, DJI Matrice Series and Ryze Tello (for the PX4 we use PX4-msgs and PX4_ros_comm rso2 pkgs, and for Crazyflie, DJI Matrice and Tello we use our ros2 drivers based on cpp libraries like crazyflie-firmware, DJI OSDK and Tello SDK) For GNC and mission planning and monitoring we use Aerostack2 framework.
What are you still missing in ROS framework for your platform and project?
Better integration between PX4/microROS/ROS 2, An easier way to take advantage of the development of the algorithms ( control, state estimation … ) developed by the aerial community in an easier way to improve the overall development of powerfull capabilities for aerial robots, something like what Nav2 provides to the Ground Robots community.
Which aerial platform do you use, autopilot and which ROS package?
Various, PX4 and ardupilot. Many ROS packages, depends of the use case.
What are you still missing in ROS framework for your platform and project?
Removing unnecessary bridges (mavros, micro-ROS, etc.). Achieve ROS-nativeness on the autopilot side. Some prior work on this direction was done before [1] demonstrating how uORB was completely replaced by a fully fledged DDS implementation.
I’d like to see an upstream native integration between ROS and PX4. In other words, enhance uORB within PX4 with a microcontroller-friendly (that’s accepted by Dronecode community) native DDS implementation (e.g. this one) that allows for native ROS 2 inter-process and intra-network communications.
Name and affiliation?
Sergi Grau-Moya, Unmanned Life
Which aerial platform do you use, autopilot and which ROS package?
Our development is based on PX4 Autopilot (ModalAI, Iris, X8) with Mavros and DJI Matrice series with DJI OSDK and OSDK-ROS. We use BehaviorTree.CPP extensively and inspired by nav2.
What are you still missing in ROS framework for your platform and project?
We see three main focus areas:
Reduce overhead on autopilot bridges.
Addressing DDS communication problems over WAN behind NAT. For now, we are using husarnet.
Nav stack for aerial robots. We were not aware of Aerostack2, indeed a really interesting project.
Which aerial platform do you use, autopilot and which ROS package?
Mainly PX4 and ROS 1 / Mavros. Tried different ROS2 solutions to PX4 interfacing. Multirotor kits used in research include Holybro X500, QAV250, TDrones M690B, DJI S1000. Now setting up 10 Crazyflies. We use mostly Tello drones for teaching; looking into replacing them with crazyflies, maybe with a similar camera setup as this very nice solution from Priceton.
What are you still missing in ROS framework for your platform and project?
As has already been mentioned in the thread, mainly better interfacing to the autopilots (already going in a nice direction with PX4 and ROS 2). The Aerostack2 or KumarRobotics projects, among others, provide lots of interesting tools and algorithms but there are too many approaches to state estimation to cover and aerial robots vary quite much. Not sure if it’s worth trying to find common ground or some type of standard approach that would work in different platforms more easily.
Which aerial platform do you use, autopilot and which ROS package?
I’m working on the Puma platform, a hand launched fixed wing UAV with camera gimbal. Our autopilot is custom. We currently use ROS1, but are considering migrating to ROS2. We also use DDS. Aerovironment also has other platforms that could be candidates for ROS/ROS2.
What are you still missing in ROS framework for your platform and project?
To start, we use wholly custom messages right now. When porting to ROS2, we would be in favor of adopting the ROS-REP147 draft rather than our custom messages to increase interoperability with frameworks like aerostack and nav2 if they also agreed to standardize. NAV2 already has features like waypoint navigation, and navigation in 2.5D, we can’t yet easily use it.
Next is likely simulation - being able to simulate a fixed wing platform in gazebo.
I’m on board with @vmayoral about removing unnecessary bridges. If PX4 supported DDS natively and was adherent to ROS-REP147 that would be ideal. Right now, it does not appear that uORB messages, and thus anything mavros, is stable within a ROS2 release like humble. Using ROS-REP147 would be a way to maintain ABI stability within a ROS2 release, and not require ROS2 application developers change their code every time uORB changes.
Name and affiliation?
Andrew Wilkins - Ascend Engineering
Which aerial platform do you use, autopilot and which ROS package?
PX4 and ROS2 Foxy (ModalAI for our clients mostly, with a bit of jetson as well)
What are you still missing in ROS framework for your platform and project?
We were having an issue with documentation a while ago, but we have worked through that. To be honest we use MAVSDK and wrap ROS around it as this is much easier than working with MAVROS to get things done
Airframes I use include tiltrotor VTOL vehicle(based on the Make Fly Easy Freeman) / Fixedwing vehicle(based on the Make Fly Easy Believer/Multiplex Easyglider) and a Quadrotor (Holybro PX4 Vision)
What are you still missing in ROS framework for your platform and project?
I use Rviz as a visualization tool, and it is quite limiting in terms of rendering capabilities especially when trying to deploy on large scenes. This seems to be similar in ROS1 and ROS2
When deploying in large environments, integration into GIS tools are missing and require custom integrations to work with them.
The overall command and control interface still heavily relies on custom rviz plugins and other GCS tools such as QGC. It would be nice to be able to integrate the command and control interface into a nice framework.
Which aerial platform do you use, autopilot and which ROS package?
I run a Hexoon 450 with PX4 and a Raspberry PI 4. I have translated the ROS2 Navigation stack to a full 3D navigation stack. (See my work on Github). Today it is using Foxy, but I am sure an upgrade to the later versions would only be a recompile.
I address the PX4 via MavSDK with my drone_mavsdk node. I have also done a Fast RTPS node, but have stopped developing it as mav_sdk is easier integrated into ROS2, and all i really need is to read GPS, Odometry and to pass mode commands (Takeoff, Land, Offboard) and velocity commands. In reality, I use very little of what PX4 offers.
I have applied the behaviour tree library to build a flight control node that integrates the navigation stack into a bigger robot. With this node i am able to calculate flight path of waypoints to cover a field, use my navigation stack to fly to the next waypoint, then call a camera module to take a picture at the waypoint for instance.
I have also developed a ground control station where I can launch the robot with a single button press. This initiates the flight control node to execute a selected behaviour tree.
This landscape is mostly coded now, and just needs more thorough testing.
What are you still missing in ROS framework for your platform project?
Can’t say there is anything that I miss. (I just need more time to build out the work)
Name and affiliation?
Andres Palomino, researcher at the Aerial Robotics team at Eurecat
Which aerial platform do you use, autopilot and which ROS package?
DJI matrice series with DJI ROS OSDK, and tailored platforms with PX4 and DJI autopilots. We use ROSPlan and BT at mission level. Packages used for high-level planning, control as well as localization differ with the particular application.
What are you still missing in ROS framework for your platform and project?
Effective debugging tools
Dedicated hardware to ROS to avoid ROS bridges and distribution dependency
This is great! Very awesome to see some replies here, and learning a lot!
So if I may make a summary so far:
About 60 % of you are from industry, 30 % from Academia and 10 % Hobbiysts
You use UAVs from all kinds of different types, mostly fixed wing and quadcopters. It seems that most of you have made your own platform, but some have used the DJI platforms, Crazyflie or combined ready platforms like with Holybro
Almost all of you use the PX4 autopilot, with various mentions of the DJI SDK, Crazyflie firmware and ardupilot
Half of you have experience with MAVros for ROS1 and have experimented with different navigation tools already existing. A handfull have started to make their own Aerial navigation stack
The biggest issue mentioned is the need for better intergration of their autopilot with ROS2, which co-relates to the second mention issue: ‘reducing autopilot bridges’. The 3rd is expressing the need for an Aerial robotics navigation stack, aka the ‘NAV2’ for UAVs. Some mentioned also a need for standardization (ROS-REP147 that @RFRIEDM mentioned)
So… is this perhaps good grounds to start some kind of explorative online meeting with us all? Is this something any of you would be interested in?
Name and affiliation?
Pierre Kancir, Freelance in robotics
Which aerial platform do you use, autopilot and which ROS package?
Mainly ArduPilot framework, on various drone type (multicopter, UGV, and submarines) and frame for industry and labs.
Integration with ROS was done with MAVRos and some custom development.
What are you still missing in ROS framework for your platform and project?
Standardized workflow for UAV usage (how to take off ? send waypoint ?),
Standard safety behavior tree on ROS
Which aerial platform do you use, autopilot and which ROS package?
Currently using PX4- but looking to move to Ardupilot. Currently using a heavily modified PX4 Vision 1.5 quadcopter that is running ROS Melodic.
What are you still missing in ROS framework for your platform and project?
PX4 and ROS2 doesn’t seem to be very active and as such- seems to have fallen behind. Community support for PX4 is very very low and questions often go unanswered on the forums/github.
Honestly I don’t see a standard between platforms on how ROS2 is being implemented and because of that- we have tons of different implementations for quads and ROS2. Knowing which standard is the best or which one we should be putting time towards would be really helpful.