#ros #nalgebra #message #robotics #convert #rosrust #geometry-msgs

ros-nalgebra

ROS 消息转换器,用于 rosrust 和 nalgebra

7 个版本

0.1.0 2022年10月25日
0.0.6 2022年1月24日
0.0.5 2021年3月5日
0.0.4 2021年2月1日
0.0.1 2020年9月15日

#573算法

Download history 42/week @ 2024-03-11 34/week @ 2024-03-18 75/week @ 2024-03-25 40/week @ 2024-04-01 43/week @ 2024-04-08 17/week @ 2024-04-15 16/week @ 2024-04-22 21/week @ 2024-04-29 23/week @ 2024-05-06 59/week @ 2024-05-13 41/week @ 2024-05-20 56/week @ 2024-05-27 20/week @ 2024-06-03 32/week @ 2024-06-10 27/week @ 2024-06-17 19/week @ 2024-06-24

每月106次下载
4 个包(直接使用2个)中使用

Apache-2.0

21KB
159

ros-nalgebra

Build Status crates.io docs

为 rosrust 生成将 geometry_msgs 转换为 nalgebra 结构体的代码。

先决条件 & 依赖

如何使用

简单使用:ros_nalgebra::rosmsg_include!()

在您的代码中使用 ros_nalgebra::rosmsg_include 替代 rosrust::rosmsg_include

use nalgebra as na;

mod msg {
    ros_nalgebra::rosmsg_include!(nav_msgs / Odometry);
}

fn main() {
    let mut odom_msg = msg::nav_msgs::Odometry::default();
    odom_msg.pose.pose.position.x = 1.0;
    odom_msg.pose.pose.position.y = -1.0;
    odom_msg.pose.pose.position.z = 2.0;
    odom_msg.pose.pose.orientation.x = 0.0;
    odom_msg.pose.pose.orientation.y = 0.0;
    odom_msg.pose.pose.orientation.z = 0.0;
    odom_msg.pose.pose.orientation.w = 1.0;

    // convert into nalgebra::Isometry<f64> by `from()`
    let pose = na::Isometry3::from(odom_msg.pose.pose);
    println!("{pose}");

    let mut pose2 = pose.clone();
    pose2.translation.vector.x = -5.0;

    // convert into ROS msg using `into()`
    let pose_msg: msg::geometry_msgs::Pose = pose2.into();
    println!("{pose_msg:?}");
}

ros_nalgebra::rosmsg_include!() 自动定义的消息

以下消息由 ros_nalgebra::rosmsg_include!() 自动包含。不要在您的代码中包含它们。

geometry_msgs/Point,
geometry_msgs/Pose,
geometry_msgs/Quaternion,
geometry_msgs/Transform,
geometry_msgs/Vector3,

其他使用:ros_nalgebra!()ros_nalgebra_msg!()

如果某些消息已被包含(例如在其他包中),则可以使用 ros_nalgebra_msg!()。参数是 geometry_msgs 的 Rust 命名空间(例如:msg)和消息类型(例如:对于 geometry_msgs/PosePose,对于 geometry_msgs/PointPoint)。

示例

some_other_crate 中,

mod msg {
    rosrust::rosmsg_include!(geometry_msgs/Point);
}

然后您可以在您的crate中使用ros_nalgebra::ros_nalgebra_msg!()

// generate conversion code only for `geometry_msgs/Point` which is defined in `some_other_crate::msg`.
ros_nalgebra::ros_nalgebra_msg!(some_other_crate::msg, Point);

支持的转换

请参阅lib.rs。

待办事项

处理依赖关系。

无运行时依赖