ゼロからのROS入門

大阪大学 中島優作


← シリーズ一覧に戻る

スライドの担当範囲

  1. ROSシステムの概要説明
  2. 読み飛ばしてロボットを動かすのもOK
  3. 必要に応じて選択的に学習
ROS 2ではじめよう
ROS 2ではじめよう
次世代ロボットプログラミング
ROS2とPython
ROS2とPythonで作って学ぶ
AIロボット入門

参考書籍

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

ROSとは

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

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

ROSではまりがちなこと

  1. 使い方が分からない
  2. 相談する人がいない
  3. ごちゃごちゃいじっている間に環境が壊れて動かなくなった
  4. 中身がどうなっているのかブラックボックスで応用が利かない

ROSを使った勉強の進め方

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

実装を学ぶ場がない...→

1~3は以下↓

1. チュートリアル

  • http://wiki.ros.org/ja/ROS/Tutorials
  • ただし、チュートリアルだけでは動くロボットを作るのは難しい
  • このスライドはその補完を目的としている

2. 困ったときは

3. 環境構築

  • Dockerを使ってROSの環境を構築するのが便利
  • 勉強用ならこれがオススメです
  • 勉強だけならWSLでも良い(実機の制御は困難)

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

ロボットアームの実装はざっくり以下の2ステップ

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

ROSノード

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

  • 1ノード=1プロセス
  • 機能ごとに分割可能
  • 柔軟なシステム構築

ノード間の通信

全画面表示

ROSパラメータ

パラメータ管理

  • ロボットには多数のパラメータが必要
  • ROS1:一括管理
  • ROS2:ノード別管理

ROSbag

rosbag

データの保存と再生

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

データの可視化

  • PlotJugglerが便利
  • bagファイル読み込み
  • データのグラフ化
  • CSVエクスポート

データの再生

  • root@powder_grinding_ros:~/catkin_ws# rosbag play my_bag.bag
  • Topicの完全再現は現実的でないので注意
  • 記録時に抜け落ちるデータ有

環境構築

自力での環境構築は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にします

パッケージのクローン


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

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イメージの作成が開始されます

コンテナの起動と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の強みとして、オープンソースのパッケージが多い

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

  • 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

バージョン確認: root@powder_grinding_ros:~/catkin_ws# apt-cache policy ros-$ROS_DISTRO-realsense2-camera

公開パッケージの使い方(ソースビルド)

最新版使用時の手順

  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

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

ありがとうございました

← シリーズ一覧に戻る