SMACC2
Loading...
Searching...
No Matches
smacc2_client_library
cl_px4_mr
include
cl_px4_mr
client_behaviors
cb_spiral_up.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 <chrono>
20
#include <cmath>
21
#include <limits>
22
#include <
smacc2/smacc.hpp
>
23
24
namespace
cl_px4_mr
25
{
26
27
class
CpTrajectorySetpoint;
28
class
CpVehicleLocalPosition;
29
30
// Helix about a vertical axis: a constant-radius orbit that climbs
31
// climbPerOrbitM every revolution until climbTotalM has been gained, nose
32
// toward the axis. The orbit starts at the vehicle's current bearing from the
33
// centre (fly to a point on the circle first, e.g. with CbGoToLocation) and at
34
// startAltitudeM (NaN = the current altitude). Posts success at the top, where
35
// the vehicle is on the circle at startAltitude + climbTotal - hand over to
36
// CbOrbitLocation at that altitude for level laps.
37
struct
SpiralUpParams
38
{
39
float
centerX
= 0.0f;
// NED north
40
float
centerY
= 0.0f;
// NED east
41
float
radiusM
= 6.0f;
42
float
startAltitudeM
= std::numeric_limits<float>::quiet_NaN();
// above the NED origin
43
float
climbTotalM
= 24.0f;
44
float
climbPerOrbitM
= 3.0f;
45
float
angularVelocityRadS
= 0.3f;
// +ve = clockwise seen from above (NED angle north -> east)
46
};
47
48
class
CbSpiralUp
:
public
CbPx4ClientBehaviorBase
49
{
50
public
:
51
explicit
CbSpiralUp
(
SpiralUpParams
params
= {});
52
53
void
onEntry
()
override
;
54
void
onExit
()
override
{}
55
void
update
()
override
;
56
57
const
SpiralUpParams
&
params
()
const
{
return
params_
; }
58
59
private
:
60
void
command
();
61
62
SpiralUpParams
params_
;
63
float
startAltitude_
= 0.0f;
64
float
startAngle_
= 0.0f;
65
float
currentAngle_
= 0.0f;
66
int
lastReportedOrbit_
= -1;
67
std::chrono::steady_clock::time_point
lastUpdateTime_
;
68
};
69
70
}
// 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::CbSpiralUp
Definition
cb_spiral_up.hpp:49
cl_px4_mr::CbSpiralUp::lastUpdateTime_
std::chrono::steady_clock::time_point lastUpdateTime_
Definition
cb_spiral_up.hpp:67
cl_px4_mr::CbSpiralUp::startAngle_
float startAngle_
Definition
cb_spiral_up.hpp:64
cl_px4_mr::CbSpiralUp::currentAngle_
float currentAngle_
Definition
cb_spiral_up.hpp:65
cl_px4_mr::CbSpiralUp::onEntry
void onEntry() override
Definition
cb_spiral_up.cpp:24
cl_px4_mr::CbSpiralUp::params
const SpiralUpParams & params() const
Definition
cb_spiral_up.hpp:57
cl_px4_mr::CbSpiralUp::startAltitude_
float startAltitude_
Definition
cb_spiral_up.hpp:63
cl_px4_mr::CbSpiralUp::lastReportedOrbit_
int lastReportedOrbit_
Definition
cb_spiral_up.hpp:66
cl_px4_mr::CbSpiralUp::CbSpiralUp
CbSpiralUp(SpiralUpParams params={})
Definition
cb_spiral_up.cpp:22
cl_px4_mr::CbSpiralUp::params_
SpiralUpParams params_
Definition
cb_spiral_up.hpp:62
cl_px4_mr::CbSpiralUp::command
void command()
Definition
cb_spiral_up.cpp:47
cl_px4_mr::CbSpiralUp::onExit
void onExit() override
Definition
cb_spiral_up.hpp:54
cl_px4_mr::CbSpiralUp::update
void update() override
Definition
cb_spiral_up.cpp:68
cl_px4_mr
Definition
cl_px4_mr.hpp:30
smacc.hpp
cl_px4_mr::SpiralUpParams
Definition
cb_spiral_up.hpp:38
cl_px4_mr::SpiralUpParams::radiusM
float radiusM
Definition
cb_spiral_up.hpp:41
cl_px4_mr::SpiralUpParams::startAltitudeM
float startAltitudeM
Definition
cb_spiral_up.hpp:42
cl_px4_mr::SpiralUpParams::centerX
float centerX
Definition
cb_spiral_up.hpp:39
cl_px4_mr::SpiralUpParams::centerY
float centerY
Definition
cb_spiral_up.hpp:40
cl_px4_mr::SpiralUpParams::climbPerOrbitM
float climbPerOrbitM
Definition
cb_spiral_up.hpp:44
cl_px4_mr::SpiralUpParams::angularVelocityRadS
float angularVelocityRadS
Definition
cb_spiral_up.hpp:45
cl_px4_mr::SpiralUpParams::climbTotalM
float climbTotalM
Definition
cb_spiral_up.hpp:43
Generated by
1.12.0