紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
ros2将多个topic的消息写进文件
-
通过建立多个监听者将topic的消息订阅到想把他们写进文件,但是ros2的订阅函数都是静态的,我应该怎么才能将这些不同的消息整合到一起处理呢?
#include <memory> #include <iostream> #include <fstream> #include "rclcpp/rclcpp.hpp" #include "auto_move_msgs/msg/car_message.hpp" #include "auto_move_msgs/msg/imu_message.hpp" #include "auto_move_msgs/msg/save_message.hpp" using std::placeholders::_1; //struct save_message{ // float speed; // float torque; // float acceleration; //}; class DataCollector : public rclcpp::Node { public: auto_move_msgs::msg::SaveMessage saveMessage; DataCollector() : Node("data_collector_subscriber") { car_subscription_ = this->create_subscription<auto_move_msgs::msg::CarMessage>( "car_message", 10, std::bind(&DataCollector::car_message_callback, this, _1)); imu_subscription_ = this->create_subscription<auto_move_msgs::msg::ImuMessage>( "imu_message", 10, std::bind(&DataCollector::imu_message_callback, this, _1)); //RCLCPP_INFO(this->get_logger(),"I will write data to file"); //ofstream } private: void car_message_callback(const auto_move_msgs::msg::CarMessage::SharedPtr car_msg) const { RCLCPP_INFO(this->get_logger(), "I heard car message: '%f' , '%f'", car_msg->speed,car_msg->torque); saveMessage.speed = car_msg->speed; saveMessage.torque = car_msg->torque; } void imu_message_callback(const auto_move_msgs::msg::ImuMessage::SharedPtr imu_msg) const { RCLCPP_INFO(this->get_logger(), "I heard imu message: '%f'", imu_msg->acceleration); saveMessage.acceleration = imu_msg->acceleration; } rclcpp::Subscription<auto_move_msgs::msg::CarMessage>::SharedPtr car_subscription_; rclcpp::Subscription<auto_move_msgs::msg::ImuMessage>::SharedPtr imu_subscription_; }; int main(int argc, char * argv[]) { rclcpp::init(argc, argv); rclcpp::spin(std::make_shared<DataCollector>()); rclcpp::shutdown(); return 0; }
上面是我的代码我想将多个topic保存进我自定义的消息里然后写进文件,大家有什么好的建议吗
-
数据处理问题已经解决实际上是一个cpp语法问题
auto_move_msgs::msg::SaveMessage saveData; auto_move_msgs::msg::SaveMessage & saveMessage = saveData;
用一个引用就可以修改数据本身了
写进文件的操作正在解决,大家有什么好的建议可以给我留言