ベストアンサー
最も簡単な答えは、 C ++とPythonです。 。
私が使用したすべてのロボットプロジェクトは、これらのプラットフォームのいずれかで、いずれかの方法で実行されます。ただし、これは、ロボット工学で何が起こっているのかを実際に示していない限り、不完全な答えになります。
オペレーティングシステム:
- C ++とPython は、間違いなく、最後に使用するプログラミング言語です。 ただし、最近のほとんどのロボットのコードは、ROS(Robot Operating System)と呼ばれるオペレーティングシステム内にあります。 ROSは、ロボットの制御と計画を容易にするための洗練されたソフトウェアアーキテクチャを提供します。 ROS 内にある他のノードが使用できる特定の情報を公開できる、これらのさまざまなノードプログラムを作成します。たとえば、3Dワールドでのドローンの位置を推定するローカリゼーションノードは、他のノードが使用できるようにこの情報を公開します。軌道計画ノードは、これらのノードにサブスクライブして、このデータを取得し、ドローンの次のパスを評価できます。これらの各ノードは、単純な C ++またはPython コードです。
ロボット研究のためのプログラミング:
- シミュレーション:研究段階でのほとんどすべての厳密なシミュレーションとテストが最初に行われます。 C ++またはPython コードに変換される前の MATLAB 。これは、プラットフォームが提供するエレガントな視覚化ツールと便利な事前作成機能によるものです。 MATLAB コードは ROS と統合することもできます。
視覚認識のプログラミング:
- 機械学習モデル:ロボットが何らかの機械学習または深層学習技術を使用している場合、最初に Tensorflow、Keras、PyTorch などのプラットフォームでトレーニングされ、次にトレーニングされますモデルはノードとして ROS に転送されます。たとえば、サーチアンドレスキュードローンは、人間の検出モデルを ROS ノードとして使用します。このノードは、生のカメラ画像ノードにサブスクライブし、すべての人間の検出を公開します。
- 画像処理: OpenCV は、広く使用されている画像処理ツールです。 ROS 内で C ++またはPython と統合されます。たとえば、サッカーロボットは、画像上のすべての色付きボールを検出するためにこのモジュールを必要とします。
ロボットハードウェアのプログラミング:
- ファームウェアプログラミング:ハードウェアレベル FPGA プログラミング、 verilog または VHDL が使用されます。
- ファームウェアまたはマイクロコントローラー: AVR ATMEGAのプログラミングチップは、ハードウェアをより効率的かつ高度に制御したい場合に広く使用されています。より簡単なオプションは、 C言語のラッパーを使用する Arduino マイクロコントローラーを使用することです。 Arduinoでプログラムしてサーボモーターを実行したり、モータードライバーを制御したりするのは非常に簡単です。
- シングルボードコンピューター:さらに必要な場合 ArduinoまたはAtmega が提供するメモリと処理能力よりも、ラズベリーパイまたはビーグルボードを使用します。スパン>。どちらも Ubuntu を ROSのPythonまたはC ++ でサポートしているため、作業が楽になります。
最後に、すべてが ROSプラットフォームのPython、C ++、MATLAB に要約されます。 ROS はロボット工学の分野を征服したばかりなので、クールな新しいロボット工学プログラミングツールのほとんどは ROSとして生まれました。 パッケージ。
回答
私が作成したロードマップは、ロボット工学を学ぶ旅に役立つかもしれません。この質問はよく聞かれます。
ロードマップには4つのレベルがあり、各レベルは4つのコアコンセプトに焦点を当てています。
ウォームアップレベル
- 学ぶコーディング:少なくとも1つの便利なプログラミング言語の取得を開始します。 ArduinoIDEは良いです。Pythonは素晴らしいです。 C / C ++は素晴らしいでしょう。 私の提案はPython です。これにはいくつかの理由があり、ロードマップの後半でその理由がわかります。
- 電子機器の学習:基本的な電子機器の構築を開始します回路。 LEDを点灯するのと同じくらい簡単です。次に、さらに多くのLEDを点灯します。簡単な信号機を作ります。スイッチを実装します。電圧、電流、抵抗、トランジスタ、直列および並列回路がどのように機能するかの背後にある理論的アイデアを学びます。センサーとサーボモーターも調べてください!
- 基本的な組み立てを学びましょう:子供の頃、おもちゃを作ったり、ものを作ったりするのが大好きでした。ここでも同じようにします。木、アクリル、繊維、またはプラスチックを使用していくつかの基本的な構造を作成する方法を学びます。
- マイクロコントローラーと統合する:上記の知識がある概念については、基本的なマイクロコントローラーでテストしてみてください。結局のところ、回路を「反応」させたいのです。愛好家や初心者の間で最も人気のある選択肢は、 Arduino を使用することです。 Arduinoは、基本的な反応回路のコーディングと実装のプロセスを本当に簡素化しました。
(リソース:YouTube、Khan Academy、Code、Coursera、Udemy)
初心者レベル
- オブジェクト指向プログラミングの学習:ロボット工学でコーディングすることだけでなく、適切にコーディングする方法。オブジェクト指向プログラミング(OOP)は成長するための途方もない筋肉であり、これを早期に実行できるほど、将来自分自身に感謝するようになります。 OOPはPython専用ではありません。ただし、Pythonでは、これらを簡単に実装して練習することができます。 OOPを通じて、クラス、メソッド、継承などについて学習します。これは、機能的でモジュール式の効率的なコードを作成するための優れた手法です。
- 学習する物理学、確率、線形代数:幼児のロボット工学者から青年期に成長するにつれて、コミュニティの他の人がロボット工学をどのように書き、読み、話しているかを知ることも重要です。このロボット工学言語は、物理学、確率、線形代数を多用しています。はい、学校や大学ではこれらの科目を楽しんでいないかもしれませんが、必要な場合は必要だと信じてください。ロボット工学に真剣に取り組んでいます。マトリックスについて知らなければ、コンピュータビジョンを行うことはできません。物理学を知らずに経路計画を行うことはできません。確率を知らずに人工知能や機械学習を行うことはできません。
- より複雑なコンピュータースキル:では、それはどういう意味ですか?ロボット工学の初心者の多くは、隣にペンギンがいるこの新しいエイリアンのようなオペレーティングシステムを学ぶ必要があることに困惑します(私もそうです!)。 Linux オペレーティングシステムについて話しています。ロボット工学をより深く理解しようとしている人にとっては、Linuxに精通していることが不可欠です。ロボット工学用に開発された多くのライブラリ、パッケージ、およびソフトウェアは、Linux環境で非常に簡単かつ効率的に配布されます。人気のあるLinuxOSの選択肢: Ubuntu
- 組み込みシステム:これでコーディング、回路、理論的概念、およびLinuxに精通していることについての知識が豊富な場合は、ラップトップよりも小さいコンピューターにこれらを実装する必要があります。ミニコンピューターで、上記の の概念と一緒にウォームアップレベルの概念を試してみてください。 RaspberryPiやBeagleBoneなど。いくつかのセンサー、サーボ、カメラをこれらの最小コンピューターの1つに接続し、何かを感知、移動、検出するためのコードを記述します!
(リソース:YouTube、Khan Academy、Code、Coursera、MIT OCW)
中級レベル
- 理論的基礎を開発する:ロボット工学のどの分野に興味があるのか、その背後にある理論についてさらに学ぶ必要があります。 ロボットアーム操作(数学と制御)、知覚(コンピュータービジョン、線形代数)について学習します、行列)、機械学習/人工知能(確率、統計、数学)。以前の概念のいくつかがこれらのコアロボット分野の基本であることがわかりますか?
- 高度なライブラリを使用する:次に機械を実装する必要がありますロボットの学習および/またはコンピュータビジョンアルゴリズム。結局のところ、ロボットは見て、考えて、学ぶことができるはずですよね?Pythonには、機械学習とコンピュータービジョンアルゴリズムを実装するために作成された驚くべきライブラリがあります。テンソルフローとOpenCV。同様に、Pythonでも多くのAIを実践できます。もちろん、C / C ++でも同じことができます。ただし、ここでは一貫性を保つようにしています。
- ROSに慣れてください:上記のすべての知識があれば、優れた学ぶべきミドルウェアは、ロボットオペレーティングシステム(ROS)です。最初に拾うのは少し難しいかもしれません。ただし、ROSは、あなたが持っていないロボットで高度なアルゴリズムやシミュレーションをテストするための扉を開きます。クワッドコプターを飛ばしたいですか?または、マップ内でロボットを自律的にナビゲートしますか?産業用アームに物体を拾わせるのはどうですか? ROSでは、Gazeboという名前のシミュレーション環境を介してこれを行うことができます。
- その他のCAD:複雑なロボットの開発と設計に興味があるかもしれません。 BlenderやSolidWorksなどの 3D設計ソフトウェアの学習を開始して、独自のロボットを設計できるようにします。
エキスパートレベル
- 学習と成長を続ける:上記の各概念はそれ自体の長所によって無限であり、ロボット工学の専門家になるには、時間をかけて学習を続ける必要があります。オブジェクト/画像をより適切に検出するには、より多くの分類子またはモデルを学習する必要があることに気付くでしょう。または、ソリューションを最適化するための制御アルゴリズムについてさらに学ぶ必要があるかもしれません。
- その他のソフトウェア/ハードウェア:関心のある分野に応じて専門分野では、コーディング、アルゴリズム開発、ROS、および/またはロボット設計をますます行うことになります。
最後に、私は間違いなく専門家ではないため、それに多くを追加することはできません。 。確かに言えることは、自分が何を知らないのかわからないということです。覚えておくべき重要なことの1つは、 始めて一貫性を保つ=)