28#include <px4_msgs/msg/vehicle_attitude.hpp>
29#include <rclcpp/rclcpp.hpp>
30#include <sensor_msgs/msg/point_cloud2.hpp>
113 void onCloud(
const sensor_msgs::msg::PointCloud2 & msg);
114 void onAttitude(
const px4_msgs::msg::VehicleAttitude::SharedPtr msg);
119 rclcpp::Subscription<px4_msgs::msg::VehicleAttitude>::SharedPtr
attitudeSub_;
std::chrono::steady_clock::time_point lastLog_
std::atomic< float > floor_
std::atomic< int64_t > lastCloudNs_
TunnelCenteringParams params_
std::atomic< float > right_
std::mutex attitudeMutex_
void onInitialize() override
CpTunnelCentering(TunnelCenteringParams params={})
rclcpp::Subscription< px4_msgs::msg::VehicleAttitude >::SharedPtr attitudeSub_
float verticalOffsetM() const
void onCloud(const sensor_msgs::msg::PointCloud2 &msg)
std::atomic< float > left_
std::atomic< float > ceiling_
float lateralOffsetM() const
void onAttitude(const px4_msgs::msg::VehicleAttitude::SharedPtr msg)
smacc2::client_core_components::CpTopicSubscriber< sensor_msgs::msg::PointCloud2 > * subscriber_
const TunnelCenteringParams & params() const
std::atomic< float > vertical_
std::atomic< float > lateral_
virtual ~CpTunnelCentering()
std::array< float, 4 > attitudeQ_
float wallBandHalfHeightM