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

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

この記事では、ロボット開発で使用される最も人気のあるプログラミング言語のトップ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 と ROI に関する真実: AI は本当に成果をもたらすことができるのか?

今日、企業組織はこれまで以上に人工知能 (AI) と機械学習 (ML) の可能性を信頼し、投資してい...

...

肖亜青工業情報化大臣:我が国はAI発明特許の取得数で世界一である

[[410183]] 7月8日のニュース 2021年世界人工知能大会の開幕式で、工業情報化部の肖亜青...

AI はプラットフォーム エンジニアリングと DevEx をどのように強化するのでしょうか?

ヘザー・ジョスリン編纂者:Xing Xuan DevOps を導入している多くの企業にとって、開発者...

...

スタンフォード大学の教授が、専門家以外の人向けにAIの核となる概念を1ページで定義

スタンフォード大学のクリストファー・マニング教授は、AI 分野の中核となる概念を 1 ページを使って...

...

人間の知能と人工知能:どちらが優れているのでしょうか?

人工知能は近い将来、人間の知能を超える可能性を秘めている。テクノロジーは飛躍的に進歩しましたが、AI...

タオバオのメイン検索リコールシナリオにおけるマルチモーダル技術の探究

検索リコールは検索システムの基礎として、効果向上の上限を決定します。私たちが直面している主な課題は、...

単純なアルゴリズム問題からO(1)が何を意味するかを説明する

[[396914]]今日、クラスメートがファングループでアルゴリズムに関する質問をしました。対話のト...

最先端技術の共有:脳の信号を音声に変換するAIアルゴリズムは、失語症の人が正常に話すことを助けることが期待されています

カリフォルニア大学サンフランシスコ校の神経科学者チームは、ネイチャー誌に最近発表した研究で、脳の活動...

2020 年の生体認証市場 - パンデミックによる業界の動向の変化

生体認証技術市場は、COVID-19の流行により大きな影響を受けるでしょう。 接触のみの生体認証を採...

人工知能を理解し、適応する方法

私たちは毎年数百人の学生にデータサイエンスを教えていますが、彼らは皆 AI に魅了され、素晴らしい質...

...

英国はAI大規模モデルの分野で利用するためのスーパーコンピュータの開発に2億2500万ポンドを投資する予定

英国政府は11月2日、国の人工知能能力をさらに強化するため、人工知能研究資源への投資を2023年3月...