SMACC2
Loading...
Searching...
No Matches
cl_px4_mr::CpTrajectorySetpoint Class Reference

#include <cp_trajectory_setpoint.hpp>

Inheritance diagram for cl_px4_mr::CpTrajectorySetpoint:
Inheritance graph
Collaboration diagram for cl_px4_mr::CpTrajectorySetpoint:
Collaboration graph

Public Member Functions

 CpTrajectorySetpoint ()
 
virtual ~CpTrajectorySetpoint ()
 
void onInitialize () override
 
void setPositionNED (float x, float y, float z, float yaw=std::numeric_limits< float >::quiet_NaN())
 
void hold ()
 
void republishLast ()
 
px4_msgs::msg::TrajectorySetpoint getLastSetpoint () const
 
- Public Member Functions inherited from smacc2::ISmaccComponent
 ISmaccComponent ()
 
virtual ~ISmaccComponent ()
 
virtual std::string getName () const
 

Private Attributes

rclcpp::Publisher< px4_msgs::msg::TrajectorySetpoint >::SharedPtr publisher_
 
CpVehicleLocalPositionlocalPosition_ = nullptr
 
px4_msgs::msg::TrajectorySetpoint lastSetpoint_
 
std::mutex mutex_
 
bool hasPublished_ = false
 

Additional Inherited Members

- Protected Member Functions inherited from smacc2::ISmaccComponent
template<typename TOrthogonal , typename TClient >
void onComponentInitialization ()
 
template<typename EventType >
void postEvent (const EventType &ev)
 
template<typename EventType >
void postEvent ()
 
template<typename TOrthogonal , typename TSourceObject >
void onStateOrthogonalAllocation ()
 
template<typename TComponent >
void requiresComponent (TComponent *&requiredComponentStorage, ComponentRequirement requirementType=ComponentRequirement::SOFT)
 
template<typename TComponent >
void requiresComponent (std::string name, TComponent *&requiredComponentStorage, ComponentRequirement requirementType=ComponentRequirement::SOFT)
 
template<typename TClient >
void requiresClient (TClient *&requiredClientStorage)
 
template<typename SmaccComponentType , typename TOrthogonal , typename TClient , typename... TArgs>
SmaccComponentType * createSiblingComponent (TArgs... targs)
 
template<typename SmaccComponentType , typename TOrthogonal , typename TClient , typename... TArgs>
SmaccComponentType * createSiblingNamedComponent (std::string name, TArgs... targs)
 
rclcpp::Node::SharedPtr getNode ()
 
rclcpp::Logger getLogger () const
 
ISmaccStateMachinegetStateMachine ()
 
- Protected Attributes inherited from smacc2::ISmaccComponent
ISmaccStateMachinestateMachine_
 
ISmaccClientowner_
 

Detailed Description

Definition at line 28 of file cp_trajectory_setpoint.hpp.

Constructor & Destructor Documentation

◆ CpTrajectorySetpoint()

cl_px4_mr::CpTrajectorySetpoint::CpTrajectorySetpoint ( )

Definition at line 21 of file cp_trajectory_setpoint.cpp.

21{}

◆ ~CpTrajectorySetpoint()

cl_px4_mr::CpTrajectorySetpoint::~CpTrajectorySetpoint ( )
virtual

Definition at line 23 of file cp_trajectory_setpoint.cpp.

23{}

Member Function Documentation

◆ getLastSetpoint()

px4_msgs::msg::TrajectorySetpoint cl_px4_mr::CpTrajectorySetpoint::getLastSetpoint ( ) const

Definition at line 95 of file cp_trajectory_setpoint.cpp.

96{
97 std::lock_guard<std::mutex> lock(mutex_);
98 return lastSetpoint_;
99}
px4_msgs::msg::TrajectorySetpoint lastSetpoint_

References lastSetpoint_, and mutex_.

◆ hold()

void cl_px4_mr::CpTrajectorySetpoint::hold ( )

Definition at line 72 of file cp_trajectory_setpoint.cpp.

73{
75 {
76 RCLCPP_WARN(getLogger(), "CpTrajectorySetpoint::hold() - position not yet valid, skipping");
77 return;
78 }
79
83}
void setPositionNED(float x, float y, float z, float yaw=std::numeric_limits< float >::quiet_NaN())
rclcpp::Logger getLogger() const

References cl_px4_mr::CpVehicleLocalPosition::getHeading(), smacc2::ISmaccComponent::getLogger(), cl_px4_mr::CpVehicleLocalPosition::getX(), cl_px4_mr::CpVehicleLocalPosition::getY(), cl_px4_mr::CpVehicleLocalPosition::getZ(), cl_px4_mr::CpVehicleLocalPosition::isValid(), localPosition_, and setPositionNED().

Referenced by cl_px4_mr::CbTakeOff::onEntry().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ onInitialize()

void cl_px4_mr::CpTrajectorySetpoint::onInitialize ( )
overridevirtual

Reimplemented from smacc2::ISmaccComponent.

Definition at line 25 of file cp_trajectory_setpoint.cpp.

26{
27 auto node = this->getNode();
28 publisher_ = node->create_publisher<px4_msgs::msg::TrajectorySetpoint>(
29 "/fmu/in/trajectory_setpoint", rclcpp::QoS(1).best_effort());
30
32
33 // Initialize lastSetpoint_ with NaNs
34 auto nan = std::numeric_limits<float>::quiet_NaN();
35 lastSetpoint_.position = {nan, nan, nan};
36 lastSetpoint_.velocity = {nan, nan, nan};
37 lastSetpoint_.acceleration = {nan, nan, nan};
38 lastSetpoint_.jerk = {nan, nan, nan};
39 lastSetpoint_.yaw = nan;
40 lastSetpoint_.yawspeed = nan;
41
42 RCLCPP_INFO(
43 getLogger(), "CpTrajectorySetpoint: publisher created on /fmu/in/trajectory_setpoint");
44}
rclcpp::Publisher< px4_msgs::msg::TrajectorySetpoint >::SharedPtr publisher_
void requiresComponent(TComponent *&requiredComponentStorage, ComponentRequirement requirementType=ComponentRequirement::SOFT)
rclcpp::Node::SharedPtr getNode()

References smacc2::ISmaccComponent::getLogger(), smacc2::ISmaccComponent::getNode(), lastSetpoint_, localPosition_, publisher_, and smacc2::ISmaccComponent::requiresComponent().

Here is the call graph for this function:

◆ republishLast()

void cl_px4_mr::CpTrajectorySetpoint::republishLast ( )

Definition at line 85 of file cp_trajectory_setpoint.cpp.

86{
87 std::lock_guard<std::mutex> lock(mutex_);
88 if (!hasPublished_) return;
89
90 auto node = this->getNode();
91 lastSetpoint_.timestamp = node->get_clock()->now().nanoseconds() / 1000;
92 publisher_->publish(lastSetpoint_);
93}

References smacc2::ISmaccComponent::getNode(), hasPublished_, lastSetpoint_, mutex_, and publisher_.

Referenced by cl_px4_mr::CpOffboardKeepAlive::update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setPositionNED()

void cl_px4_mr::CpTrajectorySetpoint::setPositionNED ( float x,
float y,
float z,
float yaw = std::numeric_limits<float>::quiet_NaN() )

Definition at line 46 of file cp_trajectory_setpoint.cpp.

47{
48 auto node = this->getNode();
49 auto nan = std::numeric_limits<float>::quiet_NaN();
50
51 px4_msgs::msg::TrajectorySetpoint msg;
52 msg.timestamp = node->get_clock()->now().nanoseconds() / 1000;
53 msg.position = {x, y, z};
54 msg.velocity = {nan, nan, nan};
55 msg.acceleration = {nan, nan, nan};
56 msg.jerk = {nan, nan, nan};
57 msg.yaw = yaw;
58 msg.yawspeed = nan;
59
60 publisher_->publish(msg);
61
62 {
63 std::lock_guard<std::mutex> lock(mutex_);
64 lastSetpoint_ = msg;
65 hasPublished_ = true;
66 }
67
68 RCLCPP_INFO(
69 getLogger(), "CpTrajectorySetpoint: position NED [%.2f, %.2f, %.2f] yaw=%.2f", x, y, z, yaw);
70}

References smacc2::ISmaccComponent::getLogger(), smacc2::ISmaccComponent::getNode(), hasPublished_, lastSetpoint_, mutex_, and publisher_.

Referenced by hold(), cl_px4_mr::CbGoToLocation::onEntry(), cl_px4_mr::CbOrbitLocation::onEntry(), cl_px4_mr::CbTakeOff::onEntry(), and cl_px4_mr::CbOrbitLocation::update().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ hasPublished_

bool cl_px4_mr::CpTrajectorySetpoint::hasPublished_ = false
private

Definition at line 48 of file cp_trajectory_setpoint.hpp.

Referenced by republishLast(), and setPositionNED().

◆ lastSetpoint_

px4_msgs::msg::TrajectorySetpoint cl_px4_mr::CpTrajectorySetpoint::lastSetpoint_
private

◆ localPosition_

CpVehicleLocalPosition* cl_px4_mr::CpTrajectorySetpoint::localPosition_ = nullptr
private

Definition at line 45 of file cp_trajectory_setpoint.hpp.

Referenced by hold(), and onInitialize().

◆ mutex_

std::mutex cl_px4_mr::CpTrajectorySetpoint::mutex_
mutableprivate

Definition at line 47 of file cp_trajectory_setpoint.hpp.

Referenced by getLastSetpoint(), republishLast(), and setPositionNED().

◆ publisher_

rclcpp::Publisher<px4_msgs::msg::TrajectorySetpoint>::SharedPtr cl_px4_mr::CpTrajectorySetpoint::publisher_
private

Definition at line 44 of file cp_trajectory_setpoint.hpp.

Referenced by onInitialize(), republishLast(), and setPositionNED().


The documentation for this class was generated from the following files: