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{
12
13enum class PoseFrame
14{
15 Unknown,
16 LocalNED,
17 LocalFRD
18};
19
20enum class VelocityFrame
21{
22 Unknown,
23 LocalNED,
24 LocalFRD,
25 BodyFRD
26};
27
28constexpr 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
41constexpr 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