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


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