Tetrapod Project
eigen_geometry_msgs.cpp
Go to the documentation of this file.
2 
3 geometry_msgs::PoseArray pose_array_from_eigen_matr(Eigen::MatrixXd pos)
4 {
5  int n_steps = pos.rows();
6 
7  if (pos.cols() == 2)
8  {
9  pos.conservativeResize(Eigen::NoChange, 3);
10  pos.col(2) = Eigen::MatrixXd::Zero(n_steps, 1);
11  }
12 
13  geometry_msgs::PoseArray res;
14 
15  res.poses = std::vector<geometry_msgs::Pose>(n_steps);
16 
17  for (int i = 0; i < n_steps; ++i)
18  {
19  res.poses[i].position.x = pos(i, 0);
20  res.poses[i].position.y = pos(i, 1);
21  res.poses[i].position.z = pos(i, 2);
22  }
23 
24  return res;
25 }
26 
27 Eigen::MatrixX3d eigen_matr_from_pose_array(geometry_msgs::PoseArray pose_array)
28 {
29  int n_steps = pose_array.poses.size();
30 
31  Eigen::MatrixX3d res;
32 
33  std::vector<geometry_msgs::Pose> &poses = pose_array.poses;
34 
35  res.conservativeResize(n_steps, Eigen::NoChange);
36 
37  for (int i = 0; i < n_steps; ++i)
38  {
39  res.row(i) = Eigen::Vector3d(poses[i].position.x, poses[i].position.y, poses[i].position.z).transpose();
40  }
41 
42  return res;
43 }
geometry_msgs::PoseArray pose_array_from_eigen_matr(Eigen::MatrixXd pos)
Eigen::MatrixX3d eigen_matr_from_pose_array(geometry_msgs::PoseArray pose_array)
Eigen::Vector3d Vector3d
Definition: kinematics.h:49