SMACC2
Loading...
Searching...
No Matches
smacc2_client_library
cl_px4_mr
include
cl_px4_mr
client_behaviors
cb_sine_altitude_cruise.hpp
Go to the documentation of this file.
1
// Copyright 2026 RobosoftAI Inc.
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
// http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
15
#pragma once
16
17
#include <
cl_px4_mr/client_behaviors/cb_px4_client_behavior_base.hpp
>
18
19
#include <atomic>
20
#include <chrono>
21
#include <cmath>
22
#include <
smacc2/smacc.hpp
>
23
24
namespace
cl_px4_mr
25
{
26
27
class
CpTrajectorySetpoint;
28
class
CpVehicleLocalPosition;
29
30
// Continuous behavior: cruise along a fixed heading while the altitude follows a
31
// sine wave around the entry altitude. Never posts success - the state machine must
32
// provide the exit event (timer orthogonal, mission event, keyboard). The commanded
33
// ground track is UNBOUNDED along the heading; pair with an exit event by
34
// construction and rely on the PX4 geofence as the independent backstop.
35
// On exit, one final setpoint settles the vehicle at the entry altitude at the last
36
// commanded ground position. Posts failure only if local position is invalid at entry.
37
class
CbSineAltitudeCruise
:
public
CbPx4ClientBehaviorBase
38
{
39
public
:
40
CbSineAltitudeCruise
(
41
float
groundSpeed = 2.0f,
float
amplitude = 1.5f,
float
wavelength = 20.0f,
42
float
heading = std::numeric_limits<float>::quiet_NaN());
43
44
void
onEntry
()
override
;
45
void
onExit
()
override
;
46
void
update
()
override
;
47
48
private
:
49
float
groundSpeed_
;
50
float
amplitude_
;
51
float
wavelength_
;
52
float
heading_
;
53
54
float
startX_
= 0.0f;
55
float
startY_
= 0.0f;
56
float
baseZ_
= 0.0f;
57
float
arcLength_
= 0.0f;
58
float
lastCmdX_
= 0.0f;
59
float
lastCmdY_
= 0.0f;
60
std::atomic<bool>
active_
{
false
};
61
std::chrono::steady_clock::time_point
lastUpdateTime_
;
62
};
63
64
}
// namespace cl_px4_mr
cb_px4_client_behavior_base.hpp
cl_px4_mr::CbPx4ClientBehaviorBase
Definition
cb_px4_client_behavior_base.hpp:62
cl_px4_mr::CbSineAltitudeCruise
Definition
cb_sine_altitude_cruise.hpp:38
cl_px4_mr::CbSineAltitudeCruise::heading_
float heading_
Definition
cb_sine_altitude_cruise.hpp:52
cl_px4_mr::CbSineAltitudeCruise::onExit
void onExit() override
Definition
cb_sine_altitude_cruise.cpp:82
cl_px4_mr::CbSineAltitudeCruise::baseZ_
float baseZ_
Definition
cb_sine_altitude_cruise.hpp:56
cl_px4_mr::CbSineAltitudeCruise::groundSpeed_
float groundSpeed_
Definition
cb_sine_altitude_cruise.hpp:49
cl_px4_mr::CbSineAltitudeCruise::wavelength_
float wavelength_
Definition
cb_sine_altitude_cruise.hpp:51
cl_px4_mr::CbSineAltitudeCruise::amplitude_
float amplitude_
Definition
cb_sine_altitude_cruise.hpp:50
cl_px4_mr::CbSineAltitudeCruise::lastCmdX_
float lastCmdX_
Definition
cb_sine_altitude_cruise.hpp:58
cl_px4_mr::CbSineAltitudeCruise::CbSineAltitudeCruise
CbSineAltitudeCruise(float groundSpeed=2.0f, float amplitude=1.5f, float wavelength=20.0f, float heading=std::numeric_limits< float >::quiet_NaN())
Definition
cb_sine_altitude_cruise.cpp:25
cl_px4_mr::CbSineAltitudeCruise::onEntry
void onEntry() override
Definition
cb_sine_altitude_cruise.cpp:34
cl_px4_mr::CbSineAltitudeCruise::startX_
float startX_
Definition
cb_sine_altitude_cruise.hpp:54
cl_px4_mr::CbSineAltitudeCruise::update
void update() override
Definition
cb_sine_altitude_cruise.cpp:95
cl_px4_mr::CbSineAltitudeCruise::lastUpdateTime_
std::chrono::steady_clock::time_point lastUpdateTime_
Definition
cb_sine_altitude_cruise.hpp:61
cl_px4_mr::CbSineAltitudeCruise::startY_
float startY_
Definition
cb_sine_altitude_cruise.hpp:55
cl_px4_mr::CbSineAltitudeCruise::active_
std::atomic< bool > active_
Definition
cb_sine_altitude_cruise.hpp:60
cl_px4_mr::CbSineAltitudeCruise::arcLength_
float arcLength_
Definition
cb_sine_altitude_cruise.hpp:57
cl_px4_mr::CbSineAltitudeCruise::lastCmdY_
float lastCmdY_
Definition
cb_sine_altitude_cruise.hpp:59
cl_px4_mr
Definition
cl_px4_mr.hpp:30
smacc.hpp
Generated by
1.12.0