Erlang中的机器人应用程序

时间:2011-01-25 16:22:26

标签: erlang robotics

我想使用Erlang来实现机器人应用程序。在Erlang中实现的大多数当前实际应用程序都是基于Web的。由corrado教授实施的机器人没有利用Erlang的并发性,这是Erlang的心脏,更多地集中在人工智能上(根据我对该项目的理解)。 / p>

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

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

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

2 个答案:

答案 0 :(得分:9)

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

  • 并发来建模和监控并发世界;
  • 传感器,执行器和计算资源的
  • 分布;
  • 状态机将行为联系在一起;和
  • 主管了解容错能力。

任何语言都可以完成,但Erlang使一些方便,特别是在架构层面。

例如,Concurrent Programming in Erlang中的第14章为每个升降机通过一个过程建模升降控制系统,每个升降机建立一个过程控制系统,然后讨论卫星控制系统的过程结构。升降机或卫星可能不是很像机器人,但原理是相同的。

The Erlang & Robotics由Corrado Santoro等人完成。充分利用并发性。他们的2007 mobile robot project有许多不同的(并发)OTP行为,从低级别I / O到高级别规划。 Teaching Erlang using robotics and player/stage是最近的另一项工作。

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

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

阅读robotic systems architectures,了解此类设计很常见,原因何在。 Erlang是否促进了这种类型的编程?

答案 1 :(得分:3)

了解erlang最佳位置和最佳位置的唯一方法是在erlang中编程一段时间。这不是关于erlang最擅长什么,而是关于理解使用erlang的小型spawns和otp的功能设计模式与尝试用命令式语言解决相同问题的比较。一个简短的项目符号列表将不公平。谷歌的常规和渠道,哈斯克尔和D可以毫无问题地采取行动。 Erlang特别擅长分发。在较新的并发语言中,您实际上并不需要太努力才能使事情并发。特别是在erlang中,如果你正在使你的spawns均匀地执行你使用并发的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