|
| | CbFigureEight (float centerX, float centerY, float altitude, float size=5.0f, float speed=0.5f, int numLoops=1) |
| |
| void | setCenter (float centerX, float centerY) |
| |
| void | setHeading (float headingRad) |
| |
| void | onEntry () override |
| |
| void | onExit () override |
| |
| void | update () override |
| |
| template<typename TOrthogonal , typename TSourceObject > |
| void | onStateOrthogonalAllocation () |
| |
| virtual | ~CbPx4ClientBehaviorBase () |
| |
| void | setTimeout (std::chrono::milliseconds timeout) |
| |
| bool | hasTimeout () const |
| |
| void | update () override |
| |
| template<typename TOrthogonal , typename TSourceObject > |
| void | onStateOrthogonalAllocation () |
| |
| virtual | ~SmaccAsyncClientBehavior () |
| |
| template<typename TCallback , typename T > |
| smacc2::SmaccSignalConnection | onSuccess (TCallback callback, T *object) |
| |
| template<typename TCallback , typename T > |
| smacc2::SmaccSignalConnection | onFinished (TCallback callback, T *object) |
| |
| template<typename TCallback , typename T > |
| smacc2::SmaccSignalConnection | onFailure (TCallback callback, T *object) |
| |
| void | requestForceFinish () |
| |
| void | executeOnEntry () override |
| |
| void | executeOnExit () override |
| |
| void | waitOnEntryThread (bool requestFinish) |
| |
| template<typename TCallbackMethod , typename T > |
| smacc2::SmaccSignalConnection | onSuccess (TCallbackMethod callback, T *object) |
| |
| template<typename TCallbackMethod , typename T > |
| smacc2::SmaccSignalConnection | onFinished (TCallbackMethod callback, T *object) |
| |
| template<typename TCallbackMethod , typename T > |
| smacc2::SmaccSignalConnection | onFailure (TCallbackMethod callback, T *object) |
| |
| | ISmaccClientBehavior () |
| |
| virtual | ~ISmaccClientBehavior () |
| |
| ISmaccStateMachine * | getStateMachine () |
| |
| std::string | getName () const |
| |
| template<typename SmaccClientType > |
| void | requiresClient (SmaccClientType *&storage) |
| |
| template<typename SmaccComponentType > |
| void | requiresComponent (SmaccComponentType *&storage, ComponentRequirement requirementType=ComponentRequirement::SOFT) |
| |
| template<typename SmaccComponentType > |
| void | requiresComponent (std::string name, SmaccComponentType *&storage, ComponentRequirement requirementType=ComponentRequirement::SOFT) |
| |
| | ISmaccUpdatable () |
| |
| | ISmaccUpdatable (rclcpp::Duration duration) |
| |
| void | executeUpdate (rclcpp::Node::SharedPtr node) |
| |
| void | setUpdatePeriod (rclcpp::Duration duration) |
| |
Definition at line 27 of file cb_figure_eight.hpp.
| void cl_px4_mr::CbFigureEight::update |
( |
| ) |
|
|
overridevirtual |
Implements smacc2::ISmaccUpdatable.
Definition at line 53 of file cb_figure_eight.cpp.
54{
56
57 auto now = std::chrono::steady_clock::now();
58 double dt = std::chrono::duration<double>(now -
lastUpdateTime_).count();
60
62
63
64 float sinT = std::sin(
t_);
65 float cosT = std::cos(
t_);
66 float denom = 1.0f + sinT * sinT;
67
68 float localX =
size_ * cosT / denom;
69 float localY =
size_ * sinT * cosT / denom;
70
71
74 float x =
centerX_ + localX * ch - localY * sh;
75 float y =
centerY_ + localX * sh + localY * ch;
77
78
79 float sinT2 = sinT * sinT;
80 float cosT2 = cosT * cosT;
81 float denom2 = denom * denom;
82 float dxdt =
size_ * (-sinT * (1.0f + sinT2) - cosT * 2.0f * sinT * cosT) / denom2;
83 float dydt =
84 size_ * ((cosT2 - sinT2) * (1.0f + sinT2) - sinT * cosT * 2.0f * sinT * cosT) / denom2;
85 float yaw = std::atan2(dydt, dxdt) +
heading_;
86
88
89
90 float requiredT =
numLoops_ * 2.0f * M_PI;
92 {
93 RCLCPP_INFO(
getLogger(),
"CbFigureEight: %d loops completed - posting success",
numLoops_);
95 }
96}
References altitude_, centerX_, centerY_, smacc2::ISmaccClientBehavior::getLogger(), heading_, lastUpdateTime_, numLoops_, cl_px4_mr::CbPx4ClientBehaviorBase::postPx4Success(), cl_px4_mr::CpTrajectorySetpoint::setPositionNED(), size_, speed_, t_, cl_px4_mr::CbPx4ClientBehaviorBase::trajectorySetpoint_, and cl_px4_mr::CbPx4ClientBehaviorBase::update().