TrapezoidalVelocityTrajectoryFactory.cpp
Go to the documentation of this file.
00001 #include <robodyn_controllers/TrapezoidalVelocityTrajectoryFactory.h>
00002 
00003 boost::shared_ptr<JointTrajectory> TrapezoidalVelocityJointTrajectoryFactory::getTrajectory(const KDL::JntArrayAcc& startPose,
00004         const KDL::JntArrayAcc& goalPose, double timeToFinish) const
00005 {
00006     boost::shared_ptr<JointTrajectory> traj(new TrapezoidalVelocityJointTrajectory(*this, startPose, goalPose, timeToFinish));
00007     return traj;
00008 }
00009 
00010 boost::shared_ptr<CartesianTrajectory> TrapezoidalVelocityCartesianTrajectoryFactory::getTrajectory(const KDL::FrameAcc& startPose,
00011         const KDL::FrameAcc& goalPose, double timeToFinish) const
00012 {
00013     boost::shared_ptr<CartesianTrajectory> traj(new TrapezoidalVelocityCartesianTrajectory(*this, startPose, goalPose, timeToFinish));
00014     return traj;
00015 }
00016 
00017 boost::shared_ptr<SynchedCartesianTrajectory> TrapezoidalVelocitySynchedCartesianTrajectoryFactory::getTrajectory(const std::vector<KDL::FrameAcc>& startPoses,
00018         const std::vector<KDL::FrameAcc>& goalPoses, double timeToFinish) const
00019 {
00020     if (startPoses.size() != goalPoses.size())
00021     {
00022         std::stringstream err;
00023         err << "TrapezoidalVelocityCartesianTrajectoryFactory::getTrajectory() - number of start poses and goal poses don't match";
00024         NasaCommonLogging::Logger::log("gov.nasa.controllers.TrapezoidalVelocityCartesianTrajectoryFactory", log4cpp::Priority::ERROR, err.str());
00025         throw std::runtime_error(err.str());
00026     }
00027 
00028     std::vector<boost::shared_ptr<TrapezoidalVelocityCartesianTrajectory> > trajPtrs(startPoses.size());
00029     double duration = 0.;
00030 
00031     for (unsigned int i = 0; i < startPoses.size(); ++i)
00032     {
00033         trajPtrs[i].reset(new TrapezoidalVelocityCartesianTrajectory(*this, startPoses[i], goalPoses[i], timeToFinish));
00034 
00035         if (trajPtrs[i]->getDuration() > duration)
00036         {
00037             duration = trajPtrs[i]->getDuration();
00038         }
00039     }
00040 
00041     boost::shared_ptr<SynchedCartesianTrajectory> synchedTrajPtrs(new SynchedCartesianTrajectory);
00042 
00043     for (unsigned int i = 0; i < startPoses.size(); ++i)
00044     {
00045         trajPtrs[i]->setDuration(duration);
00046         synchedTrajPtrs->push_back(trajPtrs[i]);
00047     }
00048 
00049     return synchedTrajPtrs;
00050 }
00051 


robodyn_controllers
Author(s):
autogenerated on Sat Jun 8 2019 20:20:53