ROS学习记录:在ROS中用C++实现获取激光雷达的数据

发布时间:2024年01月03日

一、打开一个终端,输入cd ~/catkin_ws1,进入工作空间

在这里插入图片描述

二、输入source ./devel/setup.bash,将ROS工作空间的环境设置(setup)添加到当前终端会话中

在这里插入图片描述

三、输入roslaunch wpr_simulation wpb_simple.launch打开机器人仿真环境

在这里插入图片描述

四、仿真环境打开成功

在这里插入图片描述

五、再打开另一个终端,输入source ./devel/setup.bash

在这里插入图片描述

六、激光雷达的数据获取,在wpr_simulation中有一个示例程序,在终端中输入(这里我清屏了一下所以前面source看不到了)rosrun wpr_simulation demo_lidar_data

在这里插入图片描述

七、可以看到,激光雷达检测到机器人前方的障碍物为2.6米左右,ok,本文目的就是通过自己实现达到跟这个例子程序一样的效果

在这里插入图片描述

八、在机器人的ROS系统中,激光雷达通常会有一个对应的节点,这个节点通常由雷达的厂商提供

在这里插入图片描述

九、我们只需要简单的配置一下端口参数,就能和激光雷达的电路系统建立连接,雷达的测距数值,就从电路系统传递到雷达节点

在这里插入图片描述

十、雷达节点会把测距数值封装成一个消息包,发布在一个Topic话题中

在这里插入图片描述

十一、我们只需订阅这个话题,就能获取激光雷达的数据了

在这里插入图片描述

十二、这个消息包的格式就是LaserScan格式,在这篇笔记中有详细介绍ROS系统中激光雷达消息包的数据格式

在这里插入图片描述

十三、发布消息包的话题名称是约定俗成的叫/scan

在这里插入图片描述

十四、获取激光雷达数据的实现思路

在这里插入图片描述

十五、输入cd ~/catkin_ws1/src进入工作空间下的src目录

在这里插入图片描述

十六、输入catkin_create_pkg lidar_pkg roscpp rospy sensor_msgs创建一个软件包,包名叫做lidar_pkg,依赖项中的sensor_msgs是包含了雷达消息格式的的软件包

在这里插入图片描述

十七、输入code .打开VScode

在这里插入图片描述

十八、VScode打开成功

在这里插入图片描述

十九、在lidar_pkg的src文件夹下新建文件

在这里插入图片描述

二十、名字叫做lidar_node.cpp

在这里插入图片描述

二十一、在lidar_node.cpp文件总写入如下代码

#include <ros/ros.h>  //引入ROS系统头文件
#include <sensor_msgs/LaserScan.h>    //引入雷达消息格式头文件

void LidarCallback(const sensor_msgs::LaserScan msg)
{
    float fMidDist = msg.ranges[180];
    ROS_INFO("前方测距 ranges[180] = %f 米", fMidDist);
}


int main(int argc, char  *argv[])
{
    /* code */
    setlocale(LC_ALL,"");//设置中文编码
    ros::init(argc,argv,"lidar_node");  //初始化节点

    ros::NodeHandle n;
    ros::Subscriber lidar_sub = n.subscribe("/scan",10,&LidarCallback);

    ros::spin();
    return 0;
}

二十二、打开CMakeLists.txt设置编译规则

在这里插入图片描述

二十三、在CMakeLists.txt文件末尾加入如下代码

在这里插入图片描述

 add_executable(lidar_node src/lidar_node.cpp)
 target_link_libraries(lidar_node
   ${catkin_LIBRARIES}
 )

二十四、按Shift+Ctrl+B进行编译,选择catkin_make:build

在这里插入图片描述

二十五、编译成功

在这里插入图片描述

二十六、打开一个终端,输入cd ~/catkin_ws1进入工作空间

在这里插入图片描述

二十七、输入source ./devel/setup.bash

在这里插入图片描述

二十八、输入roslaunch wpr_simulation wpb_simple.launch,打开机器人仿真环境

在这里插入图片描述

二十九、机器人仿真环境打开成功

在这里插入图片描述

三十、再打开一个终端,输入source ./devel/setup.bash

在这里插入图片描述

三十一、输入rosrun lidar_pkg lidar_node启动刚才编写的lidar_node节点,可以看到机器人前方测距值为2.6米左右,

在这里插入图片描述

三十二、点击移动图标,再点击书柜,再点击红色坐标轴移动书柜

在这里插入图片描述

三十三、发现测距值发生了改变,可见这个测距值就是机器人正前方障碍物的距离

在这里插入图片描述

文章来源:https://blog.csdn.net/qq_52251819/article/details/135328352
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。