28#include <px4_msgs/msg/vehicle_attitude.hpp>
29#include <rclcpp/rclcpp.hpp>
30#include <sensor_msgs/msg/point_cloud2.hpp>
38template <
typename TSource,
typename TOrthogonal>
43template <
typename TSource,
typename TOrthogonal>
121 void onCloud(
const sensor_msgs::msg::PointCloud2 & msg);
122 void onAttitude(
const px4_msgs::msg::VehicleAttitude::SharedPtr msg);
129 rclcpp::Subscription<px4_msgs::msg::VehicleAttitude>::SharedPtr
attitudeSub_;
std::array< float, 4 > attitudeQ_
smacc2::client_core_components::CpTopicSubscriber< sensor_msgs::msg::PointCloud2 > * subscriber_
CpForwardObstacleGuard(ForwardObstacleGuardParams params={})
float lastYawRate() const
ForwardObstacleGuardParams params_
virtual ~CpForwardObstacleGuard()
std::mutex attitudeMutex_
void onAttitude(const px4_msgs::msg::VehicleAttitude::SharedPtr msg)
smacc2::SmaccSignalConnection onObstacleTooClose(void(T::*callback)(), T *object)
const ForwardObstacleGuardParams & params() const
std::atomic< int > lastHits_
std::atomic< float > lastMinRange_
bool levelRotation(std::array< float, 9 > &r) const
void onCloud(const sensor_msgs::msg::PointCloud2 &msg)
smacc2::SmaccSignalConnection onObstacleCleared(void(T::*callback)(), T *object)
smacc2::SmaccSignal< void()> onObstacleCleared_
float lastMinRange() const
rclcpp::Subscription< px4_msgs::msg::VehicleAttitude >::SharedPtr attitudeSub_
std::atomic< bool > tooClose_
void onInitialize() override
smacc2::SmaccSignal< void()> onObstacleTooClose_
std::atomic< float > yawRate_
ISmaccStateMachine * getStateMachine()
smacc2::SmaccSignalConnection createSignalConnection(TSmaccSignal &signal, TMemberFunctionPrototype callback, TSmaccObjectType *object)
boost::signals2::connection SmaccSignalConnection