资讯详情

summary3 实现SLAM和导航工具[python][AI]

本课程结束时,您将能够: 通过开发Python出版商订阅节点,控制机器人的闭环(基于里程计)。 解释基于里程计的运动控制方法的局限性,并确定其他可用于增强这一点的反馈信号。 解释发布到/扫描主题的数据,并使用现有数据ROS可视化工具。 使用现有的ROS工具实施SLAM并构建环境地图。 利用现有的ROS让机器人使用你生成的地图在环境中独立导航。 解释这些SLAM导航工具是如何实现的,需要什么信息才能让它们工作。

move_square.py

里程计对机器人导航非常重要,但它可能会随着时间的推移而漂移和积累误差,正如你在之前的练习中观察到的那样(虽然真实机器人更好!)幸运的是,我们的机器人上还有另一个传感器,它可以提供更丰富的环境信息,我们可以使用它来补充里程计信息,提高机器人的导航能力。

 [TERMINAL 1] $ roslaunch turtlebot3_gazebo turtlebot3_world.launch  [TERMINAL 2] $ roslaunch turtlebot3_bringup turtlebot3_remote.launch  [TERMINAL 3] $ rosrun rviz rviz -d `rospack find turtlebot3_description`/rviz/model.rviz  [TERMINAL 4] $ rostopic info /scan       Type: sensor_msgs/LaserScan       Publishers:       * /gazebo (http://localhost:########       Subscribers:       * /rviz_#### (http://localhost:########   [TERMINAL 4]: $ rosmsg info sensor_msgs/LaserScan       std_msgs/Header header        uint32 seq        time stamp        string frame_id      float32 angle_min      float32 angle_max      float32 angle_increment      float32 time_increment      float32 scan_time      float32 range_min      float32 range_max      float32[] ranges      float32[] intensities              

这是RViz,这是一个ROS允许我们实时可视化机器人测量数据的工具。由于位于机器人顶部的激光雷达传感器(如您在机器人概述部分发现的),散布在机器人周围的红点表示激光位移数据。这些数据使机器人能够看到周围的任何障碍物。激光雷达传感器在旋转过程中继续旋转,从附近物体反射回传感器。脉冲返回所需的时间可用于确定反射物体的距离。由于激光雷达传感器旋转并继续执行这一过程,可以生成完整的360环境°扫描。在这种情况下(因为我们在这里进行模拟),数据代表了机器人周围模拟环境中的物体,所以你应该注意到,红点产生的轮廓与Gazebo中模拟世界中的物体相似(或至少部分相似)。

说明/激光扫描(LiDAR)数据 /LaserScan新闻是标准化的ROS消息(来自sensor_msgs任何软件包)ROS从激光位移传感器用它来发布激光位移传感器(如TurtleBot3上激光雷达)获取的数据。 ranges是一个float32值数组(我们知道它是一个值数组,因为数据类型背后有[])。这是所有实际距离测量值的信息部分(以米为单位),包括激光雷达传感器获得的。

$ rostopic echo /scan/angle_min -n1 0.0 ---  $ rostopic echo /scan/angle_max -n1 6.28318977356 ---  $ rostopic echo /scan/angle_increment -n1 0.0175019223243 --- 

范围数组共360个值:机器人周围每1个值°(角度增量为0.一次距离测量0175弧度)。范围数组中的第一个值(范围[0])是最近对象在机器人前面的距离(即θ=0弧度或角度_min)。范围数组(范围[359])的最后一个值是359°(即θ=6.弧度,或角度_max)物体最近的距离。例如,如果我们想要它,如果我们想要它ranges数组中的第65个值,即:ranges[65]我们知道这将意味着离机器人前方65°(1.138弧度)(逆时针)最近物体的距离。 激光扫描信息还包括参数range_min和range_max,分别表示激光雷达传感器能检测到的最小距离和最大距离(以米为单位)。也可以用rostopic echo命令直接报告这些信息。 回顾以上rostopic echo通过考虑这些上限和下限,了解激光雷达传感器的局限性。 最后,再次使用rostopic echo命令显示激光扫描主题信息的范围。现在不要用-n1选项,这样你就可以在终端中实时看到数据的变化,但在每个消息后使用-c选项清除屏幕,使事情更清晰。您还可能需要最大化终端窗口,以便您可以看到数组的所有内容:对于360个值,数组相当大,但用方括号[]来解释它的开始和结束位置,并且应该有一个——来帮助您确认您正在查看整个内容。

综上所述,激光雷达传感器和机器人的里程计(尤其是机器人姿势)数据非常强大,可以对机器人环境得出一些非常有用的结论。这些数据的关键应用之一是同步定位和绘图SLAM。这是内置的ROS工具允许机器人在定位自己的同时建立其环境地图!现在,你会知道的ROS使用这个工具有多容易。

练习3:使用SLAM构建环境地图 通过在每个终端中输入Ctrl C关闭所有正在运行的ROS进程: The Gazebo processes in TERMINAL 1. The Bringup processes in TERMINAL 2. The RViz processes running in TERMINAL 3 我们现在将机器人发射到另一个新的模拟环境中,我们将创建一个使用SLAM的地图!

navigation.launch

 [TERMINAL 1] $ roscd week2_navigation [TERMINAL 1] $ mkdir launch 

标签: py2系列位移传感器py2

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台