All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DARTTypes.hh
Go to the documentation of this file.
1 /*
2  * Copyright 2014 Open Source Robotics Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16 */
17 
18 #ifndef _GAZEBO_DARTTYPES_HH_
19 #define _GAZEBO_DARTTYPES_HH_
20 
21 #include <boost/shared_ptr.hpp>
22 #include "gazebo/math/Pose.hh"
24 #include "gazebo/util/system.hh"
25 
30 namespace gazebo
31 {
32  namespace physics
33  {
34  class DARTPhysics;
35  class DARTModel;
36  class DARTLink;
37  class DARTJoint;
38  class DARTCollision;
39  class DARTRayShape;
40 
41  typedef boost::shared_ptr<DARTPhysics> DARTPhysicsPtr;
42  typedef boost::shared_ptr<DARTModel> DARTModelPtr;
43  typedef boost::shared_ptr<DARTLink> DARTLinkPtr;
44  typedef boost::shared_ptr<DARTJoint> DARTJointPtr;
45  typedef boost::shared_ptr<DARTCollision> DARTCollisionPtr;
46  typedef boost::shared_ptr<DARTRayShape> DARTRayShapePtr;
47 
50 
55  {
57  public: static Eigen::Vector3d ConvVec3(const math::Vector3 &_vec3)
58  {
59  return Eigen::Vector3d(_vec3.x, _vec3.y, _vec3.z);
60  }
61 
63  public: static math::Vector3 ConvVec3(const Eigen::Vector3d &_vec3)
64  {
65  return math::Vector3(_vec3.x(), _vec3.y(), _vec3.z());
66  }
67 
69  public: static Eigen::Quaterniond ConvQuat(const math::Quaternion &_quat)
70  {
71  return Eigen::Quaterniond(_quat.w, _quat.x, _quat.y, _quat.z);
72  }
73 
75  public: static math::Quaternion ConvQuat(const Eigen::Quaterniond &_quat)
76  {
77  return math::Quaternion(_quat.w(), _quat.x(), _quat.y(), _quat.z());
78  }
79 
81  public: static Eigen::Isometry3d ConvPose(const math::Pose &_pose)
82  {
83  // Below line doesn't work with 'libeigen3-dev is 3.0.5-1'
84  // return Eigen::Translation3d(ConvVec3(_pose.pos)) *
85  // ConvQuat(_pose.rot);
86 
87  Eigen::Isometry3d res;
88 
89  res.translation() = ConvVec3(_pose.pos);
90  res.linear() = Eigen::Matrix3d(ConvQuat(_pose.rot));
91 
92  return res;
93  }
94 
96  public: static math::Pose ConvPose(const Eigen::Isometry3d &_T)
97  {
98  math::Pose pose;
99  pose.pos = ConvVec3(_T.translation());
100  pose.rot = ConvQuat(Eigen::Quaterniond(_T.linear()));
101  return pose;
102  }
103  };
104  }
105 }
106 
107 #endif