亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Nox – 房屋漫游机器人 (ROS)

Nox 是一个使用 SLAM (ROS) 和 Kinect 在其环境中导航的漂亮(且耗时)机器人。Nox 是使用 ROS、Raspberry Pi 和 Arduino 构建的差分驱动机器人。我从一个带有基本导航的机器人基地开始这个项目,然后我可以用它来做其他事情,比如吸尘器。

然而,我很快决定让它成为一个具有适当设计的独立机器人,因为它经常在 DIY 机器人中缺失。在当前状态下,机器人可以使用 SLAM(gmapping)来创建其周围环境的地图(使用 Kinect 深度感知来检测墙壁和障碍物)并在地图内定位自己。它可以规划一条通往给定目标的路径,并驱车前往避开障碍物。

Nox 由 11.1v 锂离子电池供电,并由两个电机驱动。可以拆下前面板来更换电池。一个槽孔和一个螺钉将其固定,并允许放置不同长度的电池。我放了一个带屏幕的电池警报来监控水平。


电机是 Banggood 的两个 12v 直流电机 (107rpm)。它们很好,但实际上我不需要机器人跑得那么快,我可以用一些速度换取更准确的编码器。

关于设计,主要的限制是要有与 Kinect 很好集成的东西,因为我正在围绕它构建机器人。我的灵感来自许多现代风格物品的三角形外观(我不得不承认很多来自 Deus Ex)。我真的很想拥有一个漂亮而专业的机器人,因为它是 DIY 机器人中经常缺少的东西(但不要担心接线会像它应该的那样凌乱)。花几周时间在 CAD 模型上调整一切是必要的。

侧面的灯是从我免费获得的除夕夜荧光棒中回收的,用于指示机器人状态。当 Arduino 没有连接到 ROS master 时(表示机器人程序还没有启动),指示灯非常快地连续闪烁 3 次。驾驶时,车灯有更“呼吸”式的闪烁,闪烁速度取决于机器人速度。

不连接闪烁

空闲闪烁

结构

如上所述,机器人是差动驱动的,所以电机放置在同一轴上。底座由木头制成,带有两个用于支撑的脚轮。我最初计划使用一个脚轮来避免超静现象,但找不到合适的脚轮。其余的结构主要由木头和金属支架制成,在任何 DIY 零售店都可以轻松找到。在机器人板的后部可以堆叠以放置电子板。


车架由黑色塑料板制成,手工切割和粘合(下次肯定会使用3D打印)。


硬件

主控制器内部是一个运行Ubuntu和ROS的Raspberry Pi 3B。 Raspberry 可以从外部计算机通过 WiFi 和 ssh 访问以向机器人发出命令。 ROS 程序使用 Kinect 执行里程计计算、导航规划和映射。 Raspberry Pi 将速度命令发送到 Arduino,后者通过 Adafruit 电机屏蔽用 PID 控制两个电机。它读取编码器的值,计算每个电机的速度并将该值发送回 Raspberry 进行里程计计算。 Arduino 和 Raspberry Pi 通过 USB 连接,Arduino 程序充当 ROS 节点(查找 rosserial 了解更多信息)。

我使用了不同类型的 Arduino,然后才安定下来。起初我使用基本的 Arduino Uno,但我没有足够的中断引脚来读取编码器值(使用 Arduino 读取编码器值的最佳方法)。速度和准确性受到限制,因为我不得不求助于其他编程技巧来使其工作。我尝试使用 Arduino Leonardo,但限制因素是内存,我不得不最终切换到 Arduino Mega 2560。因我有足够的内存和引脚来添加新功能,所以我因祸得福。

Kinect 360 从一开始就是该项目的一部分,因为我想做 SLAM(同步定位和映射),但又不想在激光雷达上花费大量资金。 kinect 基本上是一个 25 欧元的 3D 相机(当然不要期望与 Hokuyo 的精度相同),除了 SLAM 所需的深度扫描外,还可用于计算机视觉,具有加速度计和麦克风大批。所有这些都对项目的以下步骤很方便。

两个直流转换器用于转换电压。电机直接使用电池电压(或多或少 11.1v)运行。命令部分(包括 Raspberry Pi、Arduino 和编码器)在由电池转换的 5V 电压下运行。 Kinect 需要一个 12v 的稳定电压,一个转换器也由电池提供。

软件

在软件部分,我使用了 ROS Kinetic。我真正编写的唯一节点是“nox_controller”,正如他的名字并没有真正暗示的那样,它用于根据 Arduino 数据(电机速度)计算里程计。用于计算的模型可以在论文“On Differential Drive Robot Odometry with Application to Path Planning”中找到(我实际上做了我自己的公式,但它们是相同的,无论如何这篇论文值得一读)。里程计中给出了协方差矩阵,但目前未使用(但是,如果我将 IMU 集成到里程计中,它将变得有用)。

在 Arduino 中,电机控制是通过 PWM 完成的。 PID 应该管理每个电机速度,但由于 PWM/电机速度比非常线性,我通过直接命令速度获得了很好的结果,现在停用了 PID。尽管正确的 PID 实现和校准正在进行中,但请不要担心。

阅读更多详细信息:Nox – 漫游机器人 (ROS)


制造工艺

  1. 如何制作 Arduino+Raspberry Pi 机器人平台
  2. 使用 Raspberry Pi 和 Bridge Shield 的机器人
  3. Raspberry Pi CD Box Robot
  4. ANDY:多功能“类人”机器人
  5. 滚动报警机器人
  6. 制作 Minecraft Creeper Robot
  7. JQR Quadruped Autonomous Robot
  8. 阿基米德:人工智能机器人猫头鹰
  9. EMAR Mini – 紧急救援机器人
  10. 使用 Raspberry Pi 的 Wifi 控制机器人
  11. Intellisaurus – 恐龙机器人套件
  12. 打开简历机器人