Go to the documentation of this file.    1 #ifndef AIKIDO_CONTROL_JACOBIANEXECUTOR_HPP_ 
    2 #define AIKIDO_CONTROL_JACOBIANEXECUTOR_HPP_ 
    7 #include <dart/dynamics/Skeleton.hpp> 
   19 template <ExecutorType T>
 
   33       ::dart::dynamics::BodyNode* eeNode,
 
   45       const Eigen::Vector6d command,
 
   46       const std::chrono::duration<double>& timeout
 
   47       = std::chrono::duration<double>(1))
 
   49     return this->
execute(command, timeout, std::chrono::system_clock::now());
 
   51   virtual std::future<int> 
execute(
 
   52       const Eigen::Vector6d command,
 
   53       const std::chrono::duration<double>& timeout,
 
   54       const std::chrono::system_clock::time_point& timepoint);
 
   61       const std::vector<double>& command,
 
   62       const std::chrono::duration<double>& timeout
 
   63       = std::chrono::duration<double>(1))
 
   65     return this->
execute(command, timeout, std::chrono::system_clock::now());
 
   67   virtual std::future<int> 
execute(
 
   68       const std::vector<double>& command,
 
   69       const std::chrono::duration<double>& timeout,
 
   70       const std::chrono::system_clock::time_point& timepoint);
 
   77   void step(
const std::chrono::system_clock::time_point& timepoint) 
override;
 
   84   std::vector<double> 
SE3ToJoint(
const Eigen::Vector6d command);
 
  123 template <ExecutorType T>
 
  125 template <ExecutorType T>
 
 
 
Abstract class for executing a command of a single type on a group of joints.
Definition: JointCommandExecutor.hpp:21
 
std::chrono::duration< double > mTimeout
Velocity timeout.
Definition: JacobianExecutor.hpp:111
 
virtual ~JacobianExecutor()
Definition: JacobianExecutor-impl.hpp:48
 
Format of serialized trajectory in YAML.
Definition: algorithm.hpp:4
 
std::chrono::system_clock::time_point mExecutionStartTime
Time of command start.
Definition: JacobianExecutor.hpp:108
 
std::mutex mMutex
Manages access to mCommand, mInProgress, mPromise.
Definition: JacobianExecutor.hpp:105
 
JacobianExecutor(::dart::dynamics::BodyNode *eeNode, std::shared_ptr< JointCommandExecutor< T >> executor=nullptr, double lambda=DEFAULT_LAMBDA)
Constructor.
Definition: JacobianExecutor-impl.hpp:19
 
virtual std::future< int > execute(const std::vector< double > &command, const std::chrono::duration< double > &timeout=std::chrono::duration< double >(1))
Execute a Joint Command, setting future upon completion.
Definition: JacobianExecutor.hpp:60
 
virtual std::future< int > execute(const Eigen::Vector6d command, const std::chrono::duration< double > &timeout=std::chrono::duration< double >(1))
Execute an SE3 Command, setting future upon completion.
Definition: JacobianExecutor.hpp:44
 
void cancel()
Cancels the current command.
Definition: JacobianExecutor-impl.hpp:216
 
Executes end-effector SE3 command.
Definition: JacobianExecutor.hpp:20
 
std::unique_ptr< std::promise< int > > mPromise
Promise whose future is returned by execute()
Definition: JacobianExecutor.hpp:102
 
bool mInProgress
Whether a command is being executed.
Definition: JacobianExecutor.hpp:99
 
std::future< int > mFuture
Future for underlying executor call.
Definition: JacobianExecutor.hpp:114
 
static constexpr double DEFAULT_LAMBDA
Definition: JacobianExecutor.hpp:24
 
std::shared_ptr< JointCommandExecutor< T > > mExecutor
Underlying Joint Command Executor.
Definition: JacobianExecutor.hpp:90
 
Eigen::Vector6d mCommand
Command being executed (6d)
Definition: JacobianExecutor.hpp:93
 
static constexpr size_t SE3_SIZE
Definition: JacobianExecutor.hpp:23
 
double mLambda
Jacobian damping factor.
Definition: JacobianExecutor.hpp:96
 
void step(const std::chrono::system_clock::time_point &timepoint) override
Step to a point in time.
Definition: JacobianExecutor-impl.hpp:139
 
::dart::dynamics::BodyNode * mEENode
End Effector Body Node Name.
Definition: JacobianExecutor.hpp:87
 
std::vector< double > SE3ToJoint(const Eigen::Vector6d command)
Convert SE3 command to joint command.
Definition: JacobianExecutor-impl.hpp:99