Resurgence (PY2022)
Codebase for the Husky Robotics 2021-2022 rover Resurgence
Toggle main menu visibility
Loading...
Searching...
No Matches
src
kinematics
ArmKinematics.h
1
#pragma once
2
3
#include "ForwardArmKinematics.h"
4
#include "InverseArmKinematics.h"
5
6
#include <
memory
>
7
8
#include <Eigen/Core>
9
10
namespace
kinematics {
11
18
template
<
unsigned
int
D,
unsigned
int
N>
19
class
ArmKinematics :
public
ForwardArmKinematics
<D, N>,
public
InverseArmKinematics
<D, N> {
20
public
:
21
ArmKinematics(
std::shared_ptr
<
const
ForwardArmKinematics<D, N>
> forwardKin,
22
std::shared_ptr
<
const
InverseArmKinematics<D, N>
> inverseKin)
23
:
InverseArmKinematics<D, N>
(forwardKin), ik(inverseKin) {}
24
25
bool
satisfiesConstraints
(
const
navtypes::Vectord<N>& jointPos)
const override
{
26
return
this->fk->satisfiesConstraints(jointPos);
27
}
28
29
navtypes::Vectord<N>
getSegLens
()
const override
{
30
return
this->fk->getSegLens();
31
}
32
33
navtypes::Vectord<D>
jointPosToEEPos
(
const
navtypes::Vectord<N>& jointPos)
const override
{
34
return
this->fk->jointPosToEEPos(jointPos);
35
}
36
37
navtypes::Matrixd<D, N>
getJacobian
(
const
navtypes::Vectord<N>& jointPos)
const override
{
38
return
this->fk->getJacobian(jointPos);
39
}
40
41
protected
:
42
navtypes::Vectord<N>
solve
(
const
navtypes::Vectord<D>& eePos,
43
const
navtypes::Vectord<N>& jointAngles,
44
bool
& success)
const override
{
45
return
ik->eePosToJointPos(eePos, jointAngles, success);
46
}
47
48
private
:
49
const
std::shared_ptr<const InverseArmKinematics<D, N>
> ik;
50
};
51
52
}
// namespace kinematics
memory
std::shared_ptr
kinematics::ArmKinematics::solve
navtypes::Vectord< N > solve(const navtypes::Vectord< D > &eePos, const navtypes::Vectord< N > &jointAngles, bool &success) const override
Solve for the joint angles that yield the given EE position.
Definition
ArmKinematics.h:42
kinematics::ArmKinematics::getJacobian
navtypes::Matrixd< D, N > getJacobian(const navtypes::Vectord< N > &jointPos) const override
Get the jacobian matrix for the arm at the given joint angles.
Definition
ArmKinematics.h:37
kinematics::ArmKinematics::satisfiesConstraints
bool satisfiesConstraints(const navtypes::Vectord< N > &jointPos) const override
Check if the given joint configuration is valid.
Definition
ArmKinematics.h:25
kinematics::ArmKinematics::getSegLens
navtypes::Vectord< N > getSegLens() const override
Get the segment lengths for this arm.
Definition
ArmKinematics.h:29
kinematics::ArmKinematics::jointPosToEEPos
navtypes::Vectord< D > jointPosToEEPos(const navtypes::Vectord< N > &jointPos) const override
Given a joint position, calculate the current EE position.
Definition
ArmKinematics.h:33
kinematics::ForwardArmKinematics
A class that calculates the forward kinematics of an arm.
Definition
ForwardArmKinematics.h:16
kinematics::InverseArmKinematics::InverseArmKinematics
InverseArmKinematics(std::shared_ptr< const ForwardArmKinematics< D, N > > fk)
Construct an IK object.
Definition
InverseArmKinematics.h:26
Generated by
1.17.0