00:00 / 02:21
连播
清屏
智能
倍速
点赞17
ROS 激光雷达节点如何编写? 第一步。在终端里进入 catkin 工作空间,创建一个软件包,包名叫做 lidar_pkg。注意依赖项里多了一个 sensor_msgs,是包含了雷达消息格式的软件包。回车,这就创建好了。来到 VSCode,第二步,在 lidar_pkg 的 src 文件夹下,新建一个节点源码文件,名字叫 lidar_node.cpp。在这个文件里编写代码,先引入 ROS 系统的头文件,和雷达消息格式的头文件。接下来是 main(),去掉 const。设置中文编码然后初始化节点。第三步,召唤 ROS 大管家 NodeHandle,让他帮忙订阅话题 /scan,回调函数设为 LidarCallback()。调用 spin() 让节点保持运行别退出,到这里主函数的任务就完成了,我们来看看回调函数。第四步,构建回调函数LidarCallback(),需要放在 main() 的前面。参数是接收到的激光雷达消息包 msg。这个 msg 的 ranges 数组里存储了360个测距值,哪一个是机器人前方的测距值呢。 前面我们分析了消息包的参数,ranges 数组的排列顺序是从起始角度到终止角度,每旋转一度得到一个测距值。所以 ranges 数组的下标和测距方向应该是这样的对应关系。机器人正前方正好位于数组顺序的正中间,对应下标为 180 的测距值。 回到程序,定义一个变量 fMidDist ,获取 ranges 数组中 下标为 180 的测距值。最后一步,调用 ROS_INFO() 将这个测距值显示出来。好了,所有代码完成,Ctrl + S 保存。C++节点还需要编译才能运行,下面为这个节点程序设置编译规则。 打开 lidar_pkg 的 CMakeList 文件,找到 Build 章节,将里边的 add_executeable 和 target_link_libraries 两条规则复制到文件末尾。将规则中的节点名都改为 lidar_node。Ctrl + S 保存。打开终端,进入 caktin 工作目录,catkin_make 编译。这就编译完成了,我们来运行这个节点看看效果。#ROS #激光雷达 #机器人 #机器人编程 #机器人工匠阿杰
00:00 / 01:41
连播
清屏
智能
倍速
点赞32
00:00 / 02:17
连播
清屏
智能
倍速
点赞23
00:00 / 06:49
连播
清屏
智能
倍速
点赞2
00:00 / 02:25
连播
清屏
智能
倍速
点赞26
00:00 / 01:38
连播
清屏
智能
倍速
点赞6432