< >
Home » ROS2与webots入门教程 » ros2与webots入门教程-创建自己的机器人

ros2与webots入门教程-创建自己的机器人

ros2与webots入门教程-创建自己的机器人

说明: 

  • 介绍如何在 Webots 中创建自定义机器人。

新的空世界: 

  • 在创建机器人之前,您将创建机器人需要的环境。 首先,启动Webots。
  • 打开后,单击“文件”>“新世界”。 将创建一个新的空世界

请输入图片描述

  • 现在您将添加一些灯光、背景和竞技场。
  • 按 Ctrl+Shift+A 添加对象或按添加按钮(顶部工具栏的第二个按钮,+ 图标)。
  • 然后使用搜索栏,键入 TexturedBackground,单击相应的对象,然后按添加按钮。

请输入图片描述

  • 重复该过程以添加 TexturedBackgroundLight 节点和 CircleArena 节点,以获得与下图中相同的设置。

请输入图片描述

  • 您现在可以通过鼠标右键单击进入您的世界,并通过左键单击旋转视点。
  • 转到文件 > 将世界另存为 ...,然后将文件保存在所需位置。
  • 您的世界环境已准备就绪,是时候创建您的机器人了! 您将从一个由圆柱体和两个轮子组成的机器人开始。

机器人的身体

  • 首先添加一个机器人对象。 按添加按钮,打开基础节点(双击或按箭头按钮),然后单击机器人 > 添加。

请输入图片描述

  • 在场景树(左侧)中,展开机器人平移。 您现在将添加机器人的组件。
  • 单击 children > Ctrl+Shift+A > Base nodes > Transform > Add 添加一个 Transform 节点。
  • 然后展开新创建的节点(Transform 节点)并将平移设置为 0 0 0.0415 以提升机器人的高度。

请输入图片描述

  • 将 Shape 节点添加到 Transform 节点的子节点。

  • 展开 Shape 节点,选择几何图形并添加一个 Cylinder 节点。 在圆柱节点中,将高度设置为 0.08,半径设置为 0.045。 单击 Cylinder 节点并在 DEF 字段(在场景树下)键入 BODY。

  • 此 DEF_USE 机制允许您使用 DEF 定义此圆柱体的参数,并在以后使用 USE 重用这些参数。

  • 选择 Shape 节点的外观字段并添加一个 PBRAppearance 节点。 展开 PBRAppearance 节点,单击 baseColor 并为机器人的身体选择一种颜色,这样您就可以区分这部分了。 还将粗糙度设置为 1,金属度设置为 0,以获得更好的视觉效果。

  • 此时您应该具有以下设置:

请输入图片描述

  • 在机器人的 boundingObject 字段中添加一个 Transform 节点。 将此转换的平移设置为 0 0 0.0415。 在这个新节点中,将您之前定义的 BODY 节点添加到子字段中(您将在 USE 列表中找到它)。

请输入图片描述

  • 为您的机器人添加物理场节点,以启用与其他对象的碰撞。 然后,选择现场控制器 > 选择... > 以向模拟器指示所使用的控制器将是 Webot 的外部控制器(因为您将使用 ROS 节点)。

  • 您应该以机器人身体第二部分的设置结束:

请输入图片描述

机器人左轮

  • 现在,您将向机器人添加轮子,以便它可以移动。 让我们从左边的开始。
  • 选择 Robot > children,然后添加一个 HingeJoint 节点。

请输入图片描述

  • 接下来选择jointParameters 并添加一个HingeJointParameters 节点。
  • 选择设备,添加一个 RotationalMotor 节点并配置 HingeJointParameters 和 RotationalMotor 节点,如下所示。

请输入图片描述

  • axis 将指示车轮应围绕哪个轴旋转,并且 anchor 指示车轮轴与机器人底座之间的偏移。
  • 选择 endPoint,添加一个 Solid 节点,并以与机器人主体类似的方式设置它:

请输入图片描述

  • 将名称更改为左轮并向 boundingObject 添加一个 WHEEL 节点(您将在 USE 列表中再次找到它)。
  • 再次向您的端点实体添加一个物理节点到其场物理,以启用碰撞。 对于 endPoint Solid 节点,您应该以以下内容结束。

请输入图片描述

机器人右轮

  • 创建第二个轮子更容易,因为您可以使用 Webbots 的 DEF-USE 机制。 选择 Robot > children > HingeJoint 并添加一个 HingeJoint 节点。

  • 您必须选择第一个 HingeJoint 才能获得下面的第二个 HingeJoint。 这将使 DEF-USE 机制正确受益,因为只有在场景树中定义了相应的 DEF 时,您才能使用 USE。

  • 再次选择jointParameters 并添加一个HingeJointParameters 节点。 选择设备,添加一个 RotationalMotor 节点,然后配置 HingeJointParameters 添加 RotationalMotor 节点,如下所示。

请输入图片描述

  • 选择 endPoint,添加一个 Solid 节点并在新的子节点中添加 WHEEL 节点。 然后将名称更改为右轮并将另一个 WHEEL 节点添加到 boundingObject。 最后为您的机器人添加一个物理节点到其相应的字段。

请输入图片描述

  • 恭喜! 您现在有了一个可以在竞技场中移动的简单机器人的模拟。 不要忘记使用 Ctrl+S 保存文件。

请输入图片描述

为您的机器人添加传感器

  • 您的机器人现在可以移动,但无法避开障碍物。

  • 让我们添加一些传感器,以使机器人能够检测到前方障碍物。 首先在机器人的 children 字段中添加一个 DistanceSensor 节点。 然后,如下图所述配置传感器,以便正确放置和建模传感器:

请输入图片描述

  • 接下来重命名传感器并配置lookupTable、numberOfRays 和孔径字段。 您可能需要按 lookupTable > Ctrl+Shift+A 才能在 lookupTable 字段中添加新行。

请输入图片描述

  • 创建第二个传感器很简单,您可以遵循此结构(您可以复制/粘贴 ds0 DistanceSensor 并对其进行调整):

请输入图片描述

  • 现在,您可以通过查看 > 可选渲染 > 显示距离传感器射线或按 Ctrl+F10 来确认您的传感器是否建模良好。 您应该在机器人前面的水平平面中看到每个传感器有两条白线。

请输入图片描述

  • 完美,你的机器人准备好了! 不要忘记使用 Ctrl+S 来拯救你的世界。
  • 您可以通过在此处下载包含机器人的世界文件来检查您的实现。

启动驱动节点

  • 在确保新机器人模型正常工作后,您可以通过几个简单的步骤为其创建 ROS 2 界面:

  • 开始模拟。

  • 执行

ros2 run webots_ros2_driver driver
  • 驱动节点将附加到 Webots 机器人并为其创建一个 ROS 2 接口。

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros2与webots入门教程