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

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

この記事では、ロボット開発で使用される最も人気のあるプログラミング言語のトップ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 の比較分析

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

ブログ    

推薦する

AI チャットボットと自動テストの重要性

近年、銀行、医療、小売、通信などの業界でチャットボットの使用が大幅に増加しています。これにより、私た...

Google が使用する 4 つのデータ指標モデル

この目的のために、市場で一般的なデータ モデルを見つけて整理し、分析することができます。主流のデータ...

...

ディープインテリジェンスとは: 2021 年のディープインテリジェンスのトレンドは何ですか?

人工知能の開発は60年以上前に遡りますが、技術的な理由により、ディープラーニングの出現により再び人工...

Baidu は革命を起こしました!

10月17日午前、百度世界2023大会に、百度創業者のロビン・リー氏が白いシ​​ャツを着て落ち着い...

...

...

陳一然教授の論文が2024 IEEE優秀論文賞を受賞しました! STN-iCNN: エンドツーエンドの顔解析フレームワーク

陳一然教授の論文が賞を受賞しました!この顔認識/分析に関する論文は、2024 IEEE CIS TE...

自動運転における説明可能なAIのレビューと今後の研究の方向性

2021 年 12 月 21 日に arXiv にアップロードされた自動運転のための説明可能な AI...

博士課程新卒者の年収は80万元。AI業界で就職するのは本当にそんなに簡単なのでしょうか?

[[251000]]最近、人工知能(AI)業界が活況を呈しており、この分野の卒業生にとって有望な就...

ImageNet-1K 圧縮 20 倍、Top-1 精度が初めて 60% を超える: 大規模データセット蒸留の転換点

データの圧縮や蒸留というタスクは、ここ数年大きな注目を集めています。データ圧縮方法は、大規模なデータ...

...

...

動画注釈が機械学習モデルのパフォーマンスを向上させる方法

機械学習は近年、特にコンピュータービジョンとビデオ分析の分野で目覚ましい進歩を遂げています。この進歩...