ロボティクス開発者になるための学習パス

Written by Ricardo Tellez

30/10/2023

(以下の文章は人工知能によって翻訳されました。元の文を表示するにはこちらをクリックしてください。)

ロボティクス・デベロッパーを目指しているのですね。ロボットのためのプログラムを作成する人、それがあなたの目標ですね。現在、世界にはロボティクス・デベロッパーが不足していると言えるでしょう。この職業は急成長しており、魅力的な給与も期待できます。(下の画像をご覧ください。それは2022年12月のGlassdoor.comから得られたものです。)

robotics_developer_salary

おそらく、あなたはエンジニアリングの学位を取得していますが、実際の仕事への適用が不足していると感じているのかもしれません。そこで、ロボティクス・デベロッパーになるために必要な実用的なコンテンツをオンラインで探し始めることに決めました。一度コンテンツを手に入れたら、それを追い、知識を獲得するだけのことですね。それでしょうか?

まあ、その通りとも言えますし、そうでないこともあります。このアプローチの問題は、ロボティクスとロボティクスのソフトウェア開発に関するオンラインのコンテンツがあまりにも多いことです。

コンテンツの量(無料と有料の両方)は非常に膨大であり、適切な道筋を提供してくれる人がいない限り、学習プロセスで多くの時間を浪費してしまうでしょう。

したがって、自己学習を効果的に行うために、まず次のことを理解する必要があります:

  • どのコンテンツを選択すべきでしょうか?
  • そして、学習コンテンツをどのように優先すべきでしょうか?

次の投稿では、これらの質問に答えます。ロボティクス・デベロッパーになるためには、どの科目をどの順序で習得する必要があるかを示します。あなたがゼロの知識から始めると仮定しています(つまり、基本的な高校数学のスキルのみを持っています)。

この投稿は、私たちの「Robotics Developer Masterclass」でフォローしている構造と同じです。私たちの6ヶ月の学習計画は、あなたをゼロからロボティクス・デベロッパーに導き、ロボティクス会社でのインターンシップを通じて仕事を見つけるお手伝いをします。したがって、この投稿の学習計画が機能することを保証できます!

0. 前提条件

まず、より複雑な科目を学ぶためのシステムの基礎が必要です。必要な最小限の基本知識は次のとおりです:

これらの科目に関する優れた書籍:

1. ロボットプログラムの基礎

このセクションでは、ロボットプログラミングの基礎スキルを構築します。これには次のトピックが含まれます:

  • C++、詳細な理解。ほとんどのロボティクスの仕事では、優れたC++の知識が必要ですので、できるだけ早く学習を始めて経験を積む必要があります。C++を学ぶ上で重要なポイントは、実際のプロジェクトでの練習に時間を費やすことです。そのため、早く始めれば始めるほど良いです。
  • Gitバージョン管理。Gitは開発者が協力して作業するためのツールです。企業で働く際には「私のコード」という概念は存在しません。あなたのコードは他のエンジニアのコードと連携する必要があります。Gitはすべてのロボティクスプロジェクトでこの協力を容易にするためのツールです。このツールをマスターし、独学で学んでいる場合でもGitを使用してロボティクスプロジェクトを開発してください。
  • ROS2の基礎。ROSはロボティクスの標準です。学習の残りにこのフレームワークを学び、使用してください。ROSもC++と同じ問題があります:理論を早く学ぶことはできますが、実際の学習は異なるロボットと状況で練習を始めたときです。したがって、このツールを基に学習し、学習フェーズ中にできるだけ多くの練習を行いましょう。
    • ROSの基本を学ぶには、パッケージ (packages)、メッセージ(messages)、トピック(topics)、サービス(services)、アクション(actions)の基本的な概念を学ぶことが含まれます。また、URDFを使用したロボットモデリングと変換(TF)の概念も含まれます。ただし、これはROSで知っている必要がある最低限の内容です。
    • どのROSバージョンを学ぶべきでしょうか?今、ROS2を学ぶ必要があります。
  • ロボットのシミュレーション。シミュレーションはロボット開発において不可欠なツールです。ハードウェアを扱いたくない場合、コードのテストを行う場所が必要です。それがシミュレーションです。ROSの世界では、Gazeboシミュレーターでシミュレーションを行う方法を学んでください。これはROSのデフォルトのシミュレーターであり、よく統合されています。

2. 自分のロボットを組み立てる

開発者の仕事を探している場合でも、ロボットのプログラムを書くだけでなく、ロボットの組み立てに関する基本的な知識が必要です。

あなたは自分自身のロボットを組み立てるべきです。基本的なものであっても、様々な部品が物理的にどのように相互作用するかを見ることが重要です。このプロセスは、後でプログラミングに適用できる物理的要素に関する基盤となる知識を提供し、なぜ特定のソフトウェアコンポーネントが必要であり、なぜそれらが機能しないのか、問題が発生した際に問題を特定するのに役立ちます。

少なくとも2つの車輪、エンコーダ、バッテリー、および1つのセンサー(カメラは最も安価なバージョンですが、できればLIDARを含めてください)を持つ車輪付きロボットを組み立てることを目指してください。

ロボットを組み立てたら、ROSのコントローラーを追加する必要があります。しかし、この時点でのあなたのROSの知識は低いでしょうから、他の誰かが開発したROSのコントローラーを持つロボットを組み立て始めることをお勧めします。これにより、リポジトリのクローン、コンパイル、およびそれらのコントローラーのインストールの練習ができます。

この段階でそのロボットのコントローラーを作成しようとすることはお勧めしません。なぜなら、それにはかなりの時間がかかるからです。もちろん、多くのことを学ぶことができますが、他人のコードを読み理解することでプロセスをスピードアップさせることができます。結局、仕事を得た後、このプロセス(リポジトリのクローン、他人のコードの理解、インストールなど)を頻繁に行う必要があるからです!

ロボットについては、NVIDIAボードをベースにしたJetbotまたはNanosaurをお勧めします。これらはあなたが必要とするすべての部品とROSコントローラーを提供しているからです。

3. 上級ロボット制御プログラミング

ここまでで、ロボティクス・デベロッパーに必要な基本的な基盤を身につけています。

ここまでで、ロボティクスの開発者に必要な基本的な要素をマスターしました。次のステップに進んで、その知識を実際のタスクに適用し、ロボットがタスクを遂行するようにします。ロボットのさまざまなスキルを習得し、それをタスクの解決に適用する必要があります。

  • ロボットのナビゲーション、つまりロボットを自律的に移動させる方法
  • ロボットのパーセプション、つまりロボットが環境を認識し、タスクに関連する部分を検出する方法
  • ロボットの操作、つまりロボットが環境のオブジェクトに対して掴んだり押したり解放したりする方法
  • ロボットモーターに制御を追加する方法

4. ロボティクスの基本理論

ここで理論を学ぶ時がきました。あなたはロボティクスの開発で働くつもりであり、既にあなたのために作られた多くの解決策を使用するかもしれませんが、ロボティクスの基本的な理論を理解することは、何かがうまくいかなかった時に何が起こっているのかを理解するために必要です。また、理論を知っていることで、より優れたロボティクスのアルゴリズムを構築することができます。

このセクションには以下が含まれるべきです:

  • モバイルキネマティクス (Mobile Kinematics)
  • アームキネマティクス (Arm Kinematics)
  • カルマンフィルター (Kalman Filters)
  • ロボットダイナミクス (Robot Dynamics)
  • ロボット制御 (Robot Control)
  • パスプランナーアルゴリズム (Path Planner Algorithms)

私は、アルゴリズムを教えながらそれを実装させる教材を探すことをお勧めします。これは、その理論を学び、脳に定着させ、それを自分のロボット実装で使用する内容と結びつける最も効率的な方法だと私は思っています。

5. ロボティクスの開発ツール

これまで、あなたはロボットをプログラムし、動かすことについて多くを学んできました。しかし、それらの知識をロボティクス企業での仕事に応用する際には、プロの環境でのソフトウェア開発に必要なツールも理解する必要があります。再び、あなたは独自のコードを書いているだけではありません。あなたは、フルロボットソフトウェアを共同開発するチームの一部です。そのため、適切なソフトウェア開発のツールの使用方法を学ぶ必要があります。

これらのツールには以下が含まれます:

  • Docker
  • Jenkinsまたは同様のプロセスを自動化するツール
  • ユニットテスト(Unit Tests)
  • 機能テスト (Functional Tests)
  • 継続的統合 (Continuous Integration – CI)

目標は、開発ツールがすべて統合されて、展開、テスト、エラーの検出の完全なパイプラインを持つ方法を理解することです。これが継続的統合です。したがって、継続的統合を実行する方法、GitのプッシュをJenkinsのアクションに統合する方法、コードと一緒にDockerをデプロイしてテストする方法、テストと関連するシミュレーションを実行し、テストの成功に基づくレポートを生成する方法を学ぶ必要があります。

6. 追加の科目

追加のオプションの科目として、以下を学ぶことをお勧めします:

  • ROS1。まだ多くの企業がROS1で作業しているため、その動作方法を知る必要があります。ROS2と非常に似ていますが、ROS1ロボット向けのソフトウェアを作成する際のいくつかの違いを理解する必要があります。
  • ロボットのためのインタフェースを作成するためのウェブ開発。将来のロボットはさまざまな製造業者から提供されるため、ウェブインタフェースはロボットと人間のデバイス間の唯一の普遍的なインタフェースです。したがって、ロボットの状態を表示し、リモートで制御するためのウェブインタフェースを作成する方法を学ぶ必要があります。

完全なスキーマ

robotics_developer_learning_path

TIP: 学習中に実践しましょう

最終的な推薦事項は、このすべての教材を学ぶために、ただ動画を見たり本を読むだけではなく、学習の各段階で教材を実践する必要があるということです。これが科目をマスターできる唯一の方法です。

そのため、ロボットのシミュレーションを提供するソースを見つけるか、少なくともコードをダウンロードして自分の解決策をテストできるgitリポジトリを提供するソースを見つけることをお勧めします。The Constructの無料のロボットシミュレーションのパブリックリポジトリをチェックし、いくつかのシミュレーションをダウンロードして練習することができます。また、無料でインストールなしでどんなコンピューターでも動作するコードとシミュレーションを提供するThe Construct Open Classesをチェックできます。

今すぐ始めましょう!

さて、インターネットで上記の教材を提供する最良のリソースを探すことができるようになりました。これがあなたの計画であるべきです:

  1. それらを確認して、最良の教材を選択するために数日を費やします。
  2. 各科目ごとに選択した教材のリストを作成し、ビデオ/投稿/コースへのリンクを含むドキュメントに記録します。もし本を利用する場合は、今すぐ注文してください。
  3. 次に、各科目を終える予定を詳細に示すカレンダーを作成します。これは特に独学でプログラムを進めている場合には必須で、カレンダーは説明責任の役割を果たします。これは独学の際に最も難しい部分です。
  4. その後、それらの教材に集中して学習を完了させます。リストを再度作成しないでください。そうしないと終わることはありません。リソースの数が膨大すぎます!学習よりも材料をまとめることに集中すべきではありません(それは先延ばしの方法であり、意志力が不足していることを示すサインです)。

もし意志力が弱点である場合…

自分の道のりで最も弱い点は意志力です。自己学習アプローチの主な欠点は、最適な道筋がないことでも、最適な教材を見つけられないことでもありません。それは、計画を最後まで実行する意志を持つことです。これは、自己誘導学習が+80%以上の割合で失敗する場所です。

この落とし穴を避け、あなたをサポートし、励まし、前進させてくれるチームを持ちたい場合、私たちの「Robotics Developer Masterclass」をチェックしてみてください。この6ヶ月のプログラムでは、パスとすべてのリソース、学習をサポートするチューターのグループ、シミュレートされた実際のロボット、プロジェクト、そして卒業後の最終的なインターンシップを提供します。

私たちの「Robotics Developer Masterclass」は、雇用可能性を考慮したプロジェクトベースの学習です。もちろん、ロボティクスの理論も教えますが、ロボティクス開発者としてロボティクス企業で働く際に使用するツールを重視しています。

そして、私たちはプログラム全体を通してあなたをサポートします!ぜひご覧ください!クラスは毎年3月と9月に開始します。この割引クーポンコード(1F862C99)を使用して、Masterclass 2024-Batch 1に登録し、100€の割引を受けてください!

YouTubeで提供しているRobotics Developer Masterclassに関するQ&Aセッションをチェックしてください。

まとめ

これで、ロボティクス開発の仕事を得るためにマスターすべき基本的な知識のリストができました。

やってみてください。次の6ヶ月で、あなたの未来をより良いものに変えることができるでしょう。

最終的な推薦事項:学習プロセス中に、どの科目があなたにとってより興味深いかに注意を払ってください。おそらく、このプログラムで学んだトピックはさまざまな方法で深化させることができます。そして、すべての科目のマスターにはなれないので、自分に最も魅力的な科目に注意を払い、プログラムを終了した後にそれらについてさらに学ぶか、それらの科目に関連する仕事を探すことが重要です。

さあ、自分の宿題をしましょう。未来のロボットはあなたにかかっています!

 

Topics:
Masterclass 2023 batch2 blog banner

Check Out These Related Posts

129. ros2ai

129. ros2ai

I would like to dedicate this episode to all the ROS Developers who believe that ChatGPT or...

read more

0 Comments

Trackbacks/Pingbacks

  1. A Learning Path To Become a Robotics Developer (2023 Guide) - […] (本文は日本語版もあります。こちらをクリックしてご覧ください。)(이 텍스트에는 한국어 버전도 포함되어 있습니다. 확인하려면 여기를 클릭해주세요.) […]

Submit a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Pin It on Pinterest

Share This