ros - roslaunch 存储文件创建/存储错误
问题描述
在执行 rosrun 时,正在生成存储文件“storage.csv”并存储数据,但在执行 roslaunch 时,甚至没有生成文件“storage.csv”。每当我进行 roslaunch 时,两个节点都在运行,但在订阅者中,我试图打开的 .csv 文件没有打开。但是,每当我使用talker 和 listener 对同一个节点进行 rosrun 时,我的 .csv 文件就会生成并保存。请让我知道在 roslaunch 期间是否有其他方法可以存储数据,因为我必须在 raspi 4 中使用它,甚至我想知道为什么我无法使用 roslaunch 命令打开 .csv 文件是他们的一些问题代码或其他
说话者
//header
#include "ros/ros.h"
#include "std_msgs/String.h"
#include <sstream>
//main
int main(int argc, char **argv)
{
ros::init(argc, argv, "talker_node");//talker node
ros::NodeHandle n;
ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1);//publisher
ros::Rate loop_rate(10);//loop rate
int count = 0;
while (ros::ok())
{
std_msgs::String msg;
std::stringstream ss;
ss << "hello world " << count; //output
msg.data = ss.str();
ROS_INFO("%s", msg.data.c_str());
chatter_pub.publish(msg);//publish
ros::spinOnce();
loop_rate.sleep();
++count;
}
return 0;
}
// %EndTag(FULLTEXT)%
听众
//header
#include "ros/ros.h"
#include "std_msgs/String.h"
#include <sstream>
#include <fstream>
std::ofstream MyFile; // define object
//callback function
void storage_callback(const std_msgs::String::ConstPtr& msg)
{
MyFile.open("storage_csv.csv",std::ios::app);//file open
MyFile <<msg->data<<"\n";
ROS_INFO("I recieve: [%s]", msg->data.c_str());
MyFile.close();
}
//main
int main(int argc, char **argv)
{
ros::init(argc, argv, "listener_node"); // creating node
ros::NodeHandle n;
ROS_INFO("Storage code");
MyFile.open("storage_csv.csv");//,std::ios::app);
MyFile << "listner data."<<"\n";
MyFile.close();
ros::Subscriber sub = n.subscribe ("/chatter", 1, storage_callback);//subscriber
ros::spin();
return 0;
}
//%end text%
cmake更新
add_executable(talker1_executable src/talker.cpp)
target_link_libraries(talker1_executable ${catkin_LIBRARIES})
add_executable(listener1_executable src/listener.cpp)
target_link_libraries(listener1_executable ${catkin_LIBRARIES})
启动文件
<launch>
<node name="takler_node" pkg="storage" type="talker1_executable" output="screen"/>
<node name="listener_node" pkg="storage" type="listener1_executable" output="screen"/>
</launch>
解决方案
推荐阅读
- dask - 当计算比在 dask 分布式中传输更快时,如何复制数据?
- java - 二进制 XML 文件 - 膨胀类片段时出错
- django - django-treebeard物化路径节点的动态排序
- html - 如何向用户显示像这张图片这样的“消费信息”?
- javascript - 如何使用 jest 模拟导出具有类变量的类的模块
- html - 无法正确旋转文本
- xml - XSLT 在不同元素中设置来自另一个 XML 文件的属性值
- json - 在 ReactJs 表上显示和映射 JSON 对象
- sql - Taryn 用于 SQL 连接的方法
- hadoop - 从 Oracle 获取数据后如何验证 Hive 中丢失的记录