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 在 算法
每月106次下载
在 4 个包(直接使用2个)中使用
21KB
159 行
ros-nalgebra
为 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/Pose
的 Pose
,对于 geometry_msgs/Point
的 Point
)。
示例
在 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。
待办事项
处理依赖关系。