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

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

评论

您应该查看这篇文章... 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

因此,您可以使用node.js在c语言中对机器人进行编程,并与之进行接口-它本质上使用JavaScript ajax进行请求,但您也可以使用服务器请求或其他与JavaScript无关的聪明代码。

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

#1 楼

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

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

#2 楼

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

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

评论


$ \ begingroup $
附言-对于刚起步的新兴Robotics.SE网站,我认为是个好问题:)
$ \ endgroup $
–克里斯
2012年11月7日19:39

$ \ begingroup $
好答案,@克里斯。我从其他JavaScript开发人员那里听说过Arduino平台。对于寻求吸引的开发人员来说,这也许是最好的门户药物。
$ \ endgroup $
–桑普森
2012年11月7日20:06

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

#3 楼

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

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

#4 楼

通常,有多种方法可以将node.js与平台一起使用,例如RPi的一种。如果您只搜索它们,还有很多类似的东西。编译并加载到arduino)。

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

#5 楼

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

#6 楼

Microsoft Robotics使用一种名为“分散式软件服务协议(DSSP)”的协议,并且他们根据允许任何人以任何语言实现该协议的许可发布了规范。 DSSP协议与当前的Web标准完全兼容,我认为在JavaScript和NodeJS中实现它是一个好主意。这使您的节点应用程序可以与当今可用的任何DSS机器人技术进行交互。

#7 楼

用Javascript编程AR.Drone 2.0非常有趣。这是一个使用node-ar-drone库使无人机起飞,四处走动,翻转,然后着陆的示例: NodeBots-JS机器人技术的兴起讨论了javascript对机器人技术的优势,特别是将现实世界中的对象和动作建模为可链接的事件过程的自然方式。上面为无人机设置动画的示例代码看起来与使用jQuery为HTML元素设置动画非常相似:

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();
  });


评论


$ \ begingroup $
我已经对答案进行了更具体的编辑,并添加了更多上下文。感谢您的反馈。
$ \ endgroup $
–约翰·怀斯曼
13年8月21日在19:02

$ \ begingroup $
感谢John,这是一个很棒的编辑,只是可以做出面向未来的答案。
$ \ endgroup $
– Mark Booth♦
13年8月22日在8:34

#8 楼

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

#9 楼

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