18#ifndef __FPSDK_ROS2_ROS1_HPP__
19#define __FPSDK_ROS2_ROS1_HPP__
25#include <fpsdk_ros2/ext/msgs.hpp>
52template <
typename Ros1MsgT,
typename Ros2MsgT>
65inline void Ros1ToRos2(
const boost::array<double, 9>&
ros1, std::array<double, 9>&
ros2)
67 for (std::size_t ix = 0; ix < 9; ix++) {
72inline void Ros1ToRos2(
const boost::array<double, 36>& ros1, std::array<double, 36>& ros2)
74 for (std::size_t ix = 0; ix < 36; ix++) {
81inline void Ros1ToRos2(
const std_msgs::Header& ros1, std_msgs::msg::Header& ros2)
83 ros2.frame_id = ros1.frame_id;
89inline void Ros1ToRos2(
const geometry_msgs::Quaternion& ros1, geometry_msgs::msg::Quaternion& ros2)
97inline void Ros1ToRos2(
const geometry_msgs::Vector3& ros1, geometry_msgs::msg::Vector3& ros2)
104inline void Ros1ToRos2(
const geometry_msgs::Point& ros1, geometry_msgs::msg::Point& ros2)
111inline void Ros1ToRos2(
const geometry_msgs::Pose& ros1, geometry_msgs::msg::Pose& ros2)
114 Ros1ToRos2(ros1.orientation, ros2.orientation);
117inline void Ros1ToRos2(
const geometry_msgs::Twist& ros1, geometry_msgs::msg::Twist& ros2)
123inline void Ros1ToRos2(
const geometry_msgs::PoseWithCovariance& ros1, geometry_msgs::msg::PoseWithCovariance& ros2)
129inline void Ros1ToRos2(
const geometry_msgs::TwistWithCovariance& ros1, geometry_msgs::msg::TwistWithCovariance& ros2)
135inline void Ros1ToRos2(
const geometry_msgs::Transform& ros1, geometry_msgs::msg::Transform& ros2)
137 Ros1ToRos2(ros1.translation, ros2.translation);
141inline void Ros1ToRos2(
const geometry_msgs::TransformStamped& ros1, geometry_msgs::msg::TransformStamped& ros2)
144 ros2.child_frame_id = ros1.child_frame_id;
150inline void Ros1ToRos2(
const sensor_msgs::Imu& ros1, sensor_msgs::msg::Imu& ros2)
153 Ros1ToRos2(ros1.orientation, ros2.orientation);
154 Ros1ToRos2(ros1.orientation_covariance, ros2.orientation_covariance);
155 Ros1ToRos2(ros1.angular_velocity, ros2.angular_velocity);
156 Ros1ToRos2(ros1.angular_velocity_covariance, ros2.angular_velocity_covariance);
157 Ros1ToRos2(ros1.linear_acceleration, ros2.linear_acceleration);
158 Ros1ToRos2(ros1.linear_acceleration_covariance, ros2.linear_acceleration_covariance);
161inline void Ros1ToRos2(
const sensor_msgs::Temperature& ros1, sensor_msgs::msg::Temperature& ros2)
164 ros2.temperature = ros1.temperature;
165 ros2.variance = ros1.variance;
168inline void Ros1ToRos2(
const sensor_msgs::Image& ros1, sensor_msgs::msg::Image& ros2)
171 ros2.height = ros1.height;
172 ros2.width = ros1.width;
173 ros2.encoding = ros1.encoding;
174 ros2.step = ros1.step;
175 ros2.data = ros1.data;
180inline void Ros1ToRos2(
const nav_msgs::Odometry& ros1, nav_msgs::msg::Odometry& ros2)
183 ros2.child_frame_id = ros1.child_frame_id;
190inline void Ros1ToRos2(
const tf2_msgs::TFMessage& ros1, tf2_msgs::msg::TFMessage& ros2)
192 for (
auto& tf_ros1 : ros1.transforms) {
193 geometry_msgs::msg::TransformStamped tf_ros2;
195 ros2.transforms.push_back(std::move(tf_ros2));
Fixposition SDK: ROS1 types and utils.
ROS2 types conversion from ROS1.
void Ros1ToRos2(Ros1MsgT &ros1, Ros2MsgT &ros2)
Convert ROS1 message to ROS2 message.
Fixposition SDK: ROS2 library.