LoginSignup
233
214

ROS2導入&レクチャー

Last updated at Posted at 2019-04-07

概要

主に研究室の学生教育用して作成する.
このページは全体の構成をあらわし,各所へのリンク集とする.
ソースコードをのせ行指定での説明(〇行目は~という意味,みたいな説明)をしているので"Qiitaをより便利にするChrome拡張機能をつくりました"を見ながら拡張機能を入れて行表示できるようにしておくと見やすいかも.

公式チュートリアル

公式チュートリアルがROSのそれと同レベルになり,「これやっとけば大丈夫」になった.特に概念を理解するためのgifが非常によいので,公式チュートリアルのBeginner: CLI Toolsくらいは一読することをすすめる.

目標レベル

本ページは,ROS2はじめての人が順々に勉強していくことを想定している.または,気になって調べた情報を個別にまとめたものでもある.特に初級に書かれているものは学習途中のもので,最終的にはコンポーネントを作成・利用できるようになればよい...ですね.

更新履歴

2023/06/15:応用に[ROS2 + Raspberry Pi](#ROS2 + Raspberry Pi)を追加
2023/06/15:環境にIron Irwiniを追加
2023/03/28:初級初級 -class style-のうちROS2独自メッセージの作成に外部メッセージの取り扱いに関する部分を追加
2023/03/12:中級その他ROS2 launchの使用を追加
2023/03/09:初級初級 -class style-のうちROS2の最小構成service/client:初級 -class styleに「追加 : クラス化したclient2 : callback関数を使わない場合」を追加
2023/01/12:初級のTipsにROS2 + pipenv installを追加

対象

対象読者

  • 学部学生(B3)
    • ROSの存在を知らず,C++言語の知識も不定
  • 学部学生(B4)
  • 大学院生(M1,M2)
    • ROSを用いた研究を遂行中

いずれもROS2は知らない学生を対象とする.

環境

それぞれの違い・変更点はDistributionsを参考のこと.結構重要.

現行
以前使用していたもの
  • ROS2 Eloquent Elusor
    • 2020/11月までサポート
    • 2020/1月より使用開始
      • for 18.04 LTS
  • ROS2 Dashing Diademata
    • 2021/5月までサポート
    • 2019年6月より使用開始
      • for 18.04 LTS

知っといてほしい知識

詳しくは習うより慣れよ.ただ「見たことある」くらいにはしておいてもらい,「どんなものか」という概要を知り自学出来るようになっておいてもらえればよい.

クラス
テンプレート
名前空間
スマートポインタ
lambda関数
std::bind
Modern C++...っぽいなにか
Future
  • 非同期処理でのパターンで,Parameterで関係する.
  • 他に仕事を非同期で任せて結果をもらうので,「今はまだ結果をもらえていない.が仕事は任せ終わった.任せたプロセスから『仕事が終わったらこのオブジェクトに入れとくね!』ってオブジェクトをもらった.だから近い『未来』にこのオブジェクトに結果が入ってるはず.それがFutureオブジェクト!」というイメージのもの.
  • 例えばマルチスレッドプログラミングのFutureパターンを参照.

ROS2基本情報&準備

なぜROS2か

未執筆

  • なぜROSか
  • ROS/ROS2の特徴:メッセージを使った分散処理

ROS2設定

管理者向け

一般ユーザ向け

ROS2レクチャー

それぞれの項目に対して以下を目標に作成

  • 読むのに5分以内
  • やるのに15分以内
  • 入り組んだ話は後に.
    • ただ,すぐに読めるようにリンクで対処

初級

  • 初級 -ROS1 Style-
    • ROS風の書き方.クラスを極力使わない書き方で,とりあえずこちらから?
  • 初級 -class style-
    • クラス化したnodeを使用した書き方.ROS2で推奨するコーディングスタイルへの第一歩.
内容一覧
  1. ROS2に関する基本情報
  2. ROS2プロジェクトの作成
  3. ROS2の最小構成プログラム
  4. ROS2のpublisher/subscriber概要
  5. ROS2の最小構成subscriber
  6. ROS2における時間管理・Rate系とTimer系
  7. ROS2の最小構成publisher
  8. ROS2独自メッセージの作成
  9. 独自メッセージを用いたROS2 publisher/subscriber
  10. ROS2の最小構成service/client
  11. ROS2の最小構成parameter
  12. YAMLファイルによるROS2のパラメータ設定

中級

中級以降は,基本的には「class style」を対象とする.

共有ライブラリとコンポーネントについて

初級では分かりやすさから「ROS1 style」と「class style」の二種類の方法で説明した.実用的にはコンポーネントを作成し使用する.
コンポーネントについては,classでのnode作成(初級のclass style)し,それを共有ライブラリ化,共有ライブラリをコンポーネント化する流れで説明する.
コンポーネントは共有ライブラリとしても使用できるので,とりあえずコンポーネント化しておけばよい.

ROS2 Parameter

その他

応用

ROS2 + Raspberry Pi

  1. 準備

まとめた一般的な情報

その他の異なるテーマで書いた情報庫は以下の通り.

future work

  • actionについて
  • launchについて

参考

233
214
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
233
214