PX4 ROS 2 Interface Library
Library to interface with PX4 from a companion computer using ROS 2
Loading...
Searching...
No Matches
frame.hpp
1/****************************************************************************
2 * Copyright (c) 2023 PX4 Development Team.
3 * SPDX-License-Identifier: BSD-3-Clause
4 ****************************************************************************/
5
6#pragma once
7
8#include <px4_msgs/msg/vehicle_odometry.hpp>
9
10namespace px4_ros2 {
11
12enum class PoseFrame { Unknown, LocalNED, LocalFRD };
13
14enum class VelocityFrame { Unknown, LocalNED, LocalFRD, BodyFRD };
15
16constexpr inline uint8_t poseFrameToMessageFrame(px4_ros2::PoseFrame frame) noexcept
17{
18 switch (frame) {
19 case PoseFrame::Unknown:
20 return px4_msgs::msg::VehicleOdometry::POSE_FRAME_UNKNOWN;
21
22 case PoseFrame::LocalNED:
23 return px4_msgs::msg::VehicleOdometry::POSE_FRAME_NED;
24
25 case PoseFrame::LocalFRD:
26 return px4_msgs::msg::VehicleOdometry::POSE_FRAME_FRD;
27 }
28
29 return px4_msgs::msg::VehicleOdometry::POSE_FRAME_UNKNOWN;
30}
31
32constexpr inline uint8_t velocityFrameToMessageFrame(px4_ros2::VelocityFrame frame) noexcept
33{
34 switch (frame) {
35 case VelocityFrame::Unknown:
36 return px4_msgs::msg::VehicleOdometry::VELOCITY_FRAME_UNKNOWN;
37
38 case VelocityFrame::LocalNED:
39 return px4_msgs::msg::VehicleOdometry::VELOCITY_FRAME_NED;
40
41 case VelocityFrame::LocalFRD:
42 return px4_msgs::msg::VehicleOdometry::VELOCITY_FRAME_FRD;
43
44 case VelocityFrame::BodyFRD:
45 return px4_msgs::msg::VehicleOdometry::VELOCITY_FRAME_BODY_FRD;
46 }
47
48 return px4_msgs::msg::VehicleOdometry::POSE_FRAME_UNKNOWN;
49}
50
51} // namespace px4_ros2