Aikido
KinematicSimulationJointCommandExecutor.hpp
Go to the documentation of this file.
1 #ifndef AIKIDO_CONTROL_KINEMATICSIMULATIONJOINTCOMMANDEXECUTOR_HPP_
2 #define AIKIDO_CONTROL_KINEMATICSIMULATIONJOINTCOMMANDEXECUTOR_HPP_
3 
4 #include <future>
5 #include <mutex>
6 
7 #include <dart/dynamics/Skeleton.hpp>
8 
10 #include "aikido/control/util.hpp"
11 
12 namespace aikido {
13 namespace control {
14 
17 template <ExecutorType T>
19 {
20 public:
25  ::dart::dynamics::MetaSkeletonPtr metaskeleton);
26 
31  std::vector<::dart::dynamics::DegreeOfFreedom*> dofs);
32 
34 
35  // Documentation inherited
36  virtual std::future<int> execute(
37  const std::vector<double>& command,
38  const std::chrono::duration<double>& timeout,
39  const std::chrono::system_clock::time_point& timepoint) override;
40 
41  // Documentation inherited
42  virtual std::future<int> execute(
43  const std::vector<double>& command,
44  const std::chrono::duration<double>& timeout
45  = std::chrono::duration<double>(1.0)) override
46  {
47  return this->execute(command, timeout, std::chrono::system_clock::now());
48  }
49 
55  void step(const std::chrono::system_clock::time_point& timepoint) override;
56 
58  void cancel() override;
59 
60 private:
62  std::vector<double> mCommand;
63 
65  ::dart::dynamics::MetaSkeletonPtr mMetaSkeleton;
66 
69 
71  std::unique_ptr<std::promise<int>> mPromise;
72 
74  mutable std::mutex mMutex;
75 
77  std::chrono::system_clock::time_point mExecutionStartTime;
78 
80  std::vector<double> mStartPosition;
81 
83  std::chrono::duration<double> mTimeout;
84 };
85 
86 // Define common template arguments
91 // Note: No effort simulation without dynamics, treat like velocity.
94 
95 } // namespace control
96 } // namespace aikido
97 
99 
100 #endif
aikido::control::KinematicSimulationJointCommandExecutor::mMetaSkeleton
::dart::dynamics::MetaSkeletonPtr mMetaSkeleton
The controlled subset of mSkeleton for the currently executing command.
Definition: KinematicSimulationJointCommandExecutor.hpp:65
aikido::control::JointCommandExecutor
Abstract class for executing a command of a single type on a group of joints.
Definition: JointCommandExecutor.hpp:21
util.hpp
aikido
Format of serialized trajectory in YAML.
Definition: algorithm.hpp:4
aikido::control::KinematicSimulationJointCommandExecutor::execute
virtual std::future< int > execute(const std::vector< double > &command, const std::chrono::duration< double > &timeout=std::chrono::duration< double >(1.0)) override
Execute a Joint Command, setting future upon completion.
Definition: KinematicSimulationJointCommandExecutor.hpp:42
KinematicSimulationJointCommandExecutor-impl.hpp
aikido::control::KinematicSimulationJointCommandExecutor::mPromise
std::unique_ptr< std::promise< int > > mPromise
Promise whose future is returned by execute()
Definition: KinematicSimulationJointCommandExecutor.hpp:71
aikido::control::KinematicSimulationJointCommandExecutor::execute
virtual std::future< int > execute(const std::vector< double > &command, const std::chrono::duration< double > &timeout, const std::chrono::system_clock::time_point &timepoint) override
Execute a Joint Command, setting future upon completion.
Definition: KinematicSimulationJointCommandExecutor-impl.hpp:64
aikido::control::KinematicSimulationJointCommandExecutor::cancel
void cancel() override
Cancels the current command.
Definition: KinematicSimulationJointCommandExecutor-impl.hpp:209
aikido::control::KinematicSimulationJointCommandExecutor::mInProgress
bool mInProgress
Whether a command is being executed.
Definition: KinematicSimulationJointCommandExecutor.hpp:68
aikido::control::KinematicSimulationJointCommandExecutor::step
void step(const std::chrono::system_clock::time_point &timepoint) override
Step to a point in time.
Definition: KinematicSimulationJointCommandExecutor-impl.hpp:143
JointCommandExecutor.hpp
aikido::control::KinematicSimulationJointCommandExecutor::mTimeout
std::chrono::duration< double > mTimeout
Velocity timeout.
Definition: KinematicSimulationJointCommandExecutor.hpp:83
aikido::control::KinematicSimulationJointCommandExecutor::mMutex
std::mutex mMutex
Manages access to mCommand, mInProgress, mPromise.
Definition: KinematicSimulationJointCommandExecutor.hpp:74
aikido::control::KinematicSimulationJointCommandExecutor
Executes joint command in DART.
Definition: KinematicSimulationJointCommandExecutor.hpp:18
aikido::control::KinematicSimulationJointCommandExecutor::mExecutionStartTime
std::chrono::system_clock::time_point mExecutionStartTime
Time of position command start (for interpolation)
Definition: KinematicSimulationJointCommandExecutor.hpp:77
aikido::control::KinematicSimulationJointCommandExecutor::~KinematicSimulationJointCommandExecutor
virtual ~KinematicSimulationJointCommandExecutor()
Definition: KinematicSimulationJointCommandExecutor-impl.hpp:46
aikido::control::KinematicSimulationJointCommandExecutor::mCommand
std::vector< double > mCommand
Command being executed.
Definition: KinematicSimulationJointCommandExecutor.hpp:62
aikido::control::KinematicSimulationJointCommandExecutor::mStartPosition
std::vector< double > mStartPosition
Position at start of command (for interpolation)
Definition: KinematicSimulationJointCommandExecutor.hpp:80
aikido::control::KinematicSimulationJointCommandExecutor::KinematicSimulationJointCommandExecutor
KinematicSimulationJointCommandExecutor(::dart::dynamics::MetaSkeletonPtr metaskeleton)
Constructor.
Definition: KinematicSimulationJointCommandExecutor-impl.hpp:21