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
HectorMapping运行launch文件及RViz配置 在终端程序里进入catkin工作空间,执行catkin_make进行编译。编译成功后,我们来运行一下刚才编写的launch文件。roslaunch slam_pkg hector.launch。看,这个launch文件的执行效果和上个实验一样。现在这个RViz窗口里什么也没有。还记得之前的RViz实验里,可以将RViz的显示设置保存成文件,再运行它的时候可以进行加载。省去了再一步步添加数据类型的操作。这次我们也准备这么干。先把需要显示的传感器数据类型,添加到RViz中。好了,配置好之后,我们将这个配置保存成文件。点击File菜单,选择Save Config As。将配置文件保存到我们新建的slam_pkg里。为了保持slam_pkg的结构清晰,我们在里面单独创建一个rviz文件夹,用来保存RViz配置文件。这个要保存的配置文件名,就设为slam.rviz。点击Save保存。 好了,我们来试试这个配置文件好不好用。先关闭RViz窗口。这时候仿真程序还在运行,按理说,我们用刚才保存的配置文件打开RViz,就能直接看到建图效果。好,在终端里新建一个窗口。执行rosrun rviz rviz,注意还没完,我们可以在命令行里直接加载RViz的配置文件。继续输入参数-d,空格,然后接上刚才保存的,slam.rviz文件的完整路径。回车。看,跟刚才我们关闭前的RViz窗口配置,一模一样。好,下面我们把这个配置文件,写到launch文件里。#ROS #机器人编程 #机器人 #HectorMapping #机器人工匠阿杰
00:00 / 01:28
连播
清屏
智能
倍速
点赞6
00:00 / 02:12
连播
清屏
智能
倍速
点赞2
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 / 00:58
连播
清屏
智能
倍速
点赞36
00:00 / 00:27
连播
清屏
智能
倍速
点赞1930
00:00 / 01:45
连播
清屏
智能
倍速
点赞1043
00:00 / 27:49
连播
清屏
智能
倍速
点赞28
00:00 / 01:19
连播
清屏
智能
倍速
点赞1
00:00 / 03:19
连播
清屏
智能
倍速
点赞NaN
00:00 / 00:38
连播
清屏
智能
倍速
点赞75
00:00 / 01:25
连播
清屏
智能
倍速
点赞13
00:00 / 02:51
连播
清屏
智能
倍速
点赞26
00:00 / 04:56
连播
清屏
智能
倍速
点赞3926