Skip to content

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

@joshua-git0

Description

@joshua-git0

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions