依旧是参照这位大神的代码:
[https://blog.csdn.net/alsj123456/article/details/109411413?spm=1001.2014.3001.5502]
对应思岚S2激光雷达4-rplidar_ros-master修改保存csv格式数据里面的步骤,其余都不变,只改client.cpp里面的代码:
#include "ros/ros.h"
#include "sensor_msgs/LaserScan.h"
/**/#include "fstream"
/**/#include "string"
/**/#include <stdio.h>
/**/#include <time.h>
/**/#include <unistd.h>
#define RAD2DEG(x) ((x)*180./M_PI)
/**/using namespace std;
void scanCallback(const sensor_msgs::LaserScan::ConstPtr& scan)
{
int count = scan->scan_time / scan->time_increment;
ROS_INFO("I heard a laser scan %s[%d]:", scan->header.frame_id.c_str(), count);
ROS_INFO("angle_range, %f, %f", RAD2DEG(scan->angle_min), RAD2DEG(scan->angle_max));
/**/time_t timep;
/**/struct tm*p;
/**/char name[256]={0};
/**/time(&timep);
/**/p = localtime(&timep);
/**/sprintf(name, "%d.%d.%d %d:%02d:%02d.csv",1900+p->tm_year,1+p->tm_mon,p->tm_mday,p->tm_hour,p->tm_min,p->tm_sec);
/**/ofstream oFile;
/**/oFile.open(name,ios::out|ios::trunc);
for(int i = 0; i < count; i++) {
float degree = RAD2DEG(scan->angle_min + scan->angle_increment * i);
ROS_INFO(": [%f, %f]", degree, scan->ranges[i]);
/**/oFile<< degree <<","<< scan->ranges[i] <<endl;
}
oFile.close();
}
int main(int argc, char **argv)
{
ros::init(argc, argv, "rplidar_node_client");
ros::NodeHandle n;
ros::Subscriber sub = n.subscribe<sensor_msgs::LaserScan>("/scan", 1000, scanCallback);
ros::spin();
return 0;
}
————————————————
版权声明:本文为CSDN博主「子佩_zxt」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/alsj123456/article/details/109411413
我这里client_1.cpp是思岚S2激光雷达4里面的代码
client_yuanshi.cpp是官方给的原始代码
client.cpp是按照上面修改的代码
重新编译之后主文件夹里面多了三个文件:
2022.6.18 17:12:46.csv
2022.6.18 17:12:47.csv
2022.6.18 17:12:48.csv