PX4 ROS 2 Interface Library
Library to interface with PX4 from a companion computer using ROS 2
waypoint_trajectory_executor.hpp
1 /****************************************************************************
2  * Copyright (c) 2024 PX4 Development Team.
3  * SPDX-License-Identifier: BSD-3-Clause
4  ****************************************************************************/
5 
6 #pragma once
7 #include <memory>
8 #include <optional>
9 #include <rclcpp/rclcpp.hpp>
10 #include <px4_ros2/mission/trajectory/trajectory_executor.hpp>
11 #include <px4_ros2/mission/mission.hpp>
12 #include <px4_ros2/components/mode.hpp>
13 #include <px4_ros2/odometry/attitude.hpp>
14 #include <px4_ros2/odometry/global_position.hpp>
15 #include <px4_ros2/control/setpoint_types/multicopter/goto.hpp>
16 
21 namespace px4_ros2::multicopter
22 {
28 {
29 public:
30  explicit WaypointTrajectoryExecutor(ModeBase & mode, float acceptance_radius = 2.0f);
31 
32  ~WaypointTrajectoryExecutor() override = default;
33 
34  bool navigationItemTypeSupported(NavigationItemType type) override;
35  bool frameSupported(MissionFrame frame) override;
36  void runTrajectory(const TrajectoryConfig & config) override;
37  void updateSetpoint() override;
38 
39 private:
40  void continueNextItem();
41  bool positionReached(const Eigen::Vector3d & target_position_m, float acceptance_radius) const;
42  bool headingReached(float target_heading_rad) const;
43 
44  TrajectoryConfig _current_trajectory;
45  const float _acceptance_radius;
46  std::shared_ptr<OdometryGlobalPosition> _vehicle_global_position;
47  std::shared_ptr<OdometryAttitude> _vehicle_attitude;
48  std::shared_ptr<MulticopterGotoGlobalSetpointType> _setpoint;
49  std::optional<int> _current_index;
50  rclcpp::Node & _node;
51 };
52 
53 } // namespace px4_ros2::multicopter
Base class for a mode.
Definition: mode.hpp:71
Interface for a trajectory executor.
Definition: trajectory_executor.hpp:22
Trajectory executor using goto setpoints.
Definition: waypoint_trajectory_executor.hpp:28
Definition: trajectory_executor.hpp:32