1#include "state_representation/space/cartesian/CartesianAcceleration.hpp"
2#include "state_representation/exceptions/EmptyStateException.hpp"
4using namespace state_representation::exceptions;
9 this->
set_type(StateType::CARTESIAN_ACCELERATION);
14 this->
set_type(StateType::CARTESIAN_ACCELERATION);
18 const std::string& name,
const Eigen::Vector3d& linear_acceleration,
const std::string& reference
20 this->
set_type(StateType::CARTESIAN_ACCELERATION);
25 const std::string& name,
const Eigen::Vector3d& linear_acceleration,
const Eigen::Vector3d& angular_acceleration,
26 const std::string& reference
28 this->
set_type(StateType::CARTESIAN_ACCELERATION);
34 const std::string& name,
const Eigen::Matrix<double, 6, 1>& acceleration,
const std::string& reference
36 this->
set_type(StateType::CARTESIAN_ACCELERATION);
41 this->
set_type(StateType::CARTESIAN_ACCELERATION);
60 Eigen::Matrix<double, 6, 1> random = Eigen::Matrix<double, 6, 1>::Random();
69 if (
data.size() != 6) {
71 "Input is of incorrect size: expected 6, given " + std::to_string(
data.size()));
81 double max_linear,
double max_angular,
double linear_noise_ratio,
double angular_noise_ratio
84 this->clamp_state_variable(max_linear, CartesianStateVariable::LINEAR_ACCELERATION, linear_noise_ratio);
86 this->clamp_state_variable(max_angular, CartesianStateVariable::ANGULAR_ACCELERATION, angular_noise_ratio);
90 double max_linear,
double max_angular,
double linear_noise_ratio,
double angular_noise_ratio
93 result.
clamp(max_linear, max_angular, linear_noise_ratio, angular_noise_ratio);
124 return acceleration * lambda;
137 double period = dt.count();
146 return acceleration * dt;
Class to define acceleration in Cartesian space as 3D linear and angular acceleration vectors.
void clamp(double max_linear, double max_angular, double linear_noise_ratio=0, double angular_noise_ratio=0)
Clamp inplace the magnitude of the acceleration to the values in argument.
CartesianAcceleration copy() const
Return a copy of the Cartesian acceleration.
CartesianAcceleration & operator/=(double lambda)
Scale inplace by a scalar.
CartesianAcceleration clamped(double max_linear, double max_angular, double noise_ratio=0, double angular_noise_ratio=0) const
Return the clamped twist.
Eigen::VectorXd data() const override
Returns the acceleration data as an Eigen vector.
CartesianAcceleration()
Empty constructor.
static CartesianAcceleration Zero(const std::string &name, const std::string &reference="world")
Constructor for the zero acceleration.
friend CartesianAcceleration operator*(double lambda, const CartesianAcceleration &acceleration)
Scale a Cartesian acceleration by a scalar.
static CartesianAcceleration Random(const std::string &name, const std::string &reference="world")
Constructor for a random acceleration.
CartesianAcceleration operator-() const
Negate a Cartesian acceleration.
std::vector< double > norms(const CartesianStateVariable &state_variable_type=CartesianStateVariable::ACCELERATION) const override
Compute the norms of the state variable specified by the input type (default is full acceleration)
CartesianAcceleration operator/(double lambda) const
Scale a Cartesian acceleration by a scalar.
CartesianAcceleration inverse() const
Compute the inverse of the current Cartesian acceleration.
void set_data(const Eigen::VectorXd &data) override
Set the acceleration data from an Eigen vector.
CartesianAcceleration normalized(const CartesianStateVariable &state_variable_type=CartesianStateVariable::ACCELERATION) const
Compute the normalized acceleration at the state variable given in argument (default is full accelera...
Class to represent a state in Cartesian space.
void set_zero()
Set the State to a zero value.
void set_acceleration(const Eigen::Matrix< double, 6, 1 > &acceleration)
Setter of the linear and angular acceleration from a 6d acceleration vector.
CartesianState inverse() const
Compute the inverse of the current Cartesian state.
void set_angular_acceleration(const Eigen::Vector3d &angular_acceleration)
Setter of the angular velocity attribute.
virtual std::vector< double > norms(const CartesianStateVariable &state_variable_type=CartesianStateVariable::ALL) const
Compute the norms of the state variable specified by the input type. Default is full state.
CartesianState normalized(const CartesianStateVariable &state_variable_type=CartesianStateVariable::ALL) const
Compute the normalized state at the state variable given in argument. Default is full state.
static CartesianState Identity(const std::string &name, const std::string &reference="world")
Constructor for the identity Cartesian state (identity pose and 0 for the rest)
CartesianState & operator/=(double lambda)
Scale inplace by a scalar.
const Eigen::Vector3d & get_linear_acceleration() const
Getter of the linear acceleration attribute.
void set_linear_acceleration(const Eigen::Vector3d &linear_acceleration)
Setter of the linear acceleration attribute.
std::string to_string() const override
Convert the state to its string representation.
CartesianState & operator+=(const CartesianState &state)
Add inplace another Cartesian state.
CartesianState operator-() const
Negate a Cartesian state.
CartesianState & operator-=(const CartesianState &state)
Compute inplace the difference with another Cartesian state.
CartesianState & operator*=(const CartesianState &state)
Transform inplace a Cartesian state into the current reference frame.
const Eigen::Vector3d & get_angular_acceleration() const
Getter of the angular acceleration attribute.
CartesianState operator/(double lambda) const
Scale a Cartesian state by a scalar.
void set_linear_velocity(const Eigen::Vector3d &linear_velocity)
Setter of the linear velocity attribute.
void set_angular_velocity(const Eigen::Vector3d &angular_velocity)
Setter of the angular velocity attribute.
friend CartesianState operator*(double lambda, const CartesianState &state)
Scale a Cartesian state by a scalar.
Eigen::Matrix< double, 6, 1 > get_acceleration() const
Getter of the 6d acceleration from linear and angular acceleration attributes.
CartesianState operator+(const CartesianState &state) const
Add another Cartesian state.
Class to define twist in Cartesian space as 3D linear and angular velocity vectors.
const std::string & get_reference_frame() const
Getter of the reference frame as const reference.
const std::string & get_name() const
Getter of the name attribute.
void set_type(const StateType &type)
Setter of the state type attribute.
Core state variables and objects.
std::ostream & operator<<(std::ostream &os, const AnalogIOState &state)
CartesianAcceleration operator*(double lambda, const CartesianAcceleration &acceleration)