PX4 ROS 2 Interface Library
Library to interface with PX4 from a companion computer using ROS 2
Loading...
Searching...
No Matches
home_position.hpp
1/****************************************************************************
2 * Copyright (c) 2023-2024 PX4 Development Team.
3 * SPDX-License-Identifier: BSD-3-Clause
4 ****************************************************************************/
5
6#pragma once
7
8#include <Eigen/Eigen>
9#include <px4_msgs/msg/home_position.hpp>
10#include <px4_ros2/common/context.hpp>
11#include <px4_ros2/utils/message_version.hpp>
12#include <px4_ros2/utils/subscription.hpp>
13
14namespace px4_ros2 {
24class HomePosition : public Subscription<px4_msgs::msg::HomePosition> {
25 public:
26 explicit HomePosition(Context& context)
28 context, "fmu/out/home_position" +
29 +px4_ros2::getMessageNameVersion<px4_msgs::msg::HomePosition>())
30 {
31 }
32
38 Eigen::Vector3f localPosition() const
39 {
40 const px4_msgs::msg::HomePosition& home = last();
41 return Eigen::Vector3f{home.x, home.y, home.z};
42 }
43
50 Eigen::Vector3d globalPosition() const
51 {
52 const px4_msgs::msg::HomePosition& home = last();
53 return Eigen::Vector3d{home.lat, home.lon, home.alt};
54 }
55
61 float yaw() const { return last().yaw; }
62
68 bool localPositionValid() const { return lastValid() && last().valid_lpos; }
69
75 bool globaHorizontalPositionValid() const { return lastValid() && last().valid_hpos; }
76
82 bool altitudeValid() const { return lastValid() && last().valid_alt; }
83
89 bool manualHome() const { return last().manual_home; }
90};
91
93} /* namespace px4_ros2 */
Definition context.hpp:18
Provides access to the vehicle's home position.
Definition home_position.hpp:24
bool localPositionValid() const
Check if vehicle's local home position is valid (xyz).
Definition home_position.hpp:68
bool globaHorizontalPositionValid() const
Check if vehicle's global horizontal home position is valid (lat, lon).
Definition home_position.hpp:75
Eigen::Vector3d globalPosition() const
Get the vehicle's home position in global coordinates.
Definition home_position.hpp:50
Eigen::Vector3f localPosition() const
Get the vehicle's home position in local coordinates.
Definition home_position.hpp:38
float yaw() const
Get the vehicle's home position yaw.
Definition home_position.hpp:61
bool manualHome() const
Check if home position has been set manually.
Definition home_position.hpp:89
bool altitudeValid() const
Check if vehicle's home position altitude is valid.
Definition home_position.hpp:82
Provides a subscription to arbitrary ROS topics.
Definition subscription.hpp:27
bool lastValid(const std::chrono::duration< int64_t, DurationT > max_delay=500ms) const
Check whether the last message is still valid. To be valid, the message must have been received withi...
Definition subscription.hpp:80
const px4_msgs::msg::HomePosition & last() const
Get the last-received message.
Definition subscription.hpp:57