24 #define EIGEN_NO_STATIC_ASSERT
27 #include <VirtualRobot/Robot.h>
28 #include <VirtualRobot/LinkedCoordinate.h>
29 #include <VirtualRobot/LinkedCoordinate.h>
30 #include <VirtualRobot/VirtualRobot.h>
34 #include <Eigen/Geometry>
39 template class ::IceInternal::Handle<::armarx::Pose>;
40 template class ::IceInternal::Handle<::armarx::Vector2>;
41 template class ::IceInternal::Handle<::armarx::Vector3>;
42 template class ::IceInternal::Handle<::armarx::Quaternion>;
67 v << this->
x, this->y;
71 void Vector2::operator=(
const Eigen::Vector2f& vec)
77 std::string Vector2::output(
const Ice::Current&)
const
84 void Vector2::serialize(
const ObjectSerializerBasePtr& serializer, const ::Ice::Current&)
const
88 obj->setFloat(
"x",
x);
89 obj->setFloat(
"y", y);
92 void Vector2::deserialize(
const ObjectSerializerBasePtr& serializer, const ::Ice::Current&)
96 x = obj->getFloat(
"x");
97 y = obj->getFloat(
"y");
131 v << this->
x, this->y, this->z;
135 void Vector3::operator=(
const Eigen::Vector3f& vec)
142 std::string Vector3::output(
const Ice::Current&)
const
149 void Vector3::serialize(
const ObjectSerializerBasePtr& serializer, const ::Ice::Current&)
const
153 obj->setFloat(
"x",
x);
154 obj->setFloat(
"y", y);
155 obj->setFloat(
"z", z);
158 void Vector3::deserialize(
const ObjectSerializerBasePtr& serializer, const ::Ice::Current&
c)
162 x = obj->getFloat(
"x");
163 y = obj->getFloat(
"y");
164 z = obj->getFloat(
"z");
197 return toEigenQuaternion().toRotationMatrix();
202 return {this->qw, this->qx, this->qy, this->qz};
222 return Quaternion::slerp(alpha, this->
toEigen(), m);
231 result = q1.
slerp(alpha, q2);
235 std::string Quaternion::output(
const Ice::Current&
c)
const
242 void Quaternion::serialize(
const ObjectSerializerBasePtr& serializer, const ::Ice::Current&)
const
246 obj->setFloat(
"qx", qx);
247 obj->setFloat(
"qy", qy);
248 obj->setFloat(
"qz", qz);
249 obj->setFloat(
"qw", qw);
252 void Quaternion::deserialize(
const ObjectSerializerBasePtr& serializer, const ::Ice::Current&
c)
256 qx = obj->getFloat(
"qx");
257 qy = obj->getFloat(
"qy");
258 qz = obj->getFloat(
"qz");
259 qw = obj->getFloat(
"qw");
269 Pose::Pose(
const armarx::Vector3BasePtr pos,
const armarx::QuaternionBasePtr ori)
271 this->orientation =
new Quaternion(*QuaternionPtr::dynamicCast(ori));
272 this->position =
new Vector3(*Vector3Ptr::dynamicCast(pos));
279 this->position =
new Vector3();
289 orientation = QuaternionBasePtr::dynamicCast(
source.orientation->clone());
290 position = Vector3Ptr::dynamicCast(
source.position->clone());
297 this->position =
new Vector3(m);
304 this->position =
new Vector3(matrix);
313 m.block<3, 3>(0, 0) = c_orientation->toEigen();
314 m.block<3, 1>(0, 3) = c_position->toEigen();
326 void Pose::serialize(
const ObjectSerializerBasePtr& serializer, const ::Ice::Current&
c)
const
328 position->serialize(serializer,
c);
329 orientation->serialize(serializer,
c);
336 position->deserialize(obj);
337 orientation->deserialize(obj);
342 this->c_position = Vector3Ptr::dynamicCast(this->position);
343 this->c_orientation = QuaternionPtr::dynamicCast(this->orientation);
366 rotation =
fromIce(ice).toRotationMatrix();
377 auto cast = Vector3Ptr::dynamicCast(pose);
379 return cast->toEigen();
383 auto cast = QuaternionPtr::dynamicCast(pose);
385 return cast->toEigenQuaternion();
389 auto cast = PosePtr::dynamicCast(pose);
391 return cast->toEigen();
412 ice =
new Pose(pose);
433 return new Pose(pose);