RosMsgTrajectoryFactory.h
Go to the documentation of this file.
00001 
00008 #ifndef ROS_MSG_TRAJECTORY_FACTORY_H
00009 #define ROS_MSG_TRAJECTORY_FACTORY_H
00010 
00011 #include <robodyn_controllers/TrajectoryFactory.h>
00012 #include <robodyn_controllers/RosMsgTrajectory.h>
00013 
00014 #include <boost/concept/assert.hpp>
00015 #include <boost/concept_check.hpp>
00016 
00017 #include "r2_msgs/ControllerJointSettings.h"
00018 #include "r2_msgs/ControllerPoseSettings.h"
00019 #include <sensor_msgs/JointState.h>
00020 #include "r2_msgs/PoseState.h"
00021 
00022 #include <stdexcept>
00023 #include "nasa_common_logging/Logger.h"
00024 #include "robodyn_utilities/RosMsgConverter.h"
00025 
00026 class RosMsgJointTrajectoryFactory
00027 {
00028 public:
00029     RosMsgJointTrajectoryFactory() {}
00030     virtual ~RosMsgJointTrajectoryFactory() {}
00031 
00032     void setFactory(boost::shared_ptr<JointTrajectoryFactory<> > factory_in)
00033     {
00034         factory = factory_in;
00035         sequenceFactory.setTrajectoryFactory(factory);
00036         motionLimiter.setJointMotionLimiter(factory);
00037     }
00038 
00039     void setSettings(const r2_msgs::ControllerJointSettings& settings);
00040     void getSettings(r2_msgs::ControllerJointSettings& settings);
00041     void setLimits(const std::vector<std::string>& jointNames, double velLim, double accLim);
00042     void setPositionLimiter(boost::shared_ptr<JointNamePositionLimiter> posLimiter);
00043 
00051     virtual boost::shared_ptr<RosMsgJointTrajectory> getTrajectory(const sensor_msgs::JointState& jointPositions,
00052             const sensor_msgs::JointState& jointVels,
00053             const sensor_msgs::JointState& prevJointVels,
00054             const trajectory_msgs::JointTrajectory& goalTraj);
00055 
00056 protected:
00057     typedef JointTrajectorySequenceFactory<> sequenceFactoryType;
00058     sequenceFactoryType sequenceFactory;
00059     boost::shared_ptr<JointTrajectoryFactory<> > factory;
00060     JointNameMotionLimiter motionLimiter;
00061     boost::shared_ptr<JointNamePositionLimiter> positionLimiter;
00062 };
00063 
00064 class RosMsgCartesianTrajectoryFactory
00065 {
00066 public:
00067     RosMsgCartesianTrajectoryFactory() {}
00068     virtual ~RosMsgCartesianTrajectoryFactory() {}
00069 
00070     void setFactory(boost::shared_ptr<CartesianTrajectoryFactory<SynchedTrajectory> > factory_in)
00071     {
00072         factory = factory_in;
00073         sequenceFactory.setTrajectoryFactory(factory);
00074     }
00075 
00076     void setSettings(const r2_msgs::ControllerPoseSettings& settings);
00077 
00083     virtual boost::shared_ptr<RosMsgSynchedCartesianTrajectory> getTrajectory(const r2_msgs::PoseState& poseState,
00084             const r2_msgs::PoseTrajectory& goalTraj);
00085 
00086 protected:
00087     typedef CartesianTrajectorySequenceFactory<SynchedTrajectory> sequenceFactoryType;
00088     sequenceFactoryType sequenceFactory;
00089     boost::shared_ptr<CartesianTrajectoryFactory<SynchedTrajectory> > factory;
00090 };
00091 
00092 #endif


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