PX4 ROS 2 Interface Library
Library to interface with PX4 from a companion computer using ROS 2
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 
10 namespace px4_ros2
11 {
12 
13 enum class PoseFrame
14 {
15  Unknown,
16  LocalNED,
17  LocalFRD
18 };
19 
20 enum class VelocityFrame
21 {
22  Unknown,
23  LocalNED,
24  LocalFRD,
25  BodyFRD
26 };
27 
28 constexpr inline uint8_t poseFrameToMessageFrame(px4_ros2::PoseFrame frame) noexcept
29 {
30  switch (frame) {
31  case PoseFrame::Unknown: return px4_msgs::msg::VehicleOdometry::POSE_FRAME_UNKNOWN;
32 
33  case PoseFrame::LocalNED: return px4_msgs::msg::VehicleOdometry::POSE_FRAME_NED;
34 
35  case PoseFrame::LocalFRD: return px4_msgs::msg::VehicleOdometry::POSE_FRAME_FRD;
36  }
37 
38  return px4_msgs::msg::VehicleOdometry::POSE_FRAME_UNKNOWN;
39 }
40 
41 constexpr inline uint8_t velocityFrameToMessageFrame(px4_ros2::VelocityFrame frame) noexcept
42 {
43  switch (frame) {
44  case VelocityFrame::Unknown: return px4_msgs::msg::VehicleOdometry::VELOCITY_FRAME_UNKNOWN;
45 
46  case VelocityFrame::LocalNED: return px4_msgs::msg::VehicleOdometry::VELOCITY_FRAME_NED;
47 
48  case VelocityFrame::LocalFRD: return px4_msgs::msg::VehicleOdometry::VELOCITY_FRAME_FRD;
49 
50  case VelocityFrame::BodyFRD: return px4_msgs::msg::VehicleOdometry::VELOCITY_FRAME_BODY_FRD;
51  }
52 
53  return px4_msgs::msg::VehicleOdometry::POSE_FRAME_UNKNOWN;
54 }
55 
56 } // namespace px4_ros2