2011-11-13 137 views
48

我有一个Arduino Uno一个机器人类型的项目,并作出长话短说,我正在与一些AI算法实验。然而,我需要使用NumPy/SciPy来实现一些非常简单的高级矩阵算法,但它们在C或C++中完全是一场噩梦。即使有这些图书馆,这只是变得荒谬。有没有办法将Python代码“编译”到Arduino(Uno)?

有没有什么办法可以做到在Python这个项目?我想我听说Mega具有这种能力,但我有一个Uno,并且在这一点上替换它并不是一个选项(这会使项目返回相当多)。另外,我听说了有关使用Python进行通信的一些问题通过USB连接到Arduino,但是当它正在运行时,我无法插入USB电缆。我需要能够上传程序并完成它。

是否有任何选择了那里,或者有我只是走进了死胡同?

+2

这是XY问题吗?你想知道如何在Arduino上有效地使用矩阵(使用C++),还是想知道如何编译python? – Pubby

+2

我可能会误解,但这不仅仅是将python编译为avr-c的问题吗? – danem

+0

这更多的是线性代数拟合问题。我正计划实施一些最小二乘拟合,以确定发送给设备的功率与从传感器接收到的输入之间的关系。我必须实现这个算法的多个阶段 - 如阶段1 =移动那里;阶段2 =抢东西;等等。这些阶段中的每一个都有不同的输入和输出组合,所以我正在使用的矩阵的大小将不会以通常的方式在“C”中定义。 –

回答

19

Dr. Graeme Cross在本年PyConAU有一篇关于使用Python与机器人技术的讨论Ah! I see you have the machine that goes 'BING'!

他推荐在微控制器板上使用Python的唯一选择是PyMite,我认为它的名字也是Python-On-A-Chip

它已被移植到一系列的电路板 - 具体而言,他提到了Arduino Mega,你说的不是你的选择,但它有可能在其他Arduino电路板上得到支持。

然而,因为它是一个Python的“不包括电池”的版本就非常有可能,你将有一个真正的问题越来越numpy的/ SciPy的等运行起来了。

正如其他海报建议,在C实现可能是阻力最小的路径。

更新:再次,不专门为Arduino,但pyMCU看起来提供蟒蛇芯片。作者说,如果有足够的兴趣,他可能会考虑开发一个Arduino版本的pyMCU。

+8

“Micro Python”的一个新的kickstarter项目也许会引起一些人的兴趣。 (http://www.kickstarter.com/projects/214379695/micro-python-python-for-microcontrollers) –

+0

我相信微型Python项目使用了一个特殊的板子,并没有移植到Arduino。他们确实有Python 3 .. – Gadi

3

我已经开始在C++上编写“Little Python”(称为Pyxie - Py CC-Pyc-C上的一个播放)编译器,其目的是编译Python的一个合理的子集,使其可以运行在一个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++,然后将其编译到一个十六进制文件,该文件可以加载到您的设备上。

还有很长的路要走之前它是有用,但它正在进步,并确实有一个路线图/等。

特别是Micropython(和PyMite)的一个关键的区别是,它的设计编译成设备太小,选择运行实施。 (这也意味着它与ShedSkin非常不同,而Python到C++编译器的目标是更大的执行环境)

+1

非常酷!我期待着看到这是如何随着时间的推移而演变的。 – kevinsa5

相关问题