Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00046 #ifndef MANIPULATION_TRANSFORMS_H_
00047 #define MANIPULATION_TRANSFORMS_H_
00048
00049 #include <LinearMath/btTransform.h>
00050 #include "kdl/frames.hpp"
00051 #include <vector>
00052
00053 class ManipulationTransforms {
00054 public:
00055
00059 ManipulationTransforms();
00060
00066 ManipulationTransforms(const btTransform &obj_initial_pose, const std::vector<btTransform> &effector_initial_poses);
00067 ManipulationTransforms(const btTransform &obj_initial_pose, const btTransform &effector_initial_pose);
00068 ManipulationTransforms(const btTransform &obj_initial_pose, const btTransform &effector1_initial_pose, const btTransform &effector2_initial_pose);
00069 virtual ~ManipulationTransforms();
00070
00076 void setInitialTransforms(const btTransform &obj_initial_pose, const std::vector<btTransform> &effector_initial_poses);
00077 void setInitialTransforms(const btTransform &obj_initial_pose, const btTransform &effector_initial_pose);
00078 void setInitialTransforms(const btTransform &obj_initial_pose, const btTransform &effector1_initial_pose, const btTransform &effector2_initial_pose);
00079
00085 double mapEffectorPosesToObject(const std::vector<btTransform> &effector_query_poses, btTransform &obj_pose);
00086 double mapEffectorPosesToObject(const btTransform &effector_query_pose, btTransform &obj_pose);
00087 double mapEffectorPosesToObject(const btTransform &effector1_query_pose, const btTransform &effector2_query_pose, btTransform &obj_pose);
00088
00095 double mapObjectPoseToEffectors(const btTransform &obj_query_pose, std::vector<btTransform> &effector_poses);
00096 double mapObjectPoseToEffectors(const btTransform &obj_query_pose, btTransform &effector_pose);
00097 double mapObjectPoseToEffectors(const btTransform &obj_query_pose, btTransform &effector1_pose, btTransform &effector2_pose);
00098
00110 double mapEffectorTwistsToObject(const std::vector<KDL::Twist> &effector_query_twists, KDL::Twist &obj_twist, bool from_ref = true);
00111 double mapEffectorTwistsToObject(const KDL::Twist &effector_query_twist, KDL::Twist &obj_twist, bool from_ref = true);
00112 double mapEffectorTwistsToObject(const KDL::Twist &effector1_query_twist, const KDL::Twist &effector2_query_twist, KDL::Twist &obj_twist, bool from_ref = true);
00113
00123 double mapObjectTwistToEffectors(const KDL::Twist &obj_query_twist, std::vector<KDL::Twist> &effector_twists, bool to_ref = true);
00124 double mapObjectTwistToEffectors(const KDL::Twist &obj_query_twist, KDL::Twist &effector_twist, bool to_ref = true);
00125 double mapObjectTwistToEffectors(const KDL::Twist &obj_query_twist, KDL::Twist &effector1_twist, KDL::Twist &effector2_twist, bool to_ref = true);
00126
00135 double mapEffectorWrenchesToObject(const std::vector<KDL::Wrench> &effector_query_wrenches, KDL::Wrench &obj_wrench);
00136
00144 double mapObjectWrenchToEffectors(const KDL::Wrench &obj_query_wrench, std::vector<KDL::Wrench> &effector_wrenches);
00145
00146 private:
00147 unsigned int n_effectors_;
00149 std::vector<btTransform> obj_T_effectors_;
00150 std::vector<btTransform> effector_T_obj_;
00152 std::vector<btTransform> effector_T_ref_;
00153 btTransform obj_T_ref_;
00154 };
00155
00156 #endif