【问题标题】:How to create real-life robots?如何创造现实生活中的机器人?
【发布时间】:2010-10-07 02:14:49
【问题描述】:

甚至在我学习编程之前,我就对机器人的工作方式很着迷。现在我知道底层的编程指令是如何编写的,但我不明白的是这些指令是如何被机器人遵循的。

例如,如果我写了这段代码:

object=Robot.ScanSurroundings(300,400);
if (Objects.isEatable(object))
{
   Robot.moveLeftArm(300,400);
   Robot.pickObject(object);
}

CPU 将如何跟踪该程序以使机器人执行向左看、移动手臂等物理动作?它主要是用二进制语言/ASM 完成的吗?

最后,如果我想学习如何制造机器人,我会去哪里?

【问题讨论】:

  • 去乐高NXT商店。

标签: artificial-intelligence robotics


【解决方案1】:

最后,必须将高级命令分解为非常低级的命令。必须将“拿起杯子”翻译成如何移动手臂(关节应该处于什么角度)到实际转动电机的硬件命令。

有些框架试图提供一定数量的这种翻译,包括(但不限于):

但是,由于机器人研究对系统的每一层都感兴趣,因此提供整个翻译堆栈的系统并不多。如果您正在研究机器人技术,有几个系统试图使这更容易(同样,随机样本):

否则,Make 等网站甚至提供了构建机器人项目的指南。挑战是找到一个你感兴趣的项目,然后去镇上!

【讨论】:

    【解决方案2】:

    您应该查看Microsoft Robotics Studio (MRS)。他们有很多videos/screencastswritten tutorials。此外,Channel9 有关于机器人主题的many videos、采访等。包括演示,以及对 MRS 开发人员的采访。

    【讨论】:

      【解决方案3】:

      在大多数现代机器人中,您将拥有机构的逆运动学模型,在本例中为手臂,它将空间坐标转换为手臂关节的位置。这些关节通常由伺服电机移动。为了平稳地移动手臂,您需要一系列中间关节位置来定义您希望手臂遵循的路径。您还必须担心关节的速度,它们共同控制着手臂末端“手”的速度。

      当手臂移动时,您的伺服系统将获得有关其实际位置的反馈。简单的伺服系统可以使用基本的 PID 反馈回路来调整电机。更复杂的系统将包括补偿惯性、重力、摩擦等的前馈参数。这些可以变得非常复杂。

      当您必须在机器人周围的空间中留出障碍物时,真正的乐趣就开始了。您必须感知障碍物并弄清楚如何避开它并仍然到达目的地。

      【讨论】:

        【解决方案4】:

        我只需要添加一些关于Arduino projects 的内容,因为我没有看到上面提到的内容。

        进入基于 Arduino 的机器人项目的门槛非常低。您为硬件编写的“草图”程序非常容易上手,并且类似于 C 语法。如果您不知道您的晶体管与电阻器的区别,这些板仍然允许您使用插件硬件和扩展基础计算机板的附加 "shields" 做很多事情。

        它非常有趣,非常灵活,可以让您的代码与现实世界进行交互。再加上它的“开放硬件”非常符合开源软件的路线。

        【讨论】:

          【解决方案5】:

          机器人将通过与硬件交互来工作。代码的桥接通常通过不同类型的 I/O 端口完成。例如,它可能只是一根 RS232 电缆(你知道那些旧的 COM1 端口)。硬件部分将由电机(如servo motors)和传感器(如超声波感知障碍物、激光测距或开关)组成。

          您不需要使用汇编程序来做到这一点,有很多语言(如果不是大多数的话)可以做到这一点,但它需要有关如何与硬件交互的知识。就像写一个驱动程序一样。如果您想自己构建机器人,它至少也需要基本的电子设备。

          如果你有兴趣,我建议你看看this book,这是一本很好的入门书。

          另外,您可以尝试编写Basic stamp,按照教程操作非常简单,它将为您提供如何构建机器人的良好开端。它不会太贵,而且您很快就会与硬件进行交互。

          祝你好运,玩得开心!

          【讨论】:

            【解决方案6】:

            如果你的编程足够好,你可能会发现你甚至不需要机器人来测试你需要编写的大部分最难的代码......(IE,让机器人看到并识别场景总是让我着迷......但在某些时候,我意识到这个问题所需的物理机器人是容易的部分......软件是困难的部分!)......

            【讨论】:

              【解决方案7】:

              可能更容易得到一种更高级的语言来描述机器人的行为和智能,并让低级语言来描述动作(移动手臂、行走、停止)。关于智能代理的所谓 BDI 架构的研究很多,google 一下。

              您可以在site 找到更多相关信息,它是用于描述用 Java 制作的代理行为的 DSL。它叫 Jason 解释器,语言是 AgentSpeak(L)。

              【讨论】:

                【解决方案8】:

                寻找当地的FIRST 机器人团队并自愿担任导师。 FIRST 是针对初中生和高中生的机器人竞赛。目标是让孩子们完成构建、编程、测试和运行机器人的所有工作,但您仍然有很多机会深​​入研究并真正学习软件。他们使用的是 National Instruments 的LabView,并且截至 2 月 8 日,他们刚刚开始了今年的区域比赛。 LabView 是一个图形编程环境,它与 NI 硬件接口,让您可以对电机、执行器和传感器进行编程。 NI 的东西非常漂亮而且很容易使用,而且它是免费提供给每个团队的,所以你不必自己购买硬件和软件(至少开始使用)。另外,你可以获得额外的奖励帮助新一代工程师起步。

                【讨论】:

                  【解决方案9】:

                  您必须有一个与硬件接口的驱动程序(很可能是带有电机等的 STAMP 或 FPGA...)。然后你会调用函数 me.moveLeftArm(x,y);并且驱动程序会知道 moveLeftArm() 意味着将执行器移动 X 秒/毫秒/度。

                  我相信您可以找到一个进行机器人编程的工具包。

                  【讨论】:

                    【解决方案10】:

                    如果您想要 Java 替代品,我可以推荐这本书 Linux Robotics。它有很多关于从何处获取套件、部件和传感器的有用信息,以及完整的 Java 源代码清单。

                    【讨论】:

                      【解决方案11】:

                      我也有同样的渴望 .. 我即将购买我的第一个 Beagle Board 和一些可以使用 I2C 总线的传感器/伺服器。我将使用事件驱动设计和粗略的纤程实现(如果你愿意的话),它们是用户空间线程。

                      基本上我的设计需要一个进程,每组伺服器启动一个线程。每个组管理器线程将启动 x # 个原纤维,每个伺服 2 个(可能)。一根原纤维用于控制伺服系统,另一根原纤维处理来自该伺服系统的事件(即,物体太重而无法拾取、物体掉落等)。

                      主进程的任务是侦听来自其他所有事物的事件,并确保“右手知道左手在做什么”,同时前进和越过障碍。

                      我需要两年的大部分时间才能让某件事发挥作用,让我为此感到自豪..但我预计会有很多愉快的夜晚来实现这一点。

                      我很可能会使用微内核,而不是 Linux。

                      我这样做是为了通过事件驱动的方法来磨练自己,以及我制作自己的 R2 的愿望:)

                      【讨论】:

                        【解决方案12】:

                        如果您熟悉 .Net,请从 Phidets 开始。您可以结帐TrossenRobotics.com 以获取零件。

                        Phidg​​ets 接口套件是一个很好的起点。从那里你可以得到一个伺服控制器并开始构建移动的东西。

                        Trossen 论坛也是查看其他人项目的好地方。他们也有一个带有代码/项目示例的新数据中心。我不为他们工作......只是一个快乐的客户。

                        【讨论】:

                          【解决方案13】:

                          这里有很多好的答案。您的一段幻想代码与您在 MS Robotics Studio 上使用更高级别的语言(例如 C#)的方式相距不远。请记住,即使是简单的事情(例如“向左移动手臂”)也充满了“信息偏差”。

                          在金属上,机械臂是一组连杆和 [可能] 电动关节。因此,“向左移动手臂”(或坐标中的任何点)已经是一项非常复杂的计算任务(查找 D&H 表、机械手的正向和反向运动学)。

                          还有一个概念,即向左移动手臂假设该空间中没有任何东西并且不会发生碰撞。如果环境不受约束,那么您需要实现一个碰撞检测系统,通常基于某种传感器(相机)和机器视觉算法。

                          总之,与对系统建模以实现所需行为相比,语言和硬件接口通常是微不足道的。

                          【讨论】:

                            【解决方案14】:

                            关于最后一个问题“如何创建机器人”,我发现是从[Adafruit][1]、[Hackster.io][2]甚至[glitch][ 3],或寻找从零开始构建机器人的人的博客文章,例如https://burningservos.com,或提供硬件和软件文档和教程的产品,例如http://emanual.robotis.com/docs/en/platform/openmanipulator_x/overview/

                            【讨论】:

                              猜你喜欢
                              • 2016-03-02
                              • 2020-12-30
                              • 1970-01-01
                              • 1970-01-01
                              • 2021-09-09
                              • 1970-01-01
                              • 2019-04-09
                              • 2011-07-03
                              • 1970-01-01
                              相关资源
                              最近更新 更多