mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-27 18:27:05 +08:00
autopilot_tester: Add mavlink passthrough to end custom commands
This commit is contained in:
@@ -36,6 +36,8 @@ if(MAVSDK_FOUND)
|
|||||||
${CMAKE_THREAD_LIBS_INIT}
|
${CMAKE_THREAD_LIBS_INIT}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
target_include_directories(mavsdk_tests PUBLIC ${CMAKE_BINARY_DIR}/..)
|
||||||
|
|
||||||
target_compile_options(mavsdk_tests
|
target_compile_options(mavsdk_tests
|
||||||
PRIVATE
|
PRIVATE
|
||||||
-Wall
|
-Wall
|
||||||
|
|||||||
@@ -76,6 +76,7 @@ void AutopilotTester::connect(const std::string uri)
|
|||||||
_offboard.reset(new Offboard(system));
|
_offboard.reset(new Offboard(system));
|
||||||
_param.reset(new Param(system));
|
_param.reset(new Param(system));
|
||||||
_telemetry.reset(new Telemetry(system));
|
_telemetry.reset(new Telemetry(system));
|
||||||
|
_mavlink_passthrough.reset(new MavlinkPassthrough(system));
|
||||||
}
|
}
|
||||||
|
|
||||||
void AutopilotTester::wait_until_ready()
|
void AutopilotTester::wait_until_ready()
|
||||||
@@ -643,6 +644,22 @@ void AutopilotTester::execute_rtl_when_reaching_mission_sequence(int sequence_nu
|
|||||||
execute_rtl();
|
execute_rtl();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AutopilotTester::send_custom_mavlink_command(const MavlinkPassthrough::CommandInt &command)
|
||||||
|
{
|
||||||
|
_mavlink_passthrough->send_command_int(command);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AutopilotTester::send_custom_mavlink_message(mavlink_message_t &message)
|
||||||
|
{
|
||||||
|
_mavlink_passthrough->send_message(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AutopilotTester::add_mavlink_message_callback(uint16_t message_id,
|
||||||
|
std::function< void(const mavlink_message_t &)> callback)
|
||||||
|
{
|
||||||
|
_mavlink_passthrough->subscribe_message_async(message_id, std::move(callback));
|
||||||
|
}
|
||||||
|
|
||||||
std::array<float, 3> AutopilotTester::get_current_position_ned()
|
std::array<float, 3> AutopilotTester::get_current_position_ned()
|
||||||
{
|
{
|
||||||
mavsdk::Telemetry::PositionVelocityNed position_velocity_ned = _telemetry->position_velocity_ned();
|
mavsdk::Telemetry::PositionVelocityNed position_velocity_ned = _telemetry->position_velocity_ned();
|
||||||
|
|||||||
@@ -39,6 +39,7 @@
|
|||||||
#include <mavsdk/plugins/failure/failure.h>
|
#include <mavsdk/plugins/failure/failure.h>
|
||||||
#include <mavsdk/plugins/info/info.h>
|
#include <mavsdk/plugins/info/info.h>
|
||||||
#include <mavsdk/plugins/manual_control/manual_control.h>
|
#include <mavsdk/plugins/manual_control/manual_control.h>
|
||||||
|
#include <mavsdk/plugins/mavlink_passthrough/mavlink_passthrough.h>
|
||||||
#include <mavsdk/plugins/mission/mission.h>
|
#include <mavsdk/plugins/mission/mission.h>
|
||||||
#include <mavsdk/plugins/mission_raw/mission_raw.h>
|
#include <mavsdk/plugins/mission_raw/mission_raw.h>
|
||||||
#include <mavsdk/plugins/offboard/offboard.h>
|
#include <mavsdk/plugins/offboard/offboard.h>
|
||||||
@@ -48,6 +49,7 @@
|
|||||||
#include <atomic>
|
#include <atomic>
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
|
#include <functional>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <optional>
|
#include <optional>
|
||||||
@@ -143,6 +145,9 @@ public:
|
|||||||
void stop_checking_altitude();
|
void stop_checking_altitude();
|
||||||
void check_current_altitude(float target_rel_altitude_m, float max_distance_m = 1.5f);
|
void check_current_altitude(float target_rel_altitude_m, float max_distance_m = 1.5f);
|
||||||
void execute_rtl_when_reaching_mission_sequence(int sequence_number);
|
void execute_rtl_when_reaching_mission_sequence(int sequence_number);
|
||||||
|
void send_custom_mavlink_command(const MavlinkPassthrough::CommandInt &command);
|
||||||
|
void send_custom_mavlink_message(mavlink_message_t &message);
|
||||||
|
void add_mavlink_message_callback(uint16_t message_id, std::function< void(const mavlink_message_t &)> callback);
|
||||||
|
|
||||||
// Blocking call to get the drone's current position in NED frame
|
// Blocking call to get the drone's current position in NED frame
|
||||||
std::array<float, 3> get_current_position_ned();
|
std::array<float, 3> get_current_position_ned();
|
||||||
@@ -156,8 +161,11 @@ protected:
|
|||||||
mavsdk::Param *getParams() const { return _param.get();}
|
mavsdk::Param *getParams() const { return _param.get();}
|
||||||
mavsdk::Telemetry *getTelemetry() const { return _telemetry.get();}
|
mavsdk::Telemetry *getTelemetry() const { return _telemetry.get();}
|
||||||
mavsdk::ManualControl *getManualControl() const { return _manual_control.get();}
|
mavsdk::ManualControl *getManualControl() const { return _manual_control.get();}
|
||||||
|
MavlinkPassthrough *getMavlinkPassthrough() const { return _mavlink_passthrough.get();}
|
||||||
std::shared_ptr<System> get_system() { return _mavsdk.systems().at(0);}
|
std::shared_ptr<System> get_system() { return _mavsdk.systems().at(0);}
|
||||||
Telemetry::GroundTruth getHome()
|
mavsdk::geometry::CoordinateTransformation get_coordinate_transformation();
|
||||||
|
|
||||||
|
const Telemetry::GroundTruth &getHome()
|
||||||
{
|
{
|
||||||
// Check if home was stored before it is accessed
|
// Check if home was stored before it is accessed
|
||||||
CHECK(_home.absolute_altitude_m != NAN);
|
CHECK(_home.absolute_altitude_m != NAN);
|
||||||
@@ -192,7 +200,6 @@ protected:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
mavsdk::geometry::CoordinateTransformation get_coordinate_transformation();
|
|
||||||
mavsdk::Mission::MissionItem create_mission_item(
|
mavsdk::Mission::MissionItem create_mission_item(
|
||||||
const mavsdk::geometry::CoordinateTransformation::LocalCoordinate &local_coordinate,
|
const mavsdk::geometry::CoordinateTransformation::LocalCoordinate &local_coordinate,
|
||||||
const MissionOptions &mission_options,
|
const MissionOptions &mission_options,
|
||||||
@@ -274,6 +281,7 @@ private:
|
|||||||
std::unique_ptr<mavsdk::Failure> _failure{};
|
std::unique_ptr<mavsdk::Failure> _failure{};
|
||||||
std::unique_ptr<mavsdk::Info> _info{};
|
std::unique_ptr<mavsdk::Info> _info{};
|
||||||
std::unique_ptr<mavsdk::ManualControl> _manual_control{};
|
std::unique_ptr<mavsdk::ManualControl> _manual_control{};
|
||||||
|
std::unique_ptr<MavlinkPassthrough> _mavlink_passthrough;
|
||||||
std::unique_ptr<mavsdk::Mission> _mission{};
|
std::unique_ptr<mavsdk::Mission> _mission{};
|
||||||
std::unique_ptr<mavsdk::MissionRaw> _mission_raw{};
|
std::unique_ptr<mavsdk::MissionRaw> _mission_raw{};
|
||||||
std::unique_ptr<mavsdk::Offboard> _offboard{};
|
std::unique_ptr<mavsdk::Offboard> _offboard{};
|
||||||
|
|||||||
Reference in New Issue
Block a user