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
连播
清屏
智能
倍速
点赞33
00:00 / 05:15
连播
清屏
智能
倍速
点赞22
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
连播
清屏
智能
倍速
点赞20
如何用Python编写节点获取IMU数据? 咱们现在开始第一步。在终端里创建软件包,包名为 imu_pkg,依赖项里加入了包含 IMU 消息格式的sensor_msgs。回车,这就创建好了。为了让这个新建的软件包能够进入 ROS 的包列表,还需要对其进行编译。回退上一级目录,catkin_make 编译。好,这就编译完成了。 然后是第二步 ,在 VSCode 中为刚才创建的 imu_pkg 添加一个子目录,目录名叫 scripts。然后再这个子目录中,创建一个节点文件,文件名为 imu_node.py。在这个文件里编写代码,第一行是 Shebang,如果是 Ubuntu 18.04 及之前的版本,选择 python 解释器。而这里是 Ubuntu 20.04,所以选择 python3 的解释器。第二行,指定运行环境的编码为 utf-8,让中文字符能正常显示。 接下来,导入大管家 rospy,然后是 IMU 的消息格式。因为实验中需要用到 TF 工具来将四元数转换成欧拉角,所以还需要导入一个四元数和欧拉角的转换模块。最后再导入数学模块,后面进行弧度和角度换算的时候,要用到里面的圆周率 pi 。好,下面开始编写 main 主函数,先是初始化节点。然后可以进行第三步,让大管家 rospy 帮忙订阅话题 /imu/data,回调函数为 imu_callback(),最后,调用 spin() 函数让节点程序维持运行别退出。主函数的部分到这就完成了。#ROS #python #机器人编程 #机器人工匠阿杰#抖音知识年终大赏
00:00 / 02:09
连播
清屏
智能
倍速
点赞24
00:00 / 01:16
连播
清屏
智能
倍速
点赞NaN
00:00 / 01:27
连播
清屏
智能
倍速
点赞13
00:00 / 00:59
连播
清屏
智能
倍速
点赞276
00:00 / 33:15
连播
清屏
智能
倍速
点赞14
00:00 / 01:17
连播
清屏
智能
倍速
点赞773