Skip to content

Plane: add support for Quadplane VTOL Takeoff in ROS2 #29932

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
joshua-git0 opened this issue Apr 30, 2025 · 2 comments · May be fixed by #30098
Open

Plane: add support for Quadplane VTOL Takeoff in ROS2 #29932

joshua-git0 opened this issue Apr 30, 2025 · 2 comments · May be fixed by #30098

Comments

@joshua-git0
Copy link

joshua-git0 commented Apr 30, 2025

Feature request

This is a feature request to add VTOL takeoff support for quadplanes in ROS2.

  • So far there is an experimental takeoff feature for Copter but this can't be used for quadplanes.
  • It is not possible to call ROS2 commands to have the Plane takeoff in VTOL mode from any of the other Q_ flight modes (at least from when I was testing Ardupilot SITL, Gazebo, and Mavproxy commands).
  • From https://mavlink.io/en/messages/ardupilotmega.html#PLANE_MODE%22, there is a PLANE_MODE_TAKEOFF, but there is no PLANE_MODE_QTAKEOFF.

How I'd like the solution to turn out:
I'd like to be able to call something like the following CLI command:

ros2 service call /ap/QTakeoff ardupilot_msgs/srv/QTakeoff "{altitude: 400}"

And the following in C++:

auto client_mode_switch = create_client<ardupilot_msgs::srv::QTakeoff>("ap/QTakeoff");
auto request = std::make_shared<ardupilot_msgs::srv::QTakeoff::Takeoff_Request>();
request->alt = 400;

Considered alternatives:
I've considered Mavros for its quadplane support but I've read multiple times that it's prone to bugs and that it's not ideal to combine it with ROS2. I've seen quadplane features implemented in MavSDK but I'm not sure how well this would end up working when also combining MavSDK with ROS2.

Platform
[ ] All
[ ] AntennaTracker
[ ] Copter
[ x ] Plane
[ ] Rover
[ ] Submarine

Additional context
There are tutorials such as https://discuss.ardupilot.org/t/offboard-terrain-navigation-for-plane-with-ros-2-ap-dds/114418 that show quadplanes taking off as VTOL but this is done in MavProxy while the rest of the navigation is done in ROS2.

Other References:
https://github.com/ArduPilot/ardupilot/blob/master/libraries/AP_DDS/Idl/ardupilot_msgs/srv/Takeoff.idl
https://docs.ros.org/en/foxy/Tutorials/Beginner-Client-Libraries/Writing-A-Simple-Cpp-Service-And-Client.html#write-the-service-node

@rmackay9
Copy link
Contributor

This is probably one for @Ryanf55 and/or @srmainwaring to respond on

@joshua-git0
Copy link
Author

@rmackay9 Thank you for mentioning Ryan and Rhys. So far I've tried to add in how I think the feature would be implemented - master...joshua-git0:ardupilot:master

I noticed there are the do_vtol_takeoff and set_armed functions in https://github.com/ardupilot/ardupilot/blob/master/ArduPlane/quadplane.cpp and I've been trying to understand how these would integrate with ROS2

@Ryanf55 Ryanf55 linked a pull request May 18, 2025 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants