60

Arduino Unoを使ったロボット型プロジェクトがあります。簡単に言うと、いくつかのAIアルゴリズムを試しています。ただし、 NumPy / SciPyを使用すると非常に単純な高レベルのマトリックスアルゴリズムを実装する必要がありますが、CまたはC++ではまったく悪夢です。そこに図書館があるとしても、これはばかげているだけです。

Pythonでこのプロジェクトを実行する方法はありますか?Megaがこの機能を持っていることについて何か聞いたと思いますが、私はUnoを持っており、それを置き換えることは現時点ではオプションではありません(プロジェクトをかなり後退させるでしょう)。また、Pythonを使用して通信することについて何か聞いたことがありますUSB経由でArduinoに接続しますが、実行中はUSBケーブルを接続できません。プログラムをアップロードして、それを実行できるようにする必要があります。

そこにオプションはありますか、それとも行き止まりになりましたか?

4

4 に答える 4

22

今年のPyConAUでは、Pythonをロボット工学で使用することについての話がありました。「BING」になるマシンをお持ちだと思います!グレイムクロス博士による。

彼がマイクロコントローラーボードでPythonを使用するために推奨した唯一のオプションは、 Python-On-A-Chipという名前でも呼ばれるPyMiteでした。

さまざまなボードに移植されています。具体的には、Arduino Megaはオプションではないとおっしゃっていますが、他のArduinoボードでサポートされている可能性があります。

ただし、これはPythonの「バッテリーが含まれていない」バージョンであるため、numpy/scipyなどを起動して実行する際に実際に問題が発生する可能性が高くなります。

他のポスターが示唆しているように、Cでの実装は最も抵抗の少ない道かもしれません。

更新:繰り返しますが、Arduino専用ではありませんが、pyMCUはチップ上にPythonを提供するように見えます。著者は、十分な関心があれば、pyMCUのArduinoバージョンの開発を検討するかもしれないと述べています。

于 2011-11-15T00:31:53.860 に答える
9

私は「LittlePython」からC++(Pyxieと呼ばれる-Py CC- Pyc-Cでのプレイ)コンパイラの作業を開始しまし。具体的な目的は、Pythonの正常なサブセットをC ++にコンパイルして、arduinoで実行できるようにすることです。 。

これは、執筆時点(0.0.16)では完全にはほど遠いですが、現在、Pythonの非常に小さなサブセットをコンパイルできます。これは、arduinoの「点滅」の例を実行するのに十分です。これをサポートするために、コンパイルプロファイルがあります。これは本質的に「arduinoツールチェーンを使用してコンパイルする」ことを意味します。

コンパイルできるプログラムは次のようになります。

led = 13

pinMode(led, OUTPUT)

while True:
  digitalWrite(led, HIGH)
  delay(1000)
  digitalWrite(led, LOW)
  delay(1000)

これにより、解析、分析(型推論など)が実行され、C ++にコンパイルされます。その後、C ++は、デバイスにロードできる16進ファイルにコンパイルされます。

役に立つまでには長い道のりがありますが、それは進歩しており、ロードマップなどがあります。

特に、Micropython(およびPyMite)との主な違いは、どちらの実装も実行するには小さすぎるデバイスにコンパイルするように設計されていることです。(これは、PythonからC ++へのコンパイラがより大規模な実行環境を対象としているShedSkinのようなものとは非常に異なることも意味します)

于 2015-08-03T13:03:15.403 に答える
1

Arduino unoで直接実行するPythonスクリプトを取得するのは難しいでしょう。理由は、それが解釈された言語であるため、プレーンテキストスクリプトに加えて、オンボードのインタープリターが必要になるためです。おそらく、arduinounoのすべてに十分なメモリがないでしょう。

最善の方法は、Pythonスクリプトをネイティブマシンコードにコンパイルする方法を見つけることです(これがC / C ++の動作方法です)。私は他のプラットフォームでそのようなことをするプロジェクトを見てきましたが、(私が知る限り)Arduinounoでそれを成功させるものはまだありません。

詳細については、 http://www.toptechboy.com/using-python-with-arduino-lessons/にアクセスしてください。

これがお役に立てば幸いです。ありがとう!

于 2018-09-11T07:59:40.310 に答える
0

これは直接的な解決策ではありませんが、あなたの状況では、私があなたなら、AIプログラムを自分のコンピューターで作成し、残りはArduinoで作成します。その後、AIプログラムを使用してフラスコサーバーを作成しました。次に、ルーターからローカルマシンにポートフォワードします。最後に、Arduinoからサーバーにリクエストを送信します。

于 2021-01-27T05:05:26.103 に答える