aligator
0.19.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Toggle main menu visibility
Loading...
Searching...
No Matches
wheeled-inverted-pendulum.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include "
aligator/modelling/dynamics/ode-abstract.hpp
"
4
5
namespace
aligator::dynamics
{
6
7
template
<
typename
_Scalar>
8
struct
WheeledInvertedPendulumDynamicsTpl
:
ODEAbstractTpl
<_Scalar> {
9
using
Scalar
= _Scalar;
10
using
Base
=
dynamics::ODEAbstractTpl<Scalar>
;
11
ALIGATOR_DYNAMIC_TYPEDEFS
(
Scalar
);
12
using
ODEData
=
dynamics::ContinuousDynamicsDataTpl<Scalar>
;
13
using
VectorSpace
=
aligator::VectorSpaceTpl<Scalar, 7>
;
14
WheeledInvertedPendulumDynamicsTpl
(
const
double
gravity,
const
double
length)
15
:
Base
(
VectorSpace
{}, 2)
16
,
length_
(length)
17
,
gravity_
(gravity) {}
18
19
double
length_
;
20
double
gravity_
;
21
22
void
forward
(
const
ConstVectorRef &x,
const
ConstVectorRef &u,
23
ODEData
&data)
const override
{
24
Scalar
rdot = x[0], phidot = x[1], theta = x[2], thetadot = x[3],
25
phi = x[4];
26
Scalar
rdotdot = u[0], phidotdot = u[1];
27
28
data.xdot_[0] = rdotdot;
29
data.xdot_[1] = phidotdot;
30
data.xdot_[2] = thetadot;
31
data.xdot_[3] = std::sin(theta) *
gravity_
/
length_
-
32
std::cos(theta) * rdotdot /
length_
;
33
data.xdot_[4] = phidot;
34
data.xdot_[5] = rdot * std::cos(phi);
35
data.xdot_[6] = rdot * std::sin(phi);
36
}
37
38
void
dForward
(
const
ConstVectorRef &x,
const
ConstVectorRef &u,
39
ODEData
&data)
const override
{
40
Scalar
rdot = x[0], phidot = x[1], theta = x[2], thetadot = x[3],
41
phi = x[4], rdotdot = u[0];
42
43
data.Jx_.setZero();
44
data.Jx_(2, 3) = 1;
45
data.Jx_(3, 2) = std::cos(theta) *
gravity_
/
length_
+
46
std::sin(theta) * rdotdot /
length_
;
47
48
data.Jx_(4, 1) = 1;
49
data.Jx_(5, 0) = std::cos(phi);
50
data.Jx_(5, 4) = -rdot * std::sin(phi);
51
data.Jx_(6, 0) = std::sin(phi);
52
data.Jx_(6, 4) = rdot * std::cos(phi);
53
54
data.Ju_.setZero();
55
data.Ju_(0, 0) = 1;
56
data.Ju_(1, 1) = 1;
57
data.Ju_(3, 0) = -1 * std::cos(theta) /
length_
;
58
}
59
};
60
61
}
// namespace aligator::dynamics
aligator::dynamics
Namespace for modelling system dynamics.
Definition
centroidal-fwd.hpp:10
ode-abstract.hpp
Defines a class representing ODEs.
aligator::VectorSpaceTpl
Standard Euclidean vector space.
Definition
vector-space.hpp:13
aligator::dynamics::ContinuousDynamicsDataTpl
Data struct for ContinuousDynamicsAbstractTpl.
Definition
continuous-dynamics-abstract.hpp:64
aligator::dynamics::ODEAbstractTpl
Base class for ODE dynamics .
Definition
ode-abstract.hpp:14
aligator::dynamics::WheeledInvertedPendulumDynamicsTpl::VectorSpace
aligator::VectorSpaceTpl< Scalar, 7 > VectorSpace
Definition
wheeled-inverted-pendulum.hpp:13
aligator::dynamics::WheeledInvertedPendulumDynamicsTpl::Base
dynamics::ODEAbstractTpl< Scalar > Base
Definition
wheeled-inverted-pendulum.hpp:10
aligator::dynamics::WheeledInvertedPendulumDynamicsTpl::ODEData
dynamics::ContinuousDynamicsDataTpl< Scalar > ODEData
Definition
wheeled-inverted-pendulum.hpp:12
aligator::dynamics::WheeledInvertedPendulumDynamicsTpl< Scalar >::length_
double length_
Definition
wheeled-inverted-pendulum.hpp:19
aligator::dynamics::WheeledInvertedPendulumDynamicsTpl::Scalar
_Scalar Scalar
Definition
wheeled-inverted-pendulum.hpp:9
aligator::dynamics::WheeledInvertedPendulumDynamicsTpl::WheeledInvertedPendulumDynamicsTpl
WheeledInvertedPendulumDynamicsTpl(const double gravity, const double length)
Definition
wheeled-inverted-pendulum.hpp:14
aligator::dynamics::WheeledInvertedPendulumDynamicsTpl::dForward
void dForward(const ConstVectorRef &x, const ConstVectorRef &u, ODEData &data) const override
Evaluate the vector field Jacobians.
Definition
wheeled-inverted-pendulum.hpp:38
aligator::dynamics::WheeledInvertedPendulumDynamicsTpl< Scalar >::gravity_
double gravity_
Definition
wheeled-inverted-pendulum.hpp:20
aligator::dynamics::WheeledInvertedPendulumDynamicsTpl::ALIGATOR_DYNAMIC_TYPEDEFS
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
aligator::dynamics::WheeledInvertedPendulumDynamicsTpl::forward
void forward(const ConstVectorRef &x, const ConstVectorRef &u, ODEData &data) const override
Evaluate the ODE vector field: this returns the value of .
Definition
wheeled-inverted-pendulum.hpp:22
include
aligator
modelling
dynamics
wheeled-inverted-pendulum.hpp
Generated by
1.17.0