使用JavaScript编程机器人


39

作为一个将大部分时间都花在JavaScript上的人,在不偏离我目前的语言重点的情况下,进入小型机器人的最佳途径是什么?

是否有任何使用JavaScript语言的项目工具包或工具可能使该领域对像我这样的开发人员更容易上手?我什至会对在仿真中执行所有代码的虚拟环境感兴趣。


3
您应该查看这篇文章... weblog.bocoup.com/javascript-arduino-programming-with-nodejs 它讨论了用于Arduino的协议的纯Js实现。很酷的东西。
克里斯·古铁雷斯

我想看看机器人上正在运行一些nodejs实现。一个人可能只是使用websockets通过网络控制机器人。
卢勋爵。

您不使用JavaScript编程-您编写脚本(在浏览器中用于DOM的客户端操作)。您可以使用JAVA编程-完全不同。node.js它也不是JavaScript。这是一个C库,可将AJAX调用解释为小型服务器,并且用于大量请求(例如在ebay上)-您不需要刷新即将结束的商品页面,因为javascript通过使用node来同步出价和时间.js响应速度极快,同时减少了流量开销)node.js非常适合arduino,因为它是C
Piotr Kula

因此,您可以c使用node.js对其进行编程,并与之进行接口-它本质上使用JavaScript ajax进行请求,但您也可以使用服务器请求或其他与JavaScript无关的任何聪明代码。
Piotr Kula 2012年

Arduino代码是当前唯一有效的方法吗?
Huzo

Answers:


22

有一些项目可以将Arduino平台与Node.js javascript执行引擎配对。看一下Johnny-Five,这是Arduino Firmata远程控制协议或node-reflecta之上的库,node-reflecta是Arduino Reflecta远程控制协议的Node.js接口。

我亲自构建了一个名为RocketBot的Node.js控制的机器人,该机器人在Beaglebone和Arduino的顶部结合了node-reflecta和node-joystick,因此我可以证明这种方法很好用。


12

嗯,有趣的问题!我个人建议您看一下Arduino平台。它是用C语言编程的,因此语法将……对于JavaScript编写者来说是熟悉的。以我的愚见,知道语法(while循环,if / than块等)的布局是70%的工作,一旦熟悉,就可以即插即用。您可以在SparkFun.com或adafruit.com上以约30美元的价格从网上购买入门套件,可以在PC,Mac或Linux机器上对其进行编程,并且预先装有足够的示例,以使您轻松进入语言很快。我并不是说您只是要向其中添加一些JavaScript代码并按照自己的方式行事,但是当我开始使用Arduino时,我是一名JavaScript程序员,我发现使用它非常容易。祝好运,

PS-您还应该熟悉/熟悉构建电子电路(灯,马达等),但是如果您没有任何经验,任何值得一提的优秀Arduino入门套件都可以帮助您入门。


3
PS-对于刚起步的,刚起步的Robotics.SE网站,这是一个很好的问题,我认为:)
克里斯(Chris)

1
好答案,@克里斯。我从其他JavaScript开发人员那里听说过Arduino平台。对于寻求吸引的开发人员来说,这也许是最好的门户药物。
桑普森2012年

1
作为一个年轻的JavaScript / Web开发人员,我发现您的问题非常有趣。如前所述,存在用于node.js和其他各种版本的平台,但是,如果您真的很熟悉JavaScript,则可以轻松地学习任何其他语言,我强烈建议您这样做。它不仅扩展了您理解基础计算机科学的能力,而且还使学习新事物变得更加容易。
2012年

8

机器人操作系统(ROS)提供了使用Javascript来控制机器人的功能。具体来说,您将要看看rosbridge。然后,您将需要使用rosserial与控制您的机器人的微控制器进行接口。

虽然我是ROS的忠实拥护者,但是这是开始探索机器人恕我直言领域的一种过于复杂的方法。最好选择Arduino并学习一点C。Arduino在简化流程方面做得很好,从语法的角度来看,C与JS的差别不大。


5

通常,有多种方法可以在平台上使用node.js,例如用于RPi的一种如果您只是搜索它们,还有更多相似的东西

另一个有趣的是ArduGate,它使网页可以通过JS与arduino进行通信(尽管可能不完全是您想要的,因为它没有编译并加载到arduino)

虽然我真的不明白使用其他语言有什么问题。我本人主要是用JS编写的,但是我发现自己使用C ++编程Arduino非常舒适(它还支持C和Java,如果您花点时间做的话,还可以使用多种语言)。请记住,对于机器人编程,我们不需要任何花哨的东西-只是正常的ifs,fors,whiles,switches和偶尔class。学习语法,您就可以开始使用了:)唯一的事情是C / C ++ / Java是强类型的(尽管如果您使用的是RPi,则python是弱类型的,但是还有百万种选择的方式)一开始必须为所有内容指定类型时,您可能会感到沮丧。使用本地语言的优势之一在于,在网络上查找API和示例代码要容易得多。例如,除了ArduGate(内置了它,可能不是您想要的)之外,我找不到任何访问EEPROM的方法-这是一项常见的任务。因此,除非您希望坚持使用简单的程序,否则最好使用本机语言。


2

我的一个朋友实际上有一个非常强大的坦克机器人,可以通过WiFi通过NodeJS进行控制。150磅重的机器人本身并不完全是“小型机器人”,但是您可能可以从源代码中学到很多东西。它有一个上网本,可以运行网络服务器并与Arduino通讯。您可以在他的Github 项目页面上找到源代码。来自另一台计算机上的Web浏览器的实时控制具有令人惊讶的响应能力。



1

用Javascript 编程AR.Drone 2.0非常有趣。这是一个使用node-ar-drone库使无人机起飞,四处走动,翻转,然后着陆的示例:

var arDrone = require('ar-drone');
var client = arDrone.createClient();

client.takeoff();

client
  .after(5000, function() {
    this.clockwise(0.5);
  })
  .after(3000, function() {
    this.animate('flipLeft', 15);
  })
  .after(1000, function() {
    this.stop();
    this.land();
  });

博客文章NodeBots-JS Robotics的兴起谈到了javascript对机器人技术的优势,特别是将现实世界中的对象和动作建模为可链接的事件过程的自然方式。上面为无人机设置动画的示例代码看起来与使用jQuery为HTML元素设置动画非常相似:

$("#foo")
  .slideUp(300)
  .delay(800)
  .fadeIn(400);

我已经将答案编辑得更具体,并添加了更多上下文。感谢您的反馈。
约翰·怀斯曼

谢谢约翰,这是一个很棒的编辑,只是可以做出面向未来的答案。
Mark Booth

0

还有一个名为Espruino的项目,它是用于低功耗ARM微控制器的JavaScript解释器。它是对tiny-js项目的重写,tiny-js项目是用于Javascript的小型C ++解释器。


0

自问这个问题以来,基于javascript的机器人社区发展迅速,因此在线查找基于javascript的机器人项目可能会有所帮助。例如,https: //burningservos.com背后的博客作者记录了从头开始构建四足机器人的过程,并讨论了该博客作者评估或使用的多个JavaScript库。故障中还有一个“硬件”部分(甚至在AdafruitHackster.io上),人们可以共享基于JavaScript的硬件黑客项目,您可以在其中查看他们使用的库。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.