DARTTypes.hh
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2014-2015 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;
41 
42  typedef boost::shared_ptr<DARTPhysics> DARTPhysicsPtr;
43  typedef boost::shared_ptr<DARTModel> DARTModelPtr;
44  typedef boost::shared_ptr<DARTLink> DARTLinkPtr;
45  typedef boost::shared_ptr<DARTJoint> DARTJointPtr;
46  typedef boost::shared_ptr<DARTCollision> DARTCollisionPtr;
47  typedef boost::shared_ptr<DARTRayShape> DARTRayShapePtr;
48  typedef boost::shared_ptr<DARTSurfaceParams> DARTSurfaceParamsPtr;
49 
52 
57  {
59  public: static Eigen::Vector3d ConvVec3(const math::Vector3 &_vec3)
60  {
61  return Eigen::Vector3d(_vec3.x, _vec3.y, _vec3.z);
62  }
63 
65  public: static math::Vector3 ConvVec3(const Eigen::Vector3d &_vec3)
66  {
67  return math::Vector3(_vec3.x(), _vec3.y(), _vec3.z());
68  }
69 
71  public: static Eigen::Quaterniond ConvQuat(const math::Quaternion &_quat)
72  {
73  return Eigen::Quaterniond(_quat.w, _quat.x, _quat.y, _quat.z);
74  }
75 
77  public: static math::Quaternion ConvQuat(const Eigen::Quaterniond &_quat)
78  {
79  return math::Quaternion(_quat.w(), _quat.x(), _quat.y(), _quat.z());
80  }
81 
83  public: static Eigen::Isometry3d ConvPose(const math::Pose &_pose)
84  {
85  // Below line doesn't work with 'libeigen3-dev is 3.0.5-1'
86  // return Eigen::Translation3d(ConvVec3(_pose.pos)) *
87  // ConvQuat(_pose.rot);
88 
89  Eigen::Isometry3d res;
90 
91  res.translation() = ConvVec3(_pose.pos);
92  res.linear() = Eigen::Matrix3d(ConvQuat(_pose.rot));
93 
94  return res;
95  }
96 
98  public: static math::Pose ConvPose(const Eigen::Isometry3d &_T)
99  {
100  math::Pose pose;
101  pose.pos = ConvVec3(_T.translation());
102  pose.rot = ConvQuat(Eigen::Quaterniond(_T.linear()));
103  return pose;
104  }
105  };
106  }
107 }
108 
109 #endif
static math::Vector3 ConvVec3(const Eigen::Vector3d &_vec3)
Definition: DARTTypes.hh:65
double z
z value of the quaternion
Definition: Quaternion.hh:386
#define GZ_PHYSICS_VISIBLE
Definition: system.hh:318
Encapsulates a position and rotation in three space.
Definition: Pose.hh:37
The Vector3 class represents the generic vector containing 3 elements.
Definition: Vector3.hh:39
boost::shared_ptr< DARTPhysics > DARTPhysicsPtr
Definition: DARTTypes.hh:40
DART surface parameters.
Definition: DARTSurfaceParams.hh:39
double x
X location.
Definition: Vector3.hh:311
static Eigen::Quaterniond ConvQuat(const math::Quaternion &_quat)
Definition: DARTTypes.hh:71
static math::Pose ConvPose(const Eigen::Isometry3d &_T)
Definition: DARTTypes.hh:98
double z
Z location.
Definition: Vector3.hh:317
static math::Quaternion ConvQuat(const Eigen::Quaterniond &_quat)
Definition: DARTTypes.hh:77
double w
w value of the quaternion
Definition: Quaternion.hh:377
boost::shared_ptr< DARTModel > DARTModelPtr
Definition: DARTTypes.hh:43
boost::shared_ptr< DARTLink > DARTLinkPtr
Definition: DARTTypes.hh:44
Vector3 pos
The position.
Definition: Pose.hh:252
A quaternion class.
Definition: Quaternion.hh:42
Quaternion rot
The rotation.
Definition: Pose.hh:255
double y
y value of the quaternion
Definition: Quaternion.hh:383
static Eigen::Isometry3d ConvPose(const math::Pose &_pose)
Definition: DARTTypes.hh:83
double x
x value of the quaternion
Definition: Quaternion.hh:380
static Eigen::Vector3d ConvVec3(const math::Vector3 &_vec3)
Definition: DARTTypes.hh:59
boost::shared_ptr< DARTCollision > DARTCollisionPtr
Definition: DARTTypes.hh:46
boost::shared_ptr< DARTJoint > DARTJointPtr
Definition: DARTTypes.hh:45
boost::shared_ptr< DARTSurfaceParams > DARTSurfaceParamsPtr
Definition: DARTTypes.hh:48
A set of functions for converting between the math types used by gazebo and dart. ...
Definition: DARTTypes.hh:56
double y
Y location.
Definition: Vector3.hh:314
boost::shared_ptr< DARTRayShape > DARTRayShapePtr
Definition: DARTTypes.hh:47