3#include "dynamical_systems/IDynamicalSystem.hpp"
4#include "state_representation/parameters/Parameter.hpp"
5#include "state_representation/space/cartesian/CartesianPose.hpp"
6#include "state_representation/space/cartesian/CartesianState.hpp"
27 explicit Ring(
const std::list<std::shared_ptr<state_representation::ParameterInterface>>& parameters);
41 typedef std::shared_ptr<state_representation::Parameter<double>> ptr_param_double_t;
46 void validate_and_set_parameter(
const std::shared_ptr<state_representation::ParameterInterface>& parameter)
override;
58 void set_rotation_offset(
const Eigen::Quaterniond& rotation);
64 [[nodiscard]] Eigen::Quaterniond get_rotation_offset()
const;
66 [[nodiscard]] Eigen::Vector3d calculate_local_linear_velocity(
70 [[nodiscard]] Eigen::Vector3d calculate_local_angular_velocity(
72 double local_field_strength
75 std::shared_ptr<state_representation::Parameter<state_representation::CartesianPose>> center_;
76 std::shared_ptr<state_representation::Parameter<state_representation::CartesianPose>>
78 ptr_param_double_t radius_;
79 ptr_param_double_t width_;
80 ptr_param_double_t speed_;
81 ptr_param_double_t field_strength_;
82 ptr_param_double_t normal_gain_;
83 ptr_param_double_t angular_gain_;
Abstract class for a dynamical system.
Represent a Ring dynamical system limit cycle to move around a radius within a fixed width.
state_representation::CartesianState compute_dynamics(const state_representation::CartesianState &state) const override
Compute the dynamics of the input state. Internal function, to be redefined based on the type of dyna...
void set_base_frame(const state_representation::CartesianState &base_frame) override
Set a parameter.
Class to define CartesianPose in cartesian space as 3D position and quaternion based orientation.
Class to represent a state in Cartesian space.
Systems of equations relating state variables to their derivatives.