Aikido
Robot.hpp
Go to the documentation of this file.
1 #ifndef AIKIDO_ROBOT_ROBOT_HPP_
2 #define AIKIDO_ROBOT_ROBOT_HPP_
3 
4 #include <chrono>
5 #include <unordered_map>
6 
7 #include <Eigen/Core>
8 #include <dart/dynamics/dynamics.hpp>
9 
10 #include "aikido/common/RNG.hpp"
17 
18 namespace aikido {
19 namespace robot {
20 
22 
23 class Robot
27 {
28 public:
29  virtual ~Robot() = default;
30 
36  virtual std::unique_ptr<aikido::trajectory::Spline> smoothPath(
37  const dart::dynamics::MetaSkeletonPtr& metaSkeleton,
39  const constraint::TestablePtr& constraint)
40  = 0;
41 
45  virtual std::unique_ptr<aikido::trajectory::Spline> retimePath(
46  const dart::dynamics::MetaSkeletonPtr& metaSkeleton,
48  = 0;
49 
55  virtual std::unique_ptr<aikido::trajectory::Spline> retimePathWithKunz(
56  const dart::dynamics::MetaSkeletonPtr& metaSkeleton,
58  double maxDeviation,
59  double timestep)
60  = 0;
61 
64  virtual std::future<void> executeTrajectory(
65  const trajectory::TrajectoryPtr& trajectory) const = 0;
66 
70  virtual boost::optional<Eigen::VectorXd> getNamedConfiguration(
71  const std::string& name) const = 0;
72 
75  virtual void setNamedConfigurations(
76  std::unordered_map<std::string, const Eigen::VectorXd>
77  namedConfigurations)
78  = 0;
79 
81  virtual std::string getName() const = 0;
82 
84  virtual dart::dynamics::ConstMetaSkeletonPtr getMetaSkeleton() const = 0;
85 
87  dart::dynamics::MetaSkeletonPtr getMetaSkeleton();
88 
91  getStateSpace() const = 0;
92 
95 
98  virtual void setRoot(Robot* robot) = 0;
99 
103  virtual void step(const std::chrono::system_clock::time_point& timepoint) = 0;
104 
110  const dart::dynamics::MetaSkeletonPtr& metaSkeleton) const = 0;
111 
121  const dart::dynamics::MetaSkeletonPtr& metaSkeleton,
122  const constraint::dart::CollisionFreePtr& collisionFree) const = 0;
123 };
124 
125 } // namespace robot
126 } // namespace aikido
127 
128 #endif // AIKIDO_ROBOT_ROBOT_HPP_
aikido::statespace::dart::ConstMetaSkeletonStateSpacePtr
std::shared_ptr< const MetaSkeletonStateSpace > ConstMetaSkeletonStateSpacePtr
Definition: MetaSkeletonStateSpace.hpp:17
aikido::robot::Robot::getMetaSkeleton
virtual dart::dynamics::ConstMetaSkeletonPtr getMetaSkeleton() const =0
aikido::statespace::dart::MetaSkeletonStateSpacePtr
std::shared_ptr< MetaSkeletonStateSpace > MetaSkeletonStateSpacePtr
Definition: MetaSkeletonStateSpace.hpp:17
aikido::robot::Robot::setNamedConfigurations
virtual void setNamedConfigurations(std::unordered_map< std::string, const Eigen::VectorXd > namedConfigurations)=0
Sets the list of named configurations.
RNG.hpp
aikido
Format of serialized trajectory in YAML.
Definition: algorithm.hpp:4
aikido::robot::Robot::retimePathWithKunz
virtual std::unique_ptr< aikido::trajectory::Spline > retimePathWithKunz(const dart::dynamics::MetaSkeletonPtr &metaSkeleton, const aikido::trajectory::Trajectory *path, double maxDeviation, double timestep)=0
Returns a timed trajectory computed with KunzRetimer.
TSR.hpp
aikido::robot::Robot::~Robot
virtual ~Robot()=default
aikido::robot::Robot::getSelfCollisionConstraint
virtual constraint::dart::CollisionFreePtr getSelfCollisionConstraint(const statespace::dart::ConstMetaSkeletonStateSpacePtr &space, const dart::dynamics::MetaSkeletonPtr &metaSkeleton) const =0
Returns self-collision constraint.
aikido::robot::Robot::getName
virtual std::string getName() const =0
Spline.hpp
aikido::constraint::dart::CollisionFreePtr
std::shared_ptr< CollisionFree > CollisionFreePtr
Definition: CollisionFree.hpp:22
aikido::trajectory::TrajectoryPtr
std::shared_ptr< Trajectory > TrajectoryPtr
Definition: Trajectory.hpp:13
CollisionFree.hpp
Trajectory.hpp
aikido::robot::Robot::setRoot
virtual void setRoot(Robot *robot)=0
Sets the root of this robot.
aikido::robot::Robot::retimePath
virtual std::unique_ptr< aikido::trajectory::Spline > retimePath(const dart::dynamics::MetaSkeletonPtr &metaSkeleton, const aikido::trajectory::Trajectory *path)=0
Returns a timed trajectory that can be executed by the robot.
aikido::robot::Robot::smoothPath
virtual std::unique_ptr< aikido::trajectory::Spline > smoothPath(const dart::dynamics::MetaSkeletonPtr &metaSkeleton, const aikido::trajectory::Trajectory *path, const constraint::TestablePtr &constraint)=0
Returns a timed trajectory that can be executed by the robot.
MetaSkeletonStateSpace.hpp
aikido::robot::Robot::executeTrajectory
virtual std::future< void > executeTrajectory(const trajectory::TrajectoryPtr &trajectory) const =0
Executes a trajectory.
aikido::robot::Robot
Robot interface for defining basic behaviors of a robot.
Definition: Robot.hpp:26
aikido::robot::Robot::step
virtual void step(const std::chrono::system_clock::time_point &timepoint)=0
Simulates up to the provided timepoint.
aikido::constraint::TestablePtr
std::shared_ptr< Testable > TestablePtr
Definition: Testable.hpp:13
TrajectoryExecutor.hpp
AIKIDO_DECLARE_POINTERS
#define AIKIDO_DECLARE_POINTERS(X)
Definition: pointers.hpp:21
aikido::trajectory::Trajectory
Time-parameterized path in a StateSpace.
Definition: Trajectory.hpp:20
aikido::robot::Robot::getNamedConfiguration
virtual boost::optional< Eigen::VectorXd > getNamedConfiguration(const std::string &name) const =0
Returns a named configuration.
aikido::robot::Robot::getStateSpace
virtual aikido::statespace::dart::ConstMetaSkeletonStateSpacePtr getStateSpace() const =0
aikido::robot::Robot::getFullCollisionConstraint
virtual constraint::TestablePtr getFullCollisionConstraint(const statespace::dart::ConstMetaSkeletonStateSpacePtr &space, const dart::dynamics::MetaSkeletonPtr &metaSkeleton, const constraint::dart::CollisionFreePtr &collisionFree) const =0
TODO: Consider changing this to return a CollisionFreePtr.