31| 1
|
[项目] 【Arduino 动手做】物联网核心构建导航机器人 |
使用 iRobot Create 2、激光雷达、语音识别和寻路算法来创建一个可以引导您在建筑物内行走的机器人。 项目 该项目旨在消除导航至会议室时的混乱和迟到现象。项目完成后,将引导用户沿着最短路径到达他们选择的会议室。 作为练习,您可以通过实现以下任意功能来扩展此项目: 用于运输物品的篮子。 导航期间在平面图上显示突出显示的路线的用户界面。 用于解析平面图的视觉表示以进行设置的应用程序。 如果房间号与平面图上的位置相关,则根据房间号进行路径计算的启发式方法。 多层楼和转弯角度计算的选项(除右/左之外)。 用户可以选择配置机器人以设置 HOME 位置。 初始设置 根据这些说明设置你的 Joule 。从技术上讲,任何兼容 Windows IoT Core 的设备都应该可以与此项目兼容,因为 IoT 设备通过 USB 上的串行接口与 LIDAR 和 Roomba 通信。 取下 Roomba 顶部的塑料件,以便可以访问串行端口。 硬件设置 使用 3D 打印机打印出显示器/电池和激光雷达的支架以及焦耳外壳。 连接好所有部件,然后将显示屏、电池、Joule 和激光雷达安装到 Roobma 上。将麦克风和扬声器牢固地固定在上面(如果您自己制作支架,则更佳!)。 通过提供的电缆将 Joule 插入电池并将显示器 + LIDAR 插入 Joule。 软件设置 连接到 WiFi 为了使语音识别功能正常工作,机器人需要连接到互联网。您可以通过 Windows 设备门户连接到 WiFi。 https://docs.microsoft.com/en-us ... ur-device/setupwifi 设置 UART 您需要 Roomba 和 LIDAR 的 USB-UART 线缆的硬件 ID。您可以运行 UART 示例应用来检测并打印所有可用的串行设备(https://github.com/ms-iot/samples/tree/develop/SerialUART/CS )。 获取设备 ID 后,您应该在代码中将值设置为 Roomba 和 Lidar 的设备 ID 变量。这样做是为了避免在连接多个串行设备时出现端口混淆。(这些 ID 与线缆本身绑定,而不是 Roomba 或 Lidar。如果您有多个线缆,则每根线缆都会有不同的 ID。) 给你的机器人起个名字 你需要给你的机器人起一个名字,这样它才能在理解指令之前先听取指令,就像你在对 Cortana 下达任何命令之前必须说“嘿,Cortana”一样。你可以在VoiceCommandController.cs文件中指定机器人的名字。 创建地图 楼层房间和交叉路口的地图信息存储在 XML 文件中。此地图信息应包含每个“航点”(房间或交叉路口)的相对坐标,以及连接航点之间的距离(以米为单位)。 设置机器人的起点 由于机器人没有 GPS,我们需要为机器人指定一个已知的起始位置。您可以使用导航代码中的 SetStartingPosition() 方法设置它。 设置遥测 Roomba 会将某些事件(例如碰撞)报告给 Azure IoT 中心。要使用此功能,您需要订阅 Azure IoT 中心。 订阅后,您可以替换Telemetry.cs文件中的字符串,以便机器人连接到您的 IoT 中心。 如何使用 UI 该应用程序有一个页面,显示有关机器人的诊断信息,并提供一些按钮来手动使机器人移动、停止、导航和关闭。 应用程序左侧有一个区域,用于绘制激光雷达返回的所有点,让用户可以看到机器人正在探测到的内容。蓝色圆圈代表 Roomba。黄色圆圈和楔形代表激光雷达在决定是否调整 Roomba 当前轨迹时所观察的区域。红色圆圈和楔形代表激光雷达在决定是否停止时所观察的区域。进入这些“锥体”的点会改变颜色,以指示它们处于决策范围内。 顶部有一个指示器,显示 Roomba(又名 iRobot Create 2)中剩余的电池电量。 在右上角,有一个输出文本块,它打印出与机器人正在做的事情相关的消息,可以作为调试的工具。 移动按钮可使机器人向前移动,然后停止。此按钮主要用于演示如何使 Roomba 移动。它也可用于调试避障算法。 停止按钮可停止 Roomba 当前正在执行的运动。 导航按钮会启动 Roomba 从起始位置到目标位置的导航。这只是一个示例,因此您必须替换项目中的地图 XML 文件,才能使其在您的环境中导航。 关闭按钮可将 Roomba 设置为关闭模式。Roomba 初始化后会设置为完全模式。有关 Roomba 操作的更多信息,请参阅 iRobot Create 2 开放接口规范。此功能有助于让 Roomba 退出完全模式进行充电,因为它在完全模式下无法充电。 两个滑块调整左侧黄色圆圈的半径和视野。 如何使用语音命令 首先在VoiceCommandController.cs文件中设置机器人名称。 设置名称后,您可以说出其中一个激活短语(例如“Hey DJ Roomba”)来激活语音命令。 一旦识别出激活短语,您就可以说出命令(例如“前往 2071 房间”)。 有关如何处理语音命令的示例代码可以在ControllerPage.xaml.cs文件中找到。 实用技巧 尽量避免倾斜和不规则的地板,当前的设计将会很困难,因为它仅基于编码器的位置。 由于 Roomba 报告编码器读数的方式,当前实现无法处理反向运动。 在为机器人选择名称时,我们建议使用一个听起来有力且明确的名称,至少包含 3 个音节。 启动应用程序时,Roomba 应从您定义的起点开始,并面向正 y 方向,如您在地图 XML 中提供的坐标所示。 ![]() ![]() |
附录 【Arduino 动手做】物联网核心构建导航机器人 项目链接:https://www.hackster.io/54243/io ... gation-robot-125856 项目作者:Windows 物联网•安妮·托马斯•莫琳·“莫莫”·王•弗朗西斯科·韦尔斯·普林斯•乔纳森·邱 项目代码:https://github.com/Microsoft/Win ... dingNavigationRobot 3D 文件:https://www.thingiverse.com/thing:2163982 https://hacksterio.s3.amazonaws. ... tand_w26y1TfeLU.3mf https://hacksterio.s3.amazonaws. ... tand_6608WIoHXR.3mf ![]() |
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed