Program Listing for File type_conversions.hpp
↰ Return to documentation for file (include/roboplan_ros_cpp/type_conversions.hpp)
#pragma once
#include <Eigen/Dense>
#include <geometry_msgs/msg/pose.hpp>
#include <geometry_msgs/msg/transform_stamped.hpp>
#include <pinocchio/spatial/se3.hpp>
#include <roboplan/core/scene.hpp>
#include <roboplan/core/types.hpp>
#include <sensor_msgs/msg/joint_state.hpp>
#include <tl/expected.hpp>
#include <trajectory_msgs/msg/joint_trajectory.hpp>
#include <trajectory_msgs/msg/joint_trajectory_point.hpp>
namespace roboplan_ros_cpp {
struct JointStateConverterMap {
struct JointMapping {
std::string joint_name;
size_t ros_index;
size_t q_start;
size_t v_start;
roboplan::JointType type;
};
std::vector<JointMapping> mappings;
size_t nq;
size_t nv;
};
tl::expected<JointStateConverterMap, std::string>
buildConversionMap(const roboplan::Scene& scene, const sensor_msgs::msg::JointState& joint_state);
inline builtin_interfaces::msg::Duration toDuration(const double time_sec) {
builtin_interfaces::msg::Duration duration;
duration.sec = static_cast<int32_t>(time_sec);
duration.nanosec = static_cast<uint32_t>((time_sec - duration.sec) * 1e9);
return duration;
}
inline double fromDuration(const builtin_interfaces::msg::Duration& duration) {
return duration.sec + duration.nanosec * 1e-9;
}
tl::expected<sensor_msgs::msg::JointState, std::string>
toJointState(const roboplan::JointConfiguration& config, const roboplan::Scene& scene);
tl::expected<roboplan::JointConfiguration, std::string>
fromJointState(const sensor_msgs::msg::JointState& joint_state, const roboplan::Scene& scene,
const JointStateConverterMap& joint_conversion_map);
trajectory_msgs::msg::JointTrajectory
toJointTrajectory(const roboplan::JointTrajectory& roboplan_trajectory);
roboplan::JointTrajectory
fromJointTrajectory(const trajectory_msgs::msg::JointTrajectory& ros_trajectory);
geometry_msgs::msg::TransformStamped
toTransformStamped(const roboplan::CartesianConfiguration& cartesian_configuration);
roboplan::CartesianConfiguration
fromTransformStamped(const geometry_msgs::msg::TransformStamped& transform);
Eigen::Matrix4d poseToSE3(const geometry_msgs::msg::Pose& pose);
geometry_msgs::msg::Pose se3ToPose(const Eigen::Matrix4d& transform);
} // namespace roboplan_ros_cpp