人工知能ロボットの開発にはどのプログラミング言語を選択すればよいでしょうか?

人工知能ロボットの開発にはどのプログラミング言語を選択すればよいでしょうか?

この記事では、ロボット開発で使用される最も人気のあるプログラミング言語のトップ10を見ていきます。それぞれのメリットとデメリット、また使用する理由や使用しない理由について説明します。学べるプログラミング言語は世界に1,500以上あります。以下に、今日のロボット工学で最も人気のある 10 のプログラミング言語を示します。それぞれの言語には異なる利点があります。著者は自身の経験に基づいて、それらの利点を優先順位の低いものから高いものの順にランク付けしています。

これは、ほとんどの新人ロボット研究者がキャリアの中で少なくとも一度は考える質問です。残念ながら、これも明確な答えがない質問です。

Stack Overflow、Quora、Trossen、Reddit、Research Gate などのロボット工学の専門家やコミュニティのフォーラムで「ロボット工学のプログラミング言語は何ですか?」と質問すると、さまざまな答えが返ってきます。基本的なロボット工学のスキルに関する記事で説明したように、ロボット工学者にとって最も重要なことは、特定の言語で測定されない「プログラミングの考え方」を養うことです。多くの点で、最初にどのプログラミング言語を学ぶかは重要ではありません。重要なのは、プログラム的に考えることでスキルを向上し続けることです。

本題に戻り、この記事では、ロボット開発で使用される最も人気のあるプログラミング言語のトップ 10 を紹介します。それぞれのメリットとデメリット、また使用する理由や使用しない理由について説明します。学べるプログラミング言語は世界に1,500以上あります。以下に、今日のロボット工学で最も人気のある 10 のプログラミング言語を示します。それぞれの言語には異なる利点があります。著者は自身の経験に基づいて、それらの利点を優先順位の低いものから高いものの順にランク付けしています。

10. BASIC / パスカル

私がこれまでに学んだ2つの主なプログラミング言語は、BASICとPascalでした。しかし、私が彼らをこのリストに載せた理由はそれではありません。それどころか、産業用ロボットのプログラミングに適した言語です。 BASIC は初心者向けに設計されているため、開発者にとって入門しやすい言語です。

Pascal はプログラミングの実践を改善することを目的としており、ポインターなどの構造を考案し、BASIC 以降の多くのプログラミング言語の基礎となりました。今日では、どちらの言語も「日常使用」にはやや時代遅れになっています。しかし、一般的には、かなりの量の低レベルのコーディングを行う必要があるか、他の産業用ロボット言語に精通している必要があるため、それらを知っておくと役立ちます。

9. 産業用ロボット言語

事実上すべてのロボット製造業者は、独自の特定の制限的なロボットプログラミング言語を構築しており、これは産業用ロボットの世界で長い間問題となってきました。 Pascal を学習すると、それらのいくつかに精通するようになります。ただし、別のロボット プラットフォームでコーディングを開始する場合は、別の言語を使用する必要があります。

例えば、ロボットアームの分野で強い企業であるABBはRAPIDという言語システムを採用しています。ドイツのKUKAは社名と同じKUKAという言語を採用しています。ComauはPDL2、安川電機はAdvise、川崎重工はASを採用しています。現時点では、Fanuc ロボットは Karel を使用し、Staubli ロボットは VAL3 を使用し、Widespread Robots は URScript を使用しています。

最近、業界では ROS などのより標準化された言語の選択肢をプログラマーに提供し始めています。それでも、技術者としては、メーカーのプログラミング言語を使用する必要があります。

8. リスプ

LISP は世界で 2 番目に古いプログラミング言語です (FORTRAN の方が古いですが、わずか 1 年です)。他の言語に比べるとあまり広く使用されていませんが、それでも人工知能プログラミングの分野では最も重要な言語です。 ROS の一部は LISP で書かれていますが、実際に ROS がどのように書かれているかを知る必要はありません。

7. ハードウェア記述言語 (HDL)

ハードウェア記述言語は、基本的に電気的な記述のためのプログラミング手法である。これらの言語は、FPGA (フィールド プログラマブル ゲート アレイ) を使用したプログラミングに慣れているロボット工学者にとっては非常に一般的です。 FPGA により、シリコン チップなしで電子ハードウェアを開発することが可能になり、開発がより高速になり、要求が軽減され、改善されたオプションが実現します。ハードウェアをシミュレートしない場合は、おそらく HDL を使用することはないでしょう。

存在は合理的ですが、HDL を理解する必要があり、他のプログラミング言語とは異なります。 HDL のすべての操作は、プロセッサベースの言語のように順番に実行されるのではなく、並列に実行されます。

6. 組み立て

アセンブリでは、プログラミングの最初のレベルである「0と1」でプログラミングできます。以前は、ほとんどの低レベルハードウェアはアセンブリでプログラムする必要がありました。 Arduino やその他の類似のマイクロコントローラの登場により、C/C++ で低レベルで効果的にプログラミングできるようになりました。つまり、平均的なロボット工学者にとってアセンブリの重要性は低下する可能性があります。

5. MATLAB

MATLAB とそのオープンソースの類似製品である Octave は、データの調査や制御システムの作成に使用する言語として、一部のロボット工学者の間ではよく知られています。非常に有名な MATLAB Robotics Toolbox もあります。 MATLAB のみを使用してロボット システム全体を構築した人を知っています。したがって、データを分解したり、高度なグラフを作成したり、制御システムを実装したりする必要がある場合は、MATLAB を学習する必要がある可能性が高くなります。

4. C#/.NET

C# は、Microsoft が提供する制限付きのプログラミング言語です。 C#/.NET は主に Microsoft Robotics Studio に提供されており、Microsoft Robotics Studio ではこれを基本言語として使用しています。このフレームワークを使用する場合は、C# を学習する必要があります。それでも、最初に C/C++ を学習すると、コーディング スキルも向上します。

3. ジャワ

電子設計エンジニアとして、一部のソフトウェア エンジニアリング スクールが最初に学ぶプログラミング言語として JAVA を教えていることに驚きました。

Java は基礎となるストレージ機能をプログラマーから「隠す」ため、Java プログラムの要求は少なくなりますが、コードがどのように処理されるかについてはあまり分からないということになります。ソフトウェア エンジニアリングの基礎からロボット工学の将来の探求まで、Java を学習したことがある可能性は十分にあります。

C# や MATLAB と同様に、Java はインタープリタ言語であり、機械語コードに組み込まれません。代わりに、Java 仮想マシンは実行時に命令を解釈します。理論的には、Java 仮想マシンに基づいて、Java を使用すると、異なるマシンで同様のコードを使用できます。しかし、実際にはこれは一般的には使用されておらず、コードの実行速度が遅くなる場合があります。しかし、Java プログラミング言語はロボット工学の研究では非常に人気があるため、必要になる場合があります。

2. パイソン

ロボット研究の分野では、Python が重要な位置を占めています。その理由の 1 つは、ROS の 2 つの主要なプログラミング言語が Python (および C++) である可能性が最も高いです。 Java と同様に、インタープリタ型言語です。しかし、Java とは異なり、Python 言語は主に使いやすさに重点を置いています。 Python では、変数の型の定義やキャストなどの日常的な作業に多くの時間を費やす必要はありません。さらに、無料のライブラリが多数あるため、基本的な機能を実装する必要がある場合に「車輪の再発明」を行う必要がありません。また、C/C++ コードとの簡単なバインディングが可能になるため、実行コードの重い部分のパフォーマンスをこれらの言語に組み込むことができ、パフォーマンスの低下を回避できます。より多くの電子機器に Python が「すぐに使える」状態 (Raspberry Pi など) で搭載されるようになると、ロボット工学の分野でも Python が使われるようになるでしょう。

1. C/C++

ロボット開発に最適なプログラミング言語は C++ です。多くの人は、C と C++ がロボット科学者にとって良い出発点であると考えています。なぜでしょうか? かなりの数のハードウェア ライブラリがこれらの言語を使用しているためです。これらは低レベルのハードウェア上で動作し、リアルタイムのパフォーマンスを可能にし、非常に成熟したプログラミング言語です。

今日では、C++ の方が実用性が高いため、おそらく C++ がより頻繁に使用されるでしょう。 C++ は C の拡張です。特に C で書かれたハードウェア ライブラリを見つける場合、基本的な C を学ぶことで多くのことを得ることができます。 C/C++ は Python や MATLAB ほど簡単に習得できるものではありません。 C を使用して同様の機能を実行すると、おそらくかなり時間がかかり、より多くのコードが必要になります。それにもかかわらず、ロボットはリアルタイムのパフォーマンスに大きく依存しているため、ロボット工学者の間では、これらは「標準」ロボットプログラミング言語のままです。

では、どちらを学ぶのが良いのでしょうか?

ロボット向けの人気プログラミング言語トップ 10 をリストしたからといって、すべてを学ぶ必要があるわけではありません。最も重要なことは、自分にとって、そしてもちろんロボットのハードウェアに適した言語を見つけることです。実用性に重点を置くためには、プログラムを迅速かつ効率的に作成できる言語が必要です。

したがって、まずは Python を学ぶことをお勧めします。これは私の経験に基づいたものです。もちろん、まずは自分に合った言語を学ぶこともできます。いずれにせよ、Python は学習しやすい言語であり、学習に役立つライブラリが多数あり、非常に強力です。数日間で Python を習得し、ほとんどのプログラミングニーズにすぐに適用した経験豊富なプログラマーがたくさんいると聞きました。 Python を学習した後は、ガイドとして C を学習し、その後 C++ を学習することをお勧めします。ロボット ハードウェア ドライバーの非常に主要なインターフェイスとインターフェイスする必要があるためです。

<<:  PaddlePaddle と TensorFlow の比較分析

>>:  程偉:スマート交通に投資し、世界クラスのモデル都市を構築する

ブログ    
ブログ    

推薦する

...

マイクロソフトがOpenAIを救わなければならなかった6つの理由

メアリー・ブランスコム編纂者 | Yan Zheng生成型AIの寵児であるOpenAIは最近、混沌と...

自動運転車が「すべての人を助ける」ことができるようになるには、15の課題を乗り越える必要がある

[[251351]]自動運転車の将来は、交通手段に革命を起こすと予測されていた電動スクーターの歴史と...

...

...

アップルの自動運転テストカーは8月に2回の軽微な衝突事故を起こしたが、どちらも事故の原因ではなかった

海外メディアAppleInsiderによると、今年8月、アップルの自動運転車群の2台がカリフォルニア...

CPU、TPU、GPU、DPU、QPUについて学ぶ

AIの人気に伴い、CPU、TPU、GPU、DPU、QPUなどの略語がさまざまなメディアで飛び交ってい...

Java プログラミング スキル - データ構造とアルゴリズム「ハフマン ツリー」

[[389315]]基本的な紹介n 個のリーフ ノードとして n 個の重みが与えられ、バイナリ ツ...

...

PaddlePaddle パノラマビューが初めて公開され、11 の新機能とサービス ハードコア リリース

ディープラーニングが注目を集めています。 4月23日、北京で第1回WAVE SUMMIT 2019デ...

人工知能は、マルチドメイン畳み込みニューラルネットワークを通じて、JPEG二重圧縮画像内の偽造領域を特定します。

人工知能がマルチドメイン畳み込みニューラル ネットワークを介して JPEG 二重圧縮画像の偽造領域を...

人工知能の時代では、女の子よりも男の子の方が失業する可能性が高いです!

ジョークを一つ言わせてください。今、路上で物乞いをしている人を見かけたら、ぎこちなくポケットを触り、...

Kubernetes上の機械学習プラットフォームの実践

背景これまで、音楽アルゴリズムのモデル トレーニング タスクは、物理マシン上で開発、デバッグ、スケジ...

Baidu CTO 王海峰氏:PaddlePaddle ディープラーニング プラットフォームは新しいインフラストラクチャの重要な部分です

産業インテリジェンスの急速かつ徹底的な進歩に伴い、人工知能インフラの構築は不可欠となっています。 5...

Ali Wensheng ビデオが Gen-2 と Pika に挑戦、1280×720 の解像度で圧迫感なし、3500 万のテキスト ビデオ表示効果

ヴィンセントのビデオはどの程度詳細にできますか?最近、アリババの調査により、1280×720 の解像...