运行ROS2和Navigation2的价值100美元的机器人套件

2020-12-12 03:47:43

Hadabot是一款低成本的机器人套件,适用于学生,软件工程师,制造商以动手方式学习ROS2和机器人技术。我们的机器人套件易于构建,可扩展和可定制。 Hadabot软件堆栈由基于开源Web浏览器的编码环境组成,以使黑客体验无忧无虑。

在上一篇文章中,我们展示了运行Navigation2(aka Nav2)程序包的ROS 2 turtlesim。该练习需要使用tf2来管理机器人应用程序的所有各种坐标系。

在这篇文章中,我们将让Nav2将物理Hadabot Turtle差动驱动机器人定向到目标姿势-位置和方向,而不是turtlesim。该练习将把rviz,tf2,Nav2与我们过去有关Turtle机器人的里程表和运动学的文章结合起来。我们将介绍:

与所有Hadabot示例一样,您可以使用Hadabot堆栈基于浏览器的VSCode来编译和运行代码。

设置/更新交钥匙的Hadabot软件堆栈(它利用Docker容器来确保您的代码在本地计算机上安全有效地运行):

如果您不熟悉Hadabot,请按照以下步骤设置Docker,并启动并运行Hadabot软件堆栈(5至15分钟)。

否则,如果您是返回的Hadabot黑客,请按照以下步骤更新Hadabot软件堆栈(1-3分钟)。

启动特定于此帖子的基于浏览器的VSCode工作空间(此链接指向您的本地主机,因此一切都在本地系统上安全地运行)。

如果成功运行了该示例,您会注意到Turtle在“竞技场”的中间开始。 (即地图)。每个网格框代表1米的物理距离。红轴表示龟向前。由于ROS使用右手坐标系,正\(\ omega \)旋转会导致Turtle逆时针旋转。

对于视频示例,目标姿势是从Turtle的左边到1米的位置,其初始方位为90度。

请注意,Turtle并没有精确到其左端1米,也没有与初始姿势成90度角。这是由于2个原因,因为在现实世界中什么也没发生,也没有发生(这不再是Dorothy的模拟)-(1)Hadabot Turtle的速度传感器的误差会随着时间的推移而累积,从而导致里程表漂移。 2)Nav2目标检查器允许距特定最终目标的距离和方向都有公差。

Hadabot Turtle以弧度/秒为单位发布每个车轮的旋转速度。借助测得的Turtle轴距和轮径,我们进行了死区重整,以确定每个轮距以米为单位的行驶距离。

一旦知道了差动驱动模型中每个车轮已经行驶了多远,就可以计算单轮脚踏车模型的线性距离和角旋转\((v,\ omega)\),从而可以更新当前的姿态和速度我们的Hadabot Turtle作为Odometry ROS消息。所有这些都在hadabot_controller.cpp文件中完成。

然后,我们有效地使用与turtlesim示例相同的代码从Odometry消息中提取姿势信息,并将其发布为Nav2和rviz使用的tf2消息。

Nav2是一个复杂的ROS 2程序包,具有围绕3种主要功能的多个子程序包/组件-本地化,计划/控制器和映射。对于我们的目标示例,我们主要使用计划/控制器组件。

从概念上讲,Nav2中有两种类型的计划程序-全局计划程序和本地计划程序。全局计划者计算全局轨迹以达到我们的目标姿势。本地计划者参考全局计划,以确定最佳线性和角速度,以便机器人承担沿全局轨迹安全移动的任务。

全局规划师(截至2020-12)默认为基于A *搜索的规划师的变体。本地计划程序称为DWB计划程序,最初由David Lu在ROS 1天之内创建,它实现了Dieter Fox,Wolfram Burgard和Sebastian Thrun创建的动态窗口方法(DWA)算法。 DWB计划者由" critics"对当地各种轨迹进行投票。每个评论家都在乎"关于某种行为(即避免障碍,避免振动,快速运动等)。投票最高的局部轨迹获胜,其结果是通过“扭曲”消息命令控制机器人当前的速度。

为目标示例配置Nav2涉及为计划/控制器调整参数。我们针对Hadabot Turtle进行了调整的是我们的机器人的最大速度,以及控制器的更新频率(要进行足够频繁的更新,但更新的频率不能太大,以至于淹没了我们的爱好者网络能力)。我们还可以考虑和调整许多其他Nav2参数,这些参数可以是一系列的发布和练习。

展示了使用ROS 2 Nav2运行实际的Hadabot Turtle物理机器人的示例。

我们讨论了有关Nav2的一些问题,并进行了一些调整以使我们的目标到目标的示例生效。

在以后的文章中,我们可以将此练习分为2个单独的线程-(1)更详细地浏览一些Nav2参数,开始更仔细地看一下Nav2,或者(2)展示具有一定范围的裙子的Hadabot Turtle-传感器(基本Turtle套件的附加组件)以进一步探索定位,然后使用Nav2进行SLAM。

此外,我们正在与各种教授合作,以创建更结构化的ROS 2机器人课程提纲和课程。 请注册以保持联系以获取更多信息(以及我们将在不久的将来提供的任何促销优惠)! 再次感谢您的关注。 如果您喜欢这篇文章,可以通过以下两种方法继续学习Hadabot: 注册以保持联系(通过上方和下方的“保持联系”按钮),以获取将来的帖子更新以及促销和赠品操作。