FancySafeBot 0.0.1
A safe robotics library
Loading...
Searching...
No Matches
fsb_compute_kinematics.h
1
2#ifndef FSB_COMPUTE_KINEMATICS_H
3#define FSB_COMPUTE_KINEMATICS_H
4
5#include "fsb_body.h"
6#include "fsb_body_tree.h"
7#include "fsb_joint.h"
8#include "fsb_kinematics.h"
9#include "fsb_jacobian.h"
10#include "fsb_motion.h"
11
12namespace fsb
13{
14
26enum class ComputeKinematicsError : uint8_t
27{
31 SUCCESS = 0,
36};
37
42{
43public:
44 ComputeKinematics() = default;
45
53
61 const JointSpacePosition& joint_position, BodyCartesianPva& cartesian) const;
62
71 ForwardKinematicsOption opt, const JointPva& joint, BodyCartesianPva& cartesian) const;
72
82 ForwardKinematicsOption opt, const JointPva& joint, const CartesianPva& base,
83 BodyCartesianPva& cartesian) const;
84
94 size_t body_index, const BodyCartesianPva& cartesian, Jacobian& jacobian) const;
95
101 [[nodiscard]] size_t get_num_bodies() const
102 {
103 return m_body_tree.get_num_bodies();
104 }
105
111 [[nodiscard]] size_t get_num_coordinates() const
112 {
113 return m_body_tree.get_num_coordinates();
114 }
115
116private:
117 BodyTree m_body_tree;
118};
119
121{
122 m_body_tree = tree;
124}
125
127 const JointSpacePosition& joint_position, BodyCartesianPva& cartesian) const
128{
129 const JointPva joint = {joint_position, {}, {}};
131}
132
134 const ForwardKinematicsOption opt, const JointPva& joint, BodyCartesianPva& cartesian) const
135{
136 forward_kinematics(m_body_tree, joint, {}, opt, cartesian);
137}
138
140 const ForwardKinematicsOption opt, const JointPva& joint, const CartesianPva& base,
141 BodyCartesianPva& cartesian) const
142{
143 forward_kinematics(m_body_tree, joint, base, opt, cartesian);
144}
145
147 const size_t body_index, const BodyCartesianPva& cartesian, Jacobian& jacobian) const
148{
149 return calculate_jacobian(body_index, m_body_tree, cartesian, jacobian);
150}
151
156} // namespace fsb
157
158#endif
Body tree description of a kinematic chain.
Definition fsb_body_tree.h:99
size_t get_num_coordinates() const
Get the number of generalized position coordinates.
Definition fsb_body_tree.h:300
size_t get_num_bodies() const
Get the number of bodies in tree.
Definition fsb_body_tree.h:280
Compute forward kinematics.
Definition fsb_compute_kinematics.h:42
size_t get_num_bodies() const
Get the number of bodies in the body tree.
Definition fsb_compute_kinematics.h:101
size_t get_num_coordinates() const
Get the number of coordinates (joint position vector size) in the body tree.
Definition fsb_compute_kinematics.h:111
@ SUCCESS
Successful operation.
JacobianError calculate_jacobian(size_t body_index, const BodyTree &body_tree, const BodyCartesianPva &cartesian_pva, Jacobian &jacobian)
Determine Jacobian matrix for a single body in tree.
Definition fsb_jacobian.cpp:258
JacobianError
Error values for Jacobian calculations.
Definition fsb_jacobian.h:28
void forward_kinematics(const BodyTree &body_tree, const JointPva &joint_pva, const CartesianPva &base_pva, ForwardKinematicsOption opt, BodyCartesianPva &body_cartesian)
Compute forward kinematics for all bodies in tree.
Definition fsb_kinematics.cpp:44
ForwardKinematicsOption
Forward kinematics options.
Definition fsb_kinematics.h:25
@ POSE
Calculate Cartesian pose from joint position.
ComputeKinematicsError initialize(const BodyTree &tree)
Initialize the computation interface with a body tree.
Definition fsb_compute_kinematics.h:120
ComputeKinematicsError
Interface error codes.
Definition fsb_compute_kinematics.h:27
JacobianError compute_jacobian(size_t body_index, const BodyCartesianPva &cartesian, Jacobian &jacobian) const
Compute Jacobian matrix for a single body in tree.
Definition fsb_compute_kinematics.h:146
void compute_forward_kinematics(ForwardKinematicsOption opt, const JointPva &joint, BodyCartesianPva &cartesian) const
Compute forward kinematics with optional velocity and acceleration.
Definition fsb_compute_kinematics.h:133
void compute_forward_kinematics_pose(const JointSpacePosition &joint_position, BodyCartesianPva &cartesian) const
Compute forward kinematics.
Definition fsb_compute_kinematics.h:126
void compute_forward_kinematics_with_base(ForwardKinematicsOption opt, const JointPva &joint, const CartesianPva &base, BodyCartesianPva &cartesian) const
Compute forward kinematics with optional velocity and acceleration.
Definition fsb_compute_kinematics.h:139
@ INVALID_BODY_TREE
Body tree is invalid.
Container of Cartesian pose, velocity, and acceleration for a list of bodies.
Definition fsb_body.h:78
Cartesian pose, velocity and acceleration.
Definition fsb_motion.h:53
Jacobian matrix.
Definition fsb_jacobian.h:47
Definition fsb_joint.h:77
Joint space position in generalized coordinates.
Definition fsb_joint.h:55