如何开始学习机器人编程?

33

好的,我一直对机器人技术很感兴趣,并有一个项目构思。建造一辆小型遥控车机器人/无人驾驶车机器人,具备读取来自传感器设备(如GPS、温度计等)的数据并将数据写入某种设备的能力。这个想法已经在后台慢慢发酵了一段时间,直到我刚刚读到了这篇文章

我的问题是:我该从哪里开始呢?除了一些谷歌搜索和我的项目构思之外,我完全没有任何经验。我想尝试一下编程微控制器板。我知道一些Java .net语言和一些C。

请问应该从哪些方面入手呢?

在设计机器人时,您需要采取哪些步骤?从开始到完成,要经过哪些阶段。

谢谢。


1
有一些关键信息缺失:1)你的预算是多少?2)你更感兴趣的是机器人制作的低级或高级方面(例如,构建和编程自己的电机驱动器与执行高级任务,如同时定位和地图绘制(SLAM))?3)你的电子技能水平如何? - Staffan
  1. 我可以接受最高$500的报价,但我更希望从更便宜的价格开始。
  2. 我对底层编程很感兴趣,但我也想尝试高级编程。
  3. 我的电子技能可以说是初学者水平。
- Julio
10个回答

13

如果你对编程感兴趣,可以从类似Lego MINDSTORMS的东西入手。如果你对电子方面更感兴趣,可以查看ParallaxThe Robot Store上的一些套件。

你会发现有各种不同的语言和平台可供选择,因此可以根据自己喜好和价格范围找到适合自己的。机器人技术非常有趣(但也可能非常耗时)。

顺便说一句,只需要一个遥控车和一个BASIC Stamp,就可以制作一个相当酷的机器人。如果你的电脑有并口,甚至可以将电脑与遥控车连接起来,获得更强大的功能。


对于Parallax套件并不是特别喜欢。就机器人本身而言,它们并不是非常灵活(与编程相反)。 - Joel
其中一些可能不太灵活,但它们是很好的学习工具。 - Matthew Whited
我喜欢乐高机器人的原因是它非常简单易用(拖放基础操作和能够添加其他编程语言,如Java),而且可以在基本套件之外廉价扩展(只需要一个基本的乐高积木套装),使用起来也很有趣。 - TheLQ

8
乐高机器人套件是一个非常强大的系统,可以让你更加专注于实际想要完成的任务。有一些系统可以让你使用除了套件自带的可视化语言以外的编程语言,我更喜欢这种方式。
或者你也可以从VEX购买入门套件,其中包括一个PIC或Cortex微控制器以及一个编程系统。VEX套件就像是一个带有智能和电动马达的铁路建模套件。 :-)

1
我曾经使用过VEX,它是一个非常糟糕的编程系统。 - TheLQ

6

Arduino是一种非常受业余爱好者欢迎的平台。它基本上是一个可编程的板子,带有几个输入和输出。我强烈建议初学者使用它,因为它易于使用并且拥有庞大的支持社区

Arduino是一种开源电子原型平台,基于灵活、易于使用的硬件和软件。它适用于艺术家、设计师、业余爱好者以及任何对创建交互式物体或环境感兴趣的人。

许多人已经制作了使用Arduino作为控制器构建机器人的教程。这个相当酷。


3

2

2

2
考虑到你想要一个可以移动的遥控车辆,显然需要一些电机。我假设它会采用差分驱动方式differential drive,因为这是最简单的构建方法,并且非常容易控制。
最简单的选择是购买一对连续旋转舵机。它们便宜(10美元起)且通过PWM很容易驱动(占空比控制速度)。如果你想提高一点难度,可以购买一对带编码器的直流电机。你需要额外的电路来驱动它们,但你可以购买现成的电路板。
如果你不想让它被束缚,你还需要电池和某种无线电设备。如果你不打算从头开始,WiFi是我认为最简单的解决方案,因为你不需要在计算机上使用任何额外的设备;但它确实限制了你的“计算机”和软件选项(你需要在上面运行Linux等操作系统)。
你需要一个具有以下功能的MCU/开发板:
  • PWM,用于驱动舵机/电机
  • 如果您有模拟传感器,则需要 A/D 转换器
  • 一堆数字 I/O 用于各种用途
  • 内置 WiFi 或接口 WiFi 卡(USB、mini-PCI)
  • SPI/I2C 和 UART 用于各种外设

具有 USB 主机信号的优点在于可以轻松连接廉价相机。

类似 Roboard 这样的硬件符合要求(他们还出售 mini-PCI WiFi 卡)。它具备足够的计算能力(与许多较简单的板子不同,它具有 FPU!),具备丰富的连接选项,包括 USB,并带有用户空间库来控制外设。(免责声明:我自己没有测试过。)

这不是您可以获得的最便宜的硬件,但如果您想尝试机器人技术中更复杂的部分(如 SLAM、计算机视觉和运动规划),它应该有发展的空间。好的一面是,您不必为其构建程序员/调试器。

如果你想从简单的开始,选择像之前提到的Arduino这样便宜的开发板可能是更好的选择。在投资硬件之前,使用模拟器进行软件测试也是不错的选择。
从软件方面开始学习取决于你感兴趣的领域。

我还应该补充一点,C++在(学术)机器人领域相当占主导地位,因此您可能需要更加熟悉它。 - Staffan

1

如果您想要做得正确,并开发出在机器人行业中长期受益的技能,我建议尝试ROS。ROS,即“机器人操作系统”,实际上并不是操作系统(事实上它通常运行在Ubuntu上)。它是一个进程间通信系统,一组构建和调试工具,以及一个令人难以置信的大型优秀驱动程序和算法库。

如果没有物理机器人,您可以从Gazebo模拟器中任何一个模拟机器人开始入门。这将使您能够在不投入大量时间或金钱的情况下开始算法开发等工作。教程和入门指南可以在ros.org.找到。

祝好运!


1
除了Ubuntu以外的操作系统的文档和支持非常糟糕。即使我们最终在Windows上编译了一个项目文件,它对我和其他开发人员来说看起来像希腊语一样难懂。http://stackoverflow.com/questions/18194359/how-to-install-robot-operating-system-rosjava-on-windows - FlavorScape
你说得完全正确。ROS(机器人操作系统)是面向基于Linux的系统,特别是Ubuntu的。他们假设如果你要使用另一个平台,你有能力和意愿“付出代价”,这并不是最理想的,但它就是现状。 - Bradley Powers
我不明白为什么它不使用LLVM进行编译,或者至少Java/Groovy版本应该有文档记录,并且可以在安装时不出现链接失效的情况。我的意思是,拜托,Java。这可不像微软那样。 - FlavorScape

1
我会推荐LEGO机器人,但你作为程序员如何呢?如果想要自己动手的话,你可以将LeJOS安装到LEGO“砖”上(当你了解它时会知道这意味着什么),并在计算机上运行自己的Java程序以直接与LEGO机器人交互/控制。
另外,如果你是一名程序员,可能还想看看高级逻辑(HLL)开源项目。虽然代码还没有达到1.0版本,但有一个原型机的机器人演示,以及等待使用LeJOS的LEGO。
乐高机器人Mindstorms NXT(LeJOS) - (文章中的动态图仅在Firefox浏览器上正常工作。) http://highlevellogic.blogspot.com/2010/10/lego-mindstorms-nxt-robots-lejos.html

谢谢你的回复,Roger。Java是我经常使用的东西,所以我会去看一下这个。 - Julio


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接