SlamEdge Conversions::fromMsg(const graph_slam_msgs::Edge &edge_msg) { Eigen::Isometry3d T; Eigen::MatrixXd I; Conversions::fromMsg(edge_msg.transformation, T, I); SlamEdge edge = SlamEdge(edge_msg.id, edge_msg.id_from, edge_msg.id_to, T, I, edge_msg.type, edge_msg.sensor_from, edge_msg.sensor_to, edge_msg.diff_time); edge.matching_score_ = edge_msg.matching_score; edge.displacement_from_ = fromMsg(edge_msg.displacement_from); edge.displacement_to_ = fromMsg(edge_msg.displacement_to); edge.error_ = edge_msg.error; edge.age_ = edge_msg.age; edge.valid_ = edge_msg.valid; return edge; }
TerrainModel::TerrainModel(const TerrainModelMsg& terrain_model) { point_cloud_with_normals.reset(new pcl::PointCloud<pcl::PointNormal>()); points_with_normals_kdtree.reset(new pcl::KdTreeFLANN<pcl::PointNormal>()); fromMsg(terrain_model); }
std::vector<SensorDataPtr> Conversions::fromMsg(const graph_slam_msgs::SensorDataArray &sensor_data_msg) { std::vector<SensorDataPtr> sensor_data_array; for (auto data : sensor_data_msg.data) { sensor_data_array.push_back(fromMsg(data)); } return sensor_data_array; }
void Conversions::fromMsg(const geometry_msgs::PoseWithCovariance &poseMsg, Eigen::Isometry3d &pose, Eigen::MatrixXd &covariance) { pose = fromMsg(poseMsg.pose); covariance.resize(6,6); for (int i = 0; i < 6; i++) { for (int j = 0; j < 6; j++) { covariance(i,j) = poseMsg.covariance[6*i + j]; } } }
bool service_callback(constraint_msgs::ConstraintsRank::Request& request, constraint_msgs::ConstraintsRank::Response& answer) { Analysis analyzer(request.constraints.size()); answer.rank = analyzer.rank(fromMsg(request.constraints), 0.0001, 1e-6); return true; }