思岚S2激光雷达4-rplidar_ros-master修改保存csv格式数据

主要是参考这篇博文:
https://blog.csdn.net/alsj123456/article/details/109408165?spm=1001.2014.3001.5502
1.路径:主文件夹/catkin_ws/src/rplidar_ros-master/src
找到client.cpp
(下图为修改过的,没修改之前里面只有两个文件:client.cpp和node.cpp)
在这里插入图片描述
2.按照上方那个链接修改client.cpp里面的代码:
(下面代码来源于https://blog.csdn.net/alsj123456/article/details/109408165?spm=1001.2014.3001.5502
(1)未修改之前:

#include "ros/ros.h"
#include "sensor_msgs/LaserScan.h"
#define RAD2DEG(x) ((x)*180./M_PI)

void scanCallback(const sensor_msgs::LaserScan::ConstPtr& scan)
{
    int count = scan->scan_time / scan->time_increment;//一圈359个点
    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));//输出信息
    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]);//输出角度和距离数据
    }
}

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;
}

(2)修改之后

#include "ros/ros.h"
#include "sensor_msgs/LaserScan.h"

#include "fstream"  /**/
#include "string"  /**/

#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));

    ofstream oFile;  /**/
    oFile.open("leidadate.csv",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;
}

3.保存之后重新编译工作空间
1)回到工作空间catkin_ws中,右键选择在终端打开
在这里插入图片描述

(2)打开后输入catkin_make,然后回车
在这里插入图片描述
4.将雷达连接上电脑
5.设备设置与执行测试
(1)Ctrl+Alt+T打开终端,输入以下指令然后回车设置rplidar设备的权限。

KERNEL=="ttyUSB*", MODE="0666"

(2)输入以下指令然后回车检查rplidar串口的权限。

ls -l /dev |grep ttyUSB

(3)输入以下指令添加写入权限:(我这里是/dev/ttyUSB0)

sudo chmod 666 /dev/ttyUSB0

回车后输入密码,再回车
在这里插入图片描述
6.输入以下指令然后回车启动rplidar节点并运行rplidar客户端进程以打印原始扫描结果。

roslaunch rplidar_ros rplidar_s2.launch

( 另附其它型号的雷达指令:

roslaunch rplidar_ros rplidar.launch (for RPLIDAR A1/A2)

roslaunch rplidar_ros rplidar_a3.launch (for RPLIDAR A3)

roslaunch rplidar_ros rplidar_s1.launch (for RPLIDAR S1)

roslaunch rplidar_ros rplidar_s2.launch (for RPLIDAR S2)

在这里插入图片描述

Ctrl+Alt+T打开另一个终端,在里面输入以下指令(太快了没有截到,下图是效果,注意不要关掉上面那句指令):

rosrun rplidar_ros rplidarNodeClient

在这里插入图片描述
Ctrl+C可以结束
7.在主文件夹里面找到leidadate.csv
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值