Control Libraries 7.4.0
Loading...
Searching...
No Matches
JointAccelerations.cpp
1#include "state_representation/space/joint/JointAccelerations.hpp"
2
3#include "state_representation/exceptions/EmptyStateException.hpp"
4
5namespace state_representation {
6
7using namespace exceptions;
8
10 this->set_type(StateType::JOINT_ACCELERATIONS);
11}
12
13JointAccelerations::JointAccelerations(const std::string& robot_name, unsigned int nb_joints) :
14 JointState(robot_name, nb_joints) {
15 this->set_type(StateType::JOINT_ACCELERATIONS);
16}
17
18JointAccelerations::JointAccelerations(const std::string& robot_name, const Eigen::VectorXd& accelerations) :
19 JointState(robot_name, accelerations.size()) {
20 this->set_type(StateType::JOINT_ACCELERATIONS);
21 this->set_accelerations(accelerations);
22}
23
24JointAccelerations::JointAccelerations(const std::string& robot_name, const std::vector<std::string>& joint_names) :
25 JointState(robot_name, joint_names) {
26 this->set_type(StateType::JOINT_ACCELERATIONS);}
27
28JointAccelerations::JointAccelerations(const std::string& robot_name,
29 const std::vector<std::string>& joint_names,
30 const Eigen::VectorXd& accelerations) : JointState(robot_name, joint_names) {
31 this->set_type(StateType::JOINT_ACCELERATIONS);
32 this->set_accelerations(accelerations);
33}
34
36 this->set_type(StateType::JOINT_ACCELERATIONS);
37 if (state) {
38 this->set_zero();
40 }
41}
42
44 JointAccelerations(static_cast<const JointState&>(accelerations)) {}
45
47 JointAccelerations(velocities / std::chrono::seconds(1)) {}
48
49JointAccelerations JointAccelerations::Zero(const std::string& robot_name, unsigned int nb_joints) {
50 return JointState::Zero(robot_name, nb_joints);
51}
52
54JointAccelerations::Zero(const std::string& robot_name, const std::vector<std::string>& joint_names) {
55 return JointState::Zero(robot_name, joint_names);
56}
57
58JointAccelerations JointAccelerations::Random(const std::string& robot_name, unsigned int nb_joints) {
59 return JointAccelerations(robot_name, Eigen::VectorXd::Random(nb_joints));
60}
61
63JointAccelerations::Random(const std::string& robot_name, const std::vector<std::string>& joint_names) {
64 return JointAccelerations(robot_name, joint_names, Eigen::VectorXd::Random(joint_names.size()));
65}
66
67Eigen::VectorXd JointAccelerations::data() const {
68 return this->get_accelerations();
69}
70
71void JointAccelerations::set_data(const Eigen::VectorXd& data) {
72 this->set_accelerations(data);
73}
74
75void JointAccelerations::set_data(const std::vector<double>& data) {
76 this->set_accelerations(Eigen::VectorXd::Map(data.data(), data.size()));
77}
78
79void JointAccelerations::clamp(double max_absolute_value, double noise_ratio) {
80 this->clamp_state_variable(max_absolute_value, JointStateVariable::ACCELERATIONS, noise_ratio);
81}
82
83void
84JointAccelerations::clamp(const Eigen::ArrayXd& max_absolute_value_array, const Eigen::ArrayXd& noise_ratio_array) {
85 this->clamp_state_variable(max_absolute_value_array, JointStateVariable::ACCELERATIONS, noise_ratio_array);
86}
87
88JointAccelerations JointAccelerations::clamped(double max_absolute_value, double noise_ratio) const {
89 JointAccelerations result(*this);
90 result.clamp(max_absolute_value, noise_ratio);
91 return result;
92}
93
94JointAccelerations JointAccelerations::clamped(const Eigen::ArrayXd& max_absolute_value_array,
95 const Eigen::ArrayXd& noise_ratio_array) const {
96 JointAccelerations result(*this);
97 result.clamp(max_absolute_value_array, noise_ratio_array);
98 return result;
99}
100
102 JointAccelerations result(*this);
103 return result;
104}
105
107 this->JointState::operator*=(lambda);
108 return (*this);
109}
110
112 return this->JointState::operator*(lambda);
113}
114
115JointAccelerations operator*(double lambda, const JointAccelerations& accelerations) {
116 JointAccelerations result(accelerations);
117 result *= lambda;
118 return result;
119}
120
121JointAccelerations operator*(const Eigen::MatrixXd& lambda, const JointAccelerations& accelerations) {
122 JointAccelerations result(accelerations);
123 result.multiply_state_variable(lambda, JointStateVariable::ACCELERATIONS);
124 return result;
125}
126
127JointVelocities JointAccelerations::operator*(const std::chrono::nanoseconds& dt) const {
128 // operations
129 JointVelocities velocities(this->get_name(), this->get_names());
130 // convert the period to a double with the second as reference
131 double period = dt.count();
132 period /= 1e9;
133 // multiply the velocities by this period value and assign it as position
134 velocities.set_velocities(period * this->get_accelerations());
135 return velocities;
136}
137
138JointVelocities operator*(const std::chrono::nanoseconds& dt, const JointAccelerations& accelerations) {
139 return accelerations * dt;
140}
141
143 this->JointState::operator/=(lambda);
144 return (*this);
145}
146
148 return this->JointState::operator/(lambda);
149}
150
151JointAccelerations& JointAccelerations::operator+=(const JointAccelerations& accelerations) {
152 this->JointState::operator+=(accelerations);
153 return (*this);
154}
155
156JointAccelerations& JointAccelerations::operator+=(const JointState& state) {
157 this->JointState::operator+=(state);
158 return (*this);
159}
160
161JointAccelerations JointAccelerations::operator+(const JointAccelerations& accelerations) const {
162 return this->JointState::operator+(accelerations);
163}
164
165JointState JointAccelerations::operator+(const JointState& state) const {
166 return this->JointState::operator+(state);
167}
168
172
173JointAccelerations& JointAccelerations::operator-=(const JointAccelerations& accelerations) {
174 this->JointState::operator-=(accelerations);
175 return (*this);
176}
177
178JointAccelerations& JointAccelerations::operator-=(const JointState& state) {
179 this->JointState::operator-=(state);
180 return (*this);
181}
182
184 return this->JointState::operator-(accelerations);
185}
186
188 return this->JointState::operator-(state);
189}
190
191std::ostream& operator<<(std::ostream& os, const JointAccelerations& accelerations) {
192 os << accelerations.to_string();
193 return os;
194}
195}// namespace state_representation
Class to define accelerations of the joints.
JointAccelerations copy() const
Return a copy of the joint accelerations.
Eigen::VectorXd data() const override
Returns the accelerations data as an Eigen vector.
JointAccelerations clamped(double max_absolute_value, double noise_ratio=0.) const
Return the acceleration clamped to the values in argument.
JointAccelerations & operator/=(double lambda)
Scale inplace by a scalar.
friend JointAccelerations operator*(double lambda, const JointAccelerations &accelerations)
Scale joint accelerations by a scalar.
virtual void set_data(const Eigen::VectorXd &data) override
Set the accelerations data from an Eigen vector.
static JointAccelerations Zero(const std::string &robot_name, unsigned int nb_joints)
Constructor for zero joint accelerations.
void clamp(double max_absolute_value, double noise_ratio=0.)
Clamp inplace the magnitude of the acceleration to the values in argument.
JointAccelerations operator-() const
Negate joint accelerations.
JointAccelerations operator/(double lambda) const
Scale joint accelerations by a scalar.
JointAccelerations & operator*=(double lambda)
Scale inplace by a scalar.
static JointAccelerations Random(const std::string &robot_name, unsigned int nb_joints)
Constructor for random joint accelerations.
Class to define a state in joint space.
JointState operator+(const JointState &state) const
Add another joint sate.
void set_accelerations(const Eigen::VectorXd &accelerations)
Setter of the accelerations attribute.
void multiply_state_variable(const Eigen::MatrixXd &lambda, const JointStateVariable &state_variable_type)
Proxy function that scale the specified state variable by a matrix.
JointState & operator*=(double lambda)
Scale inplace by a scalar.
void set_zero()
Set the joint state to a zero value.
static JointState Zero(const std::string &robot_name, unsigned int nb_joints)
Constructor for a zero joint state.
JointState & operator+=(const JointState &state)
Add inplace another joint state.
std::string to_string() const override
Convert the state to its string representation.
JointState & operator-=(const JointState &state)
Compute inplace the difference with another joint state.
JointState & operator/=(double lambda)
Scale inplace by a scalar.
const Eigen::VectorXd & get_accelerations() const
Getter of the accelerations attribute.
JointState operator-() const
Negate a joint state.
friend JointState operator*(double lambda, const JointState &state)
Scale a joint state by a scalar.
const std::vector< std::string > & get_names() const
Getter of the names attribute.
void set_velocities(const Eigen::VectorXd &velocities)
Setter of the velocities attribute.
JointState operator/(double lambda) const
Scale a joint state by a scalar.
Class to define velocities of the joints.
const std::string & get_name() const
Getter of the name attribute.
Definition State.cpp:29
void set_type(const StateType &type)
Setter of the state type attribute.
Definition State.cpp:41
Core state variables and objects.
std::ostream & operator<<(std::ostream &os, const AnalogIOState &state)
CartesianAcceleration operator*(double lambda, const CartesianAcceleration &acceleration)