Go to the documentation of this file.    1 #ifndef AIKIDO_ROBOT_ROBOT_HPP_ 
    2 #define AIKIDO_ROBOT_ROBOT_HPP_ 
    6 #include <unordered_map> 
    9 #include <dart/collision/CollisionDetector.hpp> 
   10 #include <dart/collision/CollisionFilter.hpp> 
   11 #include <dart/dynamics/dynamics.hpp> 
   51       dart::dynamics::SkeletonPtr skeleton,
 
   52       const std::string name = 
"robot",
 
   53       bool addDefaultExecutors = 
true);
 
   64       dart::dynamics::ReferentialSkeletonPtr refSkeleton,
 
   66       dart::collision::CollisionDetectorPtr collisionDetector,
 
   67       std::shared_ptr<dart::collision::BodyNodeCollisionFilter> collisionFilter,
 
   68       const std::string name = 
"subrobot");
 
   71   virtual ~Robot() = 
default;
 
   79       const std::vector<std::pair<std::string, std::string>> bodyNodeList);
 
   88       const std::vector<std::pair<std::string, std::string>> bodyNodeList);
 
   95   virtual void step(
const std::chrono::system_clock::time_point& timepoint);
 
  117       const std::vector<std::string> bodyNames
 
  118       = std::vector<std::string>()) 
const;
 
  127       dart::dynamics::ReferentialSkeletonPtr refSkeleton,
 
  128       const std::string& name);
 
  143       std::unordered_map<std::string, const Eigen::VectorXd>
 
  144           namedConfigurations);
 
  155       const Eigen::VectorXd& goalConf,
 
  157       const std::shared_ptr<planner::ConfigurationToConfigurationPlanner>&
 
  160       const std::shared_ptr<aikido::planner::TrajectoryPostProcessor>
 
  166       const Eigen::VectorXd& goalConf,
 
  167       const std::shared_ptr<planner::ConfigurationToConfigurationPlanner>&
 
  170       const std::shared_ptr<aikido::planner::TrajectoryPostProcessor>
 
  186       const std::string bodyNodeName,
 
  187       const Eigen::Vector3d& offset,
 
  189       const std::shared_ptr<
 
  192       const std::shared_ptr<aikido::planner::TrajectoryPostProcessor>
 
  198       const std::string bodyNodeName,
 
  199       const Eigen::Vector3d& offset,
 
  200       const std::shared_ptr<
 
  203       const std::shared_ptr<aikido::planner::TrajectoryPostProcessor>
 
  220       const std::string bodyNodeName,
 
  221       const Eigen::Vector3d& offset,
 
  222       const Eigen::Vector3d& rotation,
 
  224       const std::shared_ptr<
 
  227       const std::shared_ptr<aikido::planner::TrajectoryPostProcessor>
 
  233       const std::string bodyNodeName,
 
  234       const Eigen::Vector3d& offset,
 
  235       const Eigen::Vector3d& rotation,
 
  236       const std::shared_ptr<
 
  239       const std::shared_ptr<aikido::planner::TrajectoryPostProcessor>
 
  262       const std::string bodyNodeName,
 
  266       const std::shared_ptr<planner::ConfigurationToConfigurationPlanner>&
 
  269       const std::shared_ptr<aikido::planner::TrajectoryPostProcessor>
 
  276       const std::string bodyNodeName,
 
  279       const std::shared_ptr<planner::ConfigurationToConfigurationPlanner>&
 
  282       const std::shared_ptr<aikido::planner::TrajectoryPostProcessor>
 
  356   template <aik
ido::control::ExecutorType T>
 
  358       const std::vector<double>& command,
 
  359       const std::chrono::duration<double>& timeout);
 
  378       bool includeSubrobots = 
true,
 
  379       bool includeParents = 
false,
 
  380       const std::vector<std::string> excludeSubrobots
 
  381       = std::vector<std::string>());
 
  414       const std::shared_ptr<aikido::planner::TrajectoryPostProcessor>
 
  418   std::shared_ptr<aikido::planner::TrajectoryPostProcessor>
 
  457   std::shared_ptr<dart::collision::BodyNodeCollisionFilter>
 
  462   std::shared_ptr<aikido::planner::TrajectoryPostProcessor>
 
  466   std::unique_ptr<common::RNG> 
mRng;
 
  473       = std::unordered_map<std::string, const Eigen::VectorXd>;
 
  485       dart::dynamics::ReferentialSkeletonPtr refSkeleton,
 
  486       const std::string& name);
 
  497 #endif // AIKIDO_ROBOT_ROBOT_HPP_ 
 
 
trajectory::TrajectoryPtr planToOffset(const std::string bodyNodeName, const Eigen::Vector3d &offset, const constraint::TestablePtr &testableConstraint, const std::shared_ptr< planner::dart::ConfigurationToEndEffectorOffsetPlanner > &planner=nullptr, const std::shared_ptr< aikido::planner::TrajectoryPostProcessor > trajPostProcessor=nullptr) const
Plan a specific body node of the robot to a position offset.
 
std::shared_ptr< aikido::planner::TrajectoryPostProcessor > getDefaultPostProcessor() const
 
std::unique_ptr< RNG > UniqueRNGPtr
Definition: RNG.hpp:17
 
std::shared_ptr< MetaSkeletonStateSpace > MetaSkeletonStateSpacePtr
Definition: MetaSkeletonStateSpace.hpp:17
 
std::shared_ptr< Executor > ExecutorPtr
Definition: Executor.hpp:16
 
virtual bool activateExecutor(const int id)
Deactivates the current active executor.
 
aikido::statespace::dart::MetaSkeletonStateSpacePtr mStateSpace
Definition: Robot.hpp:439
 
void setNamedConfigurations(std::unordered_map< std::string, const Eigen::VectorXd > namedConfigurations)
Sets the list of named configurations.
 
std::future< int > executeJointCommand(const std::vector< double > &command, const std::chrono::duration< double > &timeout)
Convenience: executes given joint command on the robot.
Definition: Robot-impl.hpp:6
 
virtual void enforceSelfCollisionPairs(const std::vector< std::pair< std::string, std::string >> bodyNodeList)
Manually remove pairs of body nodes for which collision constraints are enforced.
 
std::unordered_map< std::string, RobotPtr > mSubRobots
Definition: Robot.hpp:453
 
Paramters for Vector Field Planner.
Definition: util.hpp:42
 
Format of serialized trajectory in YAML.
Definition: algorithm.hpp:4
 
std::shared_ptr< TSR > TSRPtr
Definition: TSR.hpp:17
 
Base planner class for ConfigurationToEndEffectorPose planning problem.
Definition: ConfigurationToEndEffectorPosePlanner.hpp:14
 
virtual void deactivateExecutor()
Deactivates the active executor.
 
std::shared_ptr< Robot > RobotPtr
Definition: Robot.hpp:35
 
dart::dynamics::MetaSkeletonPtr getMetaSkeleton()
 
trajectory::TrajectoryPtr planToConfiguration(const Eigen::VectorXd &goalConf, const constraint::TestablePtr &testableConstraint, const std::shared_ptr< planner::ConfigurationToConfigurationPlanner > &planner=nullptr, const std::shared_ptr< aikido::planner::TrajectoryPostProcessor > trajPostProcessor=nullptr) const
Plan the robot to a specific configuration.
 
Robot(dart::dynamics::SkeletonPtr skeleton, const std::string name="robot", bool addDefaultExecutors=true)
Construct a new Robot object.
 
virtual ~Robot()=default
Destructor.
 
void setRNG(common::UniqueRNGPtr rng)
 
std::shared_ptr< CollisionFree > CollisionFreePtr
Definition: CollisionFree.hpp:22
 
dart::dynamics::MetaSkeletonPtr mMetaSkeleton
Definition: Robot.hpp:438
 
std::shared_ptr< Trajectory > TrajectoryPtr
Definition: Trajectory.hpp:13
 
constraint::TestablePtr getWorldCollisionConstraint(const std::vector< std::string > bodyNames=std::vector< std::string >()) const
Get the collision constraint between this (sub)robot and selected bodies within its World,...
 
aikido::planner::WorldPtr mWorld
Definition: Robot.hpp:469
 
std::set< std::string > mDofs
Definition: Robot.hpp:451
 
Eigen::VectorXd getNamedConfiguration(const std::string &name) const
Returns a named configuration, or size-0 vector if not found.
 
aikido::planner::WorldPtr getWorld() const
 
std::shared_ptr< World > WorldPtr
Definition: World.hpp:14
 
virtual RobotPtr registerSubRobot(dart::dynamics::ReferentialSkeletonPtr refSkeleton, const std::string &name)
Registers a subset of the joints of the skeleton as a new robot.
 
util::VectorFieldPlannerParameters mVFParams
Definition: Robot.hpp:489
 
virtual bool validateSubRobot(dart::dynamics::ReferentialSkeletonPtr refSkeleton, const std::string &name)
Checks validity of subrobot for registration: name should be unique.
 
void setDefaultPostProcessor(const std::shared_ptr< aikido::planner::TrajectoryPostProcessor > trajPostProcessor)
 
std::future< void > executeTrajectory(const trajectory::TrajectoryPtr &trajectory)
Convenience: executes given trajectory on the robot.
 
dart::dynamics::MetaSkeletonPtr getMetaSkeletonClone() const
 
std::shared_ptr< const ConfigurationRanker > ConstConfigurationRankerPtr
Definition: ConfigurationRanker.hpp:13
 
int mActiveExecutor
Definition: Robot.hpp:442
 
void setEnablePostProcessing(bool enable=true)
 
void setVFParams(util::VectorFieldPlannerParameters params)
 
Robot * mParentRobot
Definition: Robot.hpp:449
 
dart::collision::CollisionDetectorPtr mCollisionDetector
Definition: Robot.hpp:456
 
Base planner class for ConfigurationToEndEffectorOffset planning problem.
Definition: ConfigurationToEndEffectorOffsetPlanner.hpp:14
 
common::UniqueRNGPtr cloneRNG() const
 
bool mEnablePostProcessing
Definition: Robot.hpp:461
 
virtual void cancelAllCommands(bool includeSubrobots=true, bool includeParents=false, const std::vector< std::string > excludeSubrobots=std::vector< std::string >())
Cancels all running commands on this robot.
 
virtual aikido::control::ExecutorPtr getActiveExecutor()
Retrieves the active executor.
 
Eigen::VectorXd getCurrentConfiguration() const
 
ConfigurationMap mNamedConfigurations
Definition: Robot.hpp:474
 
virtual void clearExecutors()
Deactivates the active executor.
 
Robot base class for defining basic behaviors common to most robots.
Definition: Robot.hpp:38
 
std::string mName
Definition: Robot.hpp:437
 
dart::dynamics::ConstSkeletonPtr getRootSkeleton() const
 
constraint::TestablePtr combineCollisionConstraint(const constraint::dart::CollisionFreePtr &collisionFree) const
Given a collision constraint, returns it combined with the self-collision constraint of the entire ro...
 
trajectory::TrajectoryPtr planToPoseOffset(const std::string bodyNodeName, const Eigen::Vector3d &offset, const Eigen::Vector3d &rotation, const constraint::TestablePtr &testableConstraint, const std::shared_ptr< planner::dart::ConfigurationToEndEffectorPosePlanner > &planner=nullptr, const std::shared_ptr< aikido::planner::TrajectoryPostProcessor > trajPostProcessor=nullptr) const
Plan a specific body node of the robot to a pose offset (i.e.
 
std::vector< aikido::control::ExecutorPtr > mExecutors
Definition: Robot.hpp:444
 
std::unordered_map< std::string, int > mExecutorsNameMap
Definition: Robot.hpp:446
 
std::string getName() const
 
std::unique_ptr< common::RNG > mRng
Definition: Robot.hpp:466
 
std::unordered_map< std::string, const Eigen::VectorXd > ConfigurationMap
Definition: Robot.hpp:473
 
ExecutorType
Type of executor Can be used to determine if 2 executors make conflicting demands of individual degre...
Definition: Executor.hpp:35
 
std::shared_ptr< Testable > TestablePtr
Definition: Testable.hpp:13
 
virtual void step(const std::chrono::system_clock::time_point &timepoint)
Steps the robot (and underlying executors and subrobots) through time.
 
constraint::dart::CollisionFreePtr getSelfCollisionConstraint() const
Get the self-collision constraint of the robot.
 
std::shared_ptr< dart::collision::BodyNodeCollisionFilter > mSelfCollisionFilter
Definition: Robot.hpp:458
 
void setWorld(aikido::planner::WorldPtr world)
 
#define AIKIDO_DECLARE_POINTERS(X)
Definition: pointers.hpp:21
 
util::VectorFieldPlannerParameters getVFParams() const
 
virtual int registerExecutor(aikido::control::ExecutorPtr executor, std::string desiredName="")
Add an executor to the inactive executors list.
 
virtual void ignoreSelfCollisionPairs(const std::vector< std::pair< std::string, std::string >> bodyNodeList)
Manually add pairs of body nodes for which collision is ignored Note: adjacent body pairs are already...
 
trajectory::TrajectoryPtr planToTSR(const std::string bodyNodeName, const constraint::dart::TSRPtr &tsr, const constraint::TestablePtr &testableConstraint, const util::PlanToTSRParameters ¶ms=util::PlanToTSRParameters(), const std::shared_ptr< planner::ConfigurationToConfigurationPlanner > &planner=nullptr, const std::shared_ptr< aikido::planner::TrajectoryPostProcessor > trajPostProcessor=nullptr, const distance::ConstConfigurationRankerPtr &ranker=nullptr) const
Plan a specific body node of the robot to a sample configuraiton within a Task Space Region.
 
RobotPtr getSubRobotByName(const std::string &name) const
Get existing subrobot pointer.
 
std::shared_ptr< aikido::planner::TrajectoryPostProcessor > mDefaultPostProcessor
Definition: Robot.hpp:463