Is ROS a good choice for UAVs?

asked 2019-06-19 17:40:51 -0500

evandp gravatar image

I am on a team at school that creates an autonomous aircraft, and we are considering changing the framework that we use for our on board software. We are investigating ROS as a potential solution along with MAVROS to communicate with our autopilot. I’m worried, however, that the performance of ROS is less than desirable and it could cause us issues, especially since we this application is very real-time.

Specifically, our system would need to:

Run some neural networks on large images (images are ~20.1 MP and come in at ~1 per 3 seconds)

Control a gimbal that is capable of tracking GPS coordinates

Control a camera that is synchronized with the gimbal movements

Drop a payload from the plane

Communicate with ground servers with a low bandwidth and unreliable connection.

Our system would not be responsible for anything that concerns the actual flight of the aircraft. This is already done by our FCU (pixhawk cube running ardupilot), but this does make it necessary to convert between MAVLink messages and ROS messages via MAVROS.

Would ROS give performance issues for any of these tasks? We have also seen that ROS2 addresses some performance issues but MAVROS as of now does not have support for ROS2, so we would need to use a bridge between the two. Any suggestions would be greatly appreciated!

edit retag flag offensive close merge delete


You should be fine using ROS. How are you running the neural network? Is it on a GPU? You also mentioned that you need to communicate with ground servers with a low bandwidth connection, this may create bottlenecks in the network. You may want to look into something that fixes the lost signals and avoids timeouts across the ROS network. But for everything else ROS is quite useful.

sumantra94 gravatar image sumantra94  ( 2019-06-20 02:08:15 -0500 )edit

Yeah, we're using an NVIDIA TX2 as our OBC, so we plan to use the GPU capabilities for the neural networks.

evandp gravatar image evandp  ( 2019-06-20 14:53:03 -0500 )edit