12

我想使用 Erlang 来实现机器人应用程序。大多数当前在 Erlang 中实现的现实世界应用程序都是基于 Web 的。corrado教授实现的机器人并没有利用Erlang的核心Erlang的并发性,而是更多地专注于人工智能(根据我对那个项目的理解)。

我想到的一些想法就像 Soccor Robots,多个机器人打扫房间,但在这样的系统中,机器人可以用 C(或任何其他编程语言)编程,可以使用 MATLAB 进行控制。MATLAB有助于图像处理(视觉系统)和解决复杂的数组计算,那么使用Erlang有什么意义呢?(如果我错了,请纠正我)

有人可以向我推荐一些机器人应用程序,它可以利用 Erlang 的特性,尤其是并发性,并且有人可以说Erlang 最适合这种应用程序而不是其他语言。

一点点详细的答案会对我有很大帮助。

4

2 回答 2

10

但是 Erlang 可能根本不是任何机器人应用程序最佳方法。但是你可以选择不那么雄心勃勃的论点来证明Erlang 支持在许多机器人应用程序中很重要的计算模型。将 Erlang 用于机器人技术的要点包括

  • 并发模型和监控并发世界;
  • 传感器、执行器和计算资源的分配
  • 将行为联系在一起的状态机;
  • 主管的容错。

任何事情都可以用任何语言完成,但是 Erlang 使一些事情变得方便,尤其是在架构层面。

在 Erlang 的并发编程中的第 14 章中,例如为电梯控制系统建模,每个电梯一个进程,每个楼层一个进程,稍后讨论卫星控制系统的进程结构。升降机或卫星可能不像机器人,但原理是一样的。

Corrado Santoro 等人的 Erlang & Robotics工作。充分利用并发性。他们2007 年的移动机器人项目有许多不同的(并发)OTP 行为,从低级 I/O 到高级规划。使用机器人和播放器/舞台来教授 Erlang是最近的另一项工作。

您的机器人足球或清洁机器人想法很好,并且有足够的并发性和机器人间通信的空间。但是你不只是做一个任意大小的机器人应用程序。要么你有一个团队和一些特定的机器人可以工作,要么你给自己一个模拟器(无论哪种方式都得到一个模拟器)。

尝试模拟一些机器人,它们相互转向,直到它们都发生碰撞,每个机器人都运行自己的进程。当它起作用时,替换任务并添加(假装)控制电机、感觉墙壁、查看环境、理解用户命令、故障等的过程,并与其他机器人和规划过程交换消息。

阅读机器人系统架构以了解此类设计很常见以及原因。Erlang 是否促进了这种类型的编程?

于 2011-01-26T15:18:27.620 回答
3

了解 erlang 在哪里最好以及何时最好的唯一方法是在 erlang 中编程一段时间。这不是关于 erlang 最擅长什么,它更多的是关于理解使用 erlang 的小生成和 otp 的功能设计模式与尝试用命令式语言解决相同问题的比较。一个简短的利弊清单不会公正。Google 的 go 例程和通道,haskell 和 D 可以毫无问题地进行类似的操作。Erlang 特别擅长分布式。在较新的并发语言中,您实际上不必太努力地使事情并发。特别是在 erlang 中,如果你让你的 spawn 均匀地执行你正在使用并发的 cpu 密集型任务。你不会找到太多关于机器人学 erlang 的信息,但是你 会找到 3 本书,其中有很多关于使事物分布式和并发的示例,这些示例解决了许多相同的问题。其他并发语言通常不会以这种方式专门化。erlang 中内置了许多有用的原语。

已经发表了很多关于用其他语言做类似事情的帖子,但坚持使用 erlang 可以节省大量工作。

http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=%22erlang+style%22+%22(concurrency|message+passing)%22 http://groups.google.com/group/ golang-dev/browse_thread/thread/e120a586441b9b24/806eab93bd5281a0?#806eab93bd5281a0

于 2011-01-26T02:17:06.117 回答