ゼロからのROS1

ROS1を学ぶ全体像

大阪大学 中島優作


← シリーズ一覧に戻る

ROSの要素分解

ROSを使うには以下の知識が必要

ROS環境構築

(Docker)

Linux

(コマンド,仕組み)

ロボット制御

(運動学,動力学)

リアルタイム処理

(優先度設定など)

プログラミング,実装

(Python, C++)

ROSの使い方

(ツール,コマンド)

ROSのはじめの一歩

最初は飛ばし飛ばしでok

スキップ(先人のを利用)

ROS環境構築

(Docker)

GPTに聞く

Linux

(コマンド,仕組み)

本スライド+教科書

ロボット制御

(運動学,動力学)

スキップ(まずは使わないものを作る)

リアルタイム処理

(優先度設定など)

専門家に相談(どう作るかで難易度が変動)

プログラミング,実装

(Python, C++)

本スライド+教材

ROSの使い方

(ツール,コマンド)

ROS 2ではじめよう
ROS 2ではじめよう
次世代ロボットプログラミング
ROS2とPython
ROS2とPythonで作って学ぶ
AIロボット入門

参考書籍

  1. ROS 2の詳しい解説書
  2. 初心者向け実践書

オンライン環境&教材

The Construct Rosject
The Construct Cource

The Construct

  • 無料アカウントでも1日8時間まで仮想環境が利用でき、最初の学習には十分
  • ROS1/2の両方に対応
  • 無料でも多くの教材があり、手を動かしながらROSを学べる

ローカル環境構築

手元のロボットを動かすにはローカル環境が必須です、オンライン教材でROSに慣れたらこっちに移行してください

環境構築はトラブルが多く、解決にはLinux,Docker,ROSの知識を総動員します

最初は先人が作ったものを活用してください(僕も最初はそのように始めました)↓

必要な環境とソフトウェア

  • OS: Ubuntu 20.04以降(22.04, 24.04もok)
  • Dockerを事前にインストール

WSLを使いたい方への注意

  • Windows上のWSLでの構築も可能ですがメモリ消費が多くトラブルが多いので推奨しません
  • どうしても使う場合はwin11以降,デスクトップPC,CPUはi7相当,メモリは32GBを推奨します
  • それ未満の性能だとビルド中にフリーズするなどのトラブルがある可能性があります
  • DockerDesktopを事前にインストールしておいてください
  • DockerDesktopとWSLの接続には設定→Resource→WSL integrationで使用したいWSLをONにします

ひとまず勉強用のローカル環境が欲しい場合

  • 勉強用ならまずはこれがオススメです
  • トラブルはほぼないですが、VNC越しのため実機ロボットには使えないです(あくまで勉強用)

実機を動かすローカル環境が欲しい場合

(他にも色々ありますが)僕の公開パッケージpowder_grindingを使っても良いです


user@user:~$ git clone -b develop https://github.com/quantumbeam/powder_grinding.git
user@user:~$ cd powder_grinding/env
                    
  • 環境構築で使うリポジトリをクローンします
  • developブランチの方が機能が多いです
  • また、環境構築はenvディレクトリ内で行うので、事前に移動しておいてください

powder_grindingでDockerイメージの作成


user@user:~/powder_grinding/env$ export UBUNTU_PRO_TOKEN="YOUR_TOKEN_HERE"
user@user:~/powder_grinding/env$ ./BUILD-DOCKER-IMAGE.sh
                    
  • 事前にUbuntuProのトークンの入力が必要です
  • ROS1を構築するUbuntu20.04はすでにサポートが終了しているのですが、UbuntuProを設定することでセキュリティリスクを避けることができます
  • アカウント作成の後にダッシュボードに表示されるトークンを環境変数(exportのコマンド)で登録しておきます
  • その後、BUILD-DOCKER-IMAGE.shを実行でDockerイメージの作成が開始されます

powder_grindingでコンテナの起動とROSのビルド


user@user:~/powder_grinding/env$ ./RUN-DOCKER-CONTAINER.sh
root@powder_grinding_ros:~/catkin_ws$ ./INITIAL_SETUP_ROS_ENVIROMENTS.sh
root@powder_grinding_ros:~/catkin_ws$ source /opt/ros/noetic/setup.bash
root@powder_grinding_ros:~/catkin_ws$ source devel/setup.bash
                    
  • Dockerイメージの作成後にDockerコンテナを起動します(RUN-DOCKER-CONTAINER.sh)
  • ターミナルの環境がDockerコンテナ内に移動しますので、ROSの環境のビルドをします(INITIAL_SETUP_ROS_ENVIROMENTS.sh)
  • ROS環境のビルド結果を反映します(source /opt/ros/noetic/setup.bash, source devel/setup.bash)

ROSとは

  1. ロボットシステム開発プラットフォーム
  2. 分散システムのミドルウェア
  3. 豊富なライブラリとツール群

5分で分かるROSとは何か?by ROSJP

ROSではまりがちなこと

  1. オープンソースだけど使い方が分からない
  2. ごちゃごちゃいじっている間に環境が壊れて動かなくなった
  3. 動いたけど中身がブラックボックスで応用が利かない
  4. 上記で相談できる人がいない

はまった時の対処法

  1. 使い方 → チュートリアル or 教材 or LLM
  2. 相談 → コミュニティ or LLM
  3. 環境 → 仮想環境でやり直せる
  4. 実装 → 個人や組織に依存。。。

実装を学ぶ方法は組織でのOJTに依存してきた

このスライドではなるべく実装を扱います→

1~3は以下↓

1. チュートリアルと教材の例

2. 困ったときは

3. 環境構築

本スライド集では実装を学ぶ

以下の2ステップを学ぶところから

本スライドでは前準備として
ROSのプログラムの基本的な仕組みを紹介 →

ROSのプログラム単位:ノード

ROSノード
  • 1ノード=1プロセス
  • ノードの設計はユーザー依存、プログラミングのクラス設計と同じ
  • ROSを公式で使っているUniversalRobotやRealSenseの設計は非常に上手いので参考になります

うまい設計をいきなり真似するのは無理なので最初はツギハギで良いと思います

ノード間の通信

全画面表示

ROSパラメータ

パラメータ管理

  • ロボットにはパラメータが山ほどある
  • ROSでパラメータ管理の仕組みを提供してくれてます
  • ROS1:一括管理
  • ROS2:ノード別管理

ノード間でパラメータを共有できるのが便利です

ROSbag

rosbag

データの保存と再生

  • rostopicのデータをそのまま保存
  • 解析・デバッグに活用
PlotJuggler

データの可視化

  • PlotJugglerが便利
  • 公式のrqt_bagは最低限のReadとグラフ化しかなく使いにくいです
  • PlotJugglerは柔軟なグラフ化とCSVエクスポートが便利です

データの再生

  • root@powder_grinding_ros:~/catkin_ws# rosbag play my_bag.bag
  • 再生する機能は正直ほぼ使いません
  • 保存したデータには抜けやディレイがあり、再生してもロボットが同じ動きにならない可能性があります
  • ros_bagは記録と解析用だと割り切った方が良いと思います

公開パッケージの活用

ROSの強みとして、オープンソースのパッケージが多い

動作やデータ取得が簡単になるのでその後の本当にやりたい開発に集中できる

  • ROSと実機のロボットの接続:メーカー公式のロボットドライバ
  • センサのデータ取得:メーカー公式 or ユーザーが公開

公開パッケージの使い方↓

公開パッケージの探し方

  • 「ROS + 製品名」「ROS + 会社名」で検索
  • GitHub・ROS Wiki・ROS Index等で探索
  • メーカー公式サイトでROS対応を確認

公開パッケージの使い方(Debian package)

例: Intel RealSense

  • ROSビルド済みパッケージ(安定版)
  • コマンド1つで簡単インストール
  • root@powder_grinding_ros:~/catkin_ws# sudo apt-get install ros-$ROS_DISTRO-realsense2-camera

公開パッケージのソースビルド

例: Intel RealSense

  1. Clone:
    root@powder_grinding_ros:~/catkin_ws# git clone https://github.com/IntelRealSense/realsense-ros.git
  2. 依存関係:
    root@powder_grinding_ros:~/catkin_ws# rosdep install -i --from-paths src
  3. ビルド:
    root@powder_grinding_ros:~/catkin_ws# catkin build; source devel/setup.bash

説明はここまで、あとは実際に動かしながら学んでください

ありがとうございました

← シリーズ一覧に戻る