我有一个带有Arduino Uno的机器人类型项目,总而言之,我正在尝试一些AI算法.但是,我需要实现一些使用NumPy/SciPy非常简单的高级矩阵算法,但它们在C或C++中是一个彻头彻尾的噩梦.即使有图书馆,这也是荒谬的.
有什么方法可以用Python做这个项目吗?我想我听说Mega有这个功能的东西,但是我有一个Uno,并且在这一点上替换它不是一个选项(这会使项目恢复很多.)另外,我听说过使用Python进行通信的一些事情通过USB连接到Arduino,但是在运行时我无法连接USB电缆.我需要能够上传程序并完成它.
那里有没有选择,或者我刚刚走到尽头?
今年有一个关于在机器人技术中使用Python的讨论,PyConAU称为啊!我看到你有'BING'的机器!由格雷姆克罗斯博士.
他推荐在微控制器板上使用Python的唯一选择是PyMite,我认为它也是以Python-On-A-Chip的名字命名的.
它已被移植到一系列电路板上 - 特别是他提到了Arduino Mega,你说它不是你的选择,但它可能在其他Arduino电路板上得到支持.
但是,因为它是一个"不包含电池"的Python版本,所以很可能你会遇到一个真正的问题,让numpy/scipy等运行起来.
正如其他海报所建议的那样,在C中实施可能是最不具有抵抗力的道路.
更新:再次,不是专门为Arduino,但pyMCU看起来在芯片上提供python.作者表示,如果有足够的兴趣,他可能会考虑开发一个Arduino版本的pyMCU.
我已经开始研究C++的"小Python"(称为Pyxie - Py CC-Pyc-C上的一个游戏)编译器,其具体目的是将一个合理的python子集编译为C++,以便它可以在arduino上运行.
这在编写时(0.0.16)还远未完成,但它目前可以编译一小部分python - 足以运行arduino"blink"示例.为了支持这一点,它有一个编译配置文件 - 本质上意味着"使用arduino工具链进行编译".
它可以编译的程序如下所示:
led = 13 pinMode(led, OUTPUT) while True: digitalWrite(led, HIGH) delay(1000) digitalWrite(led, LOW) delay(1000)
这将解析,执行分析(如类型推断等),编译为C++,然后将其编译为hex文件,您可以将其加载到您的设备上.
在它有用之前还有很长的路要走,但它正在取得进展并且确实有路线图等.
PyPI - http://pypi.python.org/pypi/pyxie
主页 - http://www.sparkslabs.com/pyxie/index.html
特别是与Micropython(和PyMite)的一个主要区别在于,它被设计为编译为太小而无法运行任何实现的设备.(这也意味着它与ShedSkin之类的东西截然不同,而Python到C++编译器的目标是更大的执行环境)