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