Skip to content
Snippets Groups Projects
Commit e9632207 authored by Rainer Kartmann's avatar Rainer Kartmann
Browse files

Add and use typedefs, add doc

parent bd0c7f9c
No related branches found
No related tags found
No related merge requests found
......@@ -38,13 +38,13 @@ namespace VirtualRobot::hemisphere
}
void Joint::computeFkOfPosition(const Eigen::Vector2d& p12)
void Joint::computeFkOfPosition(const ActuatorPosition& p12)
{
computeFkOfPosition(p12(0), p12(1));
}
void Joint::computeFkOfAngle(const Eigen::Vector2d& alpha12)
void Joint::computeFkOfAngle(const ActuatorAngle& alpha12)
{
computeFkOfPosition(angleToPosition(alpha12));
}
......@@ -89,7 +89,8 @@ namespace VirtualRobot::hemisphere
return jacobian;
}
Eigen::Vector2d Joint::angleToPosition(const Eigen::Vector2d& alpha) const
Joint::ActuatorPosition Joint::angleToPosition(const Joint::ActuatorAngle& alpha) const
{
return lever * Eigen::sin((alpha + Eigen::Vector2d::Constant(theta0)).array());
}
......
......@@ -8,10 +8,19 @@
namespace VirtualRobot::hemisphere
{
/**
* @brief Hemisphere joint mathematics for FK and IK.
*
* This class is a wrapper about `Expressions`, which contains the actual
* math code that was generated from Python sympy expressions
* using `python/hemisphere-joint-demo/hemisphere_joint_demo/sympy_to_code.py`.
*/
class Joint
{
public:
using ActuatorPosition = Eigen::Vector2d;
using ActuatorAngle = Eigen::Vector2d;
using Jacobian = Eigen::Matrix<double, 6, 2>;
public:
......@@ -23,18 +32,19 @@ namespace VirtualRobot::hemisphere
void setConstants(double lever, double theta0);
void computeFkOfAngle(const Eigen::Vector2d& alpha12);
void computeFkOfAngle(const ActuatorAngle& alpha12);
void computeFkOfPosition(const Eigen::Vector2d& p12);
void computeFkOfPosition(const ActuatorPosition& p12);
void computeFkOfPosition(double p1, double p2);
Eigen::Vector3d getEndEffectorTranslation() const;
Eigen::Matrix3d getEndEffectorRotation() const;
Eigen::Matrix4d getEndEffectorTransform() const;
Jacobian getJacobian() const;
Eigen::Vector2d angleToPosition(const Eigen::Vector2d& alpha) const;
ActuatorPosition angleToPosition(const ActuatorAngle& alpha) const;
public:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment