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 / 12:36
连播
清屏
智能
倍速
点赞14
00:00 / 02:22
连播
清屏
智能
倍速
点赞671
ROS 激光雷达节点Python如何编写? 第一步。在终端里进入 catkin 工作空间,创建一个软件包,包名叫做 lidar_pkg。注意依赖项里多了一个 sensor_msgs,是包含了雷达消息格式的软件包。回车,这就创建好了。为了让这个新建的软件包能够进入 ROS 的包列表,还需要对其进行编译。回退上一级目录,catkin_make 编译。好,这就编译完成了。 来到 VSCode,第二步,在 lidar_pkg 里新建一个目录,名字叫 scripts,在目录中新建一个节点文件,名字叫 lidar_node.py。在这个文件里编写代码,第一行是 Shebang,如果是 Ubuntu 18.04 及之前的版本,选择 python 解释器。而这里是 Ubuntu 20.04,所以选择python3的解释器。第二行,指定运行环境的编码为utf-8,让中文字符能正常显示。 接下来,引入大管家 rospy,然后是激光雷达的消息格式。好,开始编写 main主函数。先初始化节点。接着是第三步,让 ROS 大管家 rospy 帮忙订阅话题 /scan,回调函数设为 LidarCallback。调用 spin() 让节点保持运行别退出,到这里主函数的任务就完成了,我们来看看回调函数。第四步,构建回调函数LidarCallback,需要放在 main 主函数的前面。参数是接收到的激光雷达消息包 msg。这个 msg 的 ranges 数组里存储了 360 个测距值,哪一个是机器人前方的测距值呢。 前面我们分析了消息包的参数,ranges 数组的排列顺序是从起始角度到终止角度,每旋转一度得到一个测距值。所以ranges数组的下标和测距方向应该是这样的对应关系。机器人正前方正好位于数组顺序的正中间,对应下标为 180 的测距值。#python #ROS #激光雷达 #机器人 #机器人工匠阿杰
00:00 / 01:55
连播
清屏
智能
倍速
点赞19
00:00 / 05:13
连播
清屏
智能
倍速
点赞563
00:00 / 01:44
连播
清屏
智能
倍速
点赞1590
00:00 / 20:31
连播
清屏
智能
倍速
点赞154
00:00 / 12:25
连播
清屏
智能
倍速
点赞388
00:00 / 02:23
连播
清屏
智能
倍速
点赞81
00:00 / 11:38
连播
清屏
智能
倍速
点赞6239
00:00 / 13:48
连播
清屏
智能
倍速
点赞183
Python构建ROS发布地图节点 咱们开始第一步。在终端里,创建软件包 map_pkg。依赖项里加上 nav_msgs。这就创建好了。然后 catkin_make 编译一下,让软件包进入 ROS 的包列表。 来到 VSCode,打开 map_pkg,为其新建一个文件夹,名字叫 scripts。在这个文件夹里创建节点代码文件。map_pub_node.py。 开始编写代码,第一行是 Shebang,如果是 Ubuntu 18.04 及之前的版本,选择 python 解释器。而这里是 Ubuntu 20.04,所以选择 python3 的解释器。第二行,指定运行环境的编码为 utf-8,让中文字符能正常显示。先引入 rospy 和 地图消息类型。然后是 main 主函数。初始化节点。发布话题 /map。消息包发送频率设置为 1 Hz。使用 while 循环,不停发送消息包。构建地图消息包 msg 。然后开始消息包的赋值。先是 header,坐标系 ID 设置为 map。时间戳设置为当前时间。然后是地图描述信息。地图原点的 x y 偏移量都设置为 0。分辨率是 1.0 表示栅格地图的单元格边长为 1 米。地图的宽度为 4 个单元格。高度为 2 个单元格。 接下来是地图数据的赋值,先调整数组大小。数组初始值为 0,长度为 宽度 × 高度。接下来是栅格赋值过程。 将赋值好的消息包发送出去。最后是发送频率的控制。好,节点代码完成了,Ctrl + S 保存。#Python #ROS #机器人编程 #robot #机器人工匠阿杰
00:00 / 01:30
连播
清屏
智能
倍速
点赞45
00:00 / 03:46
连播
清屏
智能
倍速
点赞33
00:00 / 03:45
连播
清屏
智能
倍速
点赞578