Commit 420fa8c5 authored by Florent Lamiraux's avatar Florent Lamiraux
Browse files

Add methods in Joint class to get maximal linear and angular velocities.

parent 7207542c
......@@ -175,6 +175,26 @@ namespace hpp {
void lowerBound (size_type rank, value_type lowerBound);
/// Set upper bound of given degree of freedom
void upperBound (size_type rank, value_type upperBound);
/// Get upper bound on linear velocity of the joint frame
/// \return coefficient \f$\lambda\f$ such that
/// \f{equation*}
/// \forall \mathbf{q}_{joint}\ \ \ \ \ \ \|\mathbf {v}\| \leq \lambda \|\mathbf{\dot{q}}_{joint}\|
/// \f}
/// where
/// \li \f$\mathbf{q}_{joint}\f$ is any joint configuration,
/// \li \f$\mathbf{\dot{q}}_{joint}\f$ is the joint velocity, and
/// \li \f$\mathbf{v}\f$ is the linear velocity of the joint frame.
virtual value_type upperBoundLinearVelocity () const = 0;
/// Get upper bound on angular velocity of the joint frame
/// \return coefficient \f$\lambda\f$ such that
/// \f{equation*}
/// \forall \mathbf{q}_{joint}\ \ \ \ \ \ \|\omega\| \leq \lambda \|\mathbf{\dot{q}}_{joint}\|
/// \f}
/// where
/// \li \f$\mathbf{q}_{joint}\f$ is any joint configuration,
/// \li \f$\mathbf{\dot{q}}_{joint}\f$ is the joint velocity, and
/// \li \f$\omega\f$ is the angular velocity of the joint frame.
virtual value_type upperBoundAngularVelocity () const = 0;
/// \}
/// \name Jacobian
......@@ -282,6 +302,19 @@ namespace hpp {
virtual void computePosition (ConfigurationIn_t configuration,
const Transform3f& parentPosition,
Transform3f& position) const;
/// Get upper bound on linear velocity of the joint frame
/// \return 0
virtual value_type upperBoundLinearVelocity () const
{
return 0;
}
/// Get upper bound on angular velocity of the joint frame
/// \return 0
virtual value_type upperBoundAngularVelocity () const
{
return 0;
}
private:
virtual void writeSubJacobian (const JointPtr_t& child);
virtual void writeComSubjacobian (ComJacobian_t& jacobian,
......@@ -307,6 +340,18 @@ namespace hpp {
const Transform3f& parentPosition,
Transform3f& position) const;
virtual ~JointSO3 ();
/// Get upper bound on linear velocity of the joint frame
/// \return 0
virtual value_type upperBoundLinearVelocity () const
{
return 0;
}
/// Get upper bound on angular velocity of the joint frame
/// \return 1
virtual value_type upperBoundAngularVelocity () const
{
return 1;
}
private:
virtual void writeSubJacobian (const JointPtr_t& child);
virtual void writeComSubjacobian (ComJacobian_t& jacobian,
......@@ -334,6 +379,18 @@ namespace hpp {
const Transform3f& parentPosition,
Transform3f& position) const;
virtual ~JointRotation ();
/// Get upper bound on linear velocity of the joint frame
/// \return 0
virtual value_type upperBoundLinearVelocity () const
{
return 0;
}
/// Get upper bound on angular velocity of the joint frame
/// \return 1
virtual value_type upperBoundAngularVelocity () const
{
return 1;
}
private:
virtual void writeSubJacobian (const JointPtr_t& child);
virtual void writeComSubjacobian (ComJacobian_t& jacobian,
......@@ -366,6 +423,18 @@ namespace hpp {
const Transform3f& parentPosition,
Transform3f& position) const;
virtual ~JointTranslation ();
/// Get upper bound on linear velocity of the joint frame
/// \return 1
virtual value_type upperBoundLinearVelocity () const
{
return 1;
}
/// Get upper bound on angular velocity of the joint frame
/// \return 0
virtual value_type upperBoundAngularVelocity () const
{
return 0;
}
private:
virtual void writeSubJacobian (const JointPtr_t& child);
virtual void writeComSubjacobian (ComJacobian_t& jacobian,
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment