ROS の概要と環境構築
はじめに
このチュートリアルでは、ROS(Robot Operating System)の概要を簡潔に説明し、reComputer J3010 Nvidia Jetson Orin Nano 上での ROS のクイックインストールと体験をご案内します。本チュートリアルを終える頃には、動作する ROS 環境が整い、シンプルな ROS デモを実行できるようになります。
前提条件
このチュートリアルを進めるには、次のハードウェアとソフトウェアが必要です。
- ハードウェア: reComputer J3010 (Nvidia Jetson Orin Nano)、ディスプレイ、キーボード、マウス。
- ソフトウェア: Jetpack 5.1.1、Ubuntu 20.04、ROS Noetic、Python、C++。
ROS の発展についての紹介
ROS とは?
ROS(Robot Operating System)はロボットソフトウェア開発のためのオープンソースフレームワークです。異種計算クラスタのホスト OS の上に構造化された通信レイヤを提供します。ROS はできるだけ薄く設計されており、次の 2 つの部分から構成されています。
- ROS システム(ROS): プロセス間通信を担う配管のようなシステム。ロボットの各部分が互いに通信できるようにするミドルウェアです。
- ROS パッケージ: ロボットアプリケーションを書くために必要なライブラリとツール。
なぜ ROS なのか?
ROS は、さまざまなロボットプラットフォームで複雑かつ堅牢なロボット動作を作り出すプロセスを簡素化します。ROS を利用する主な目的と利点は次の通りです。
- 高速開発: 研究から製品化までの開発を加速する標準プラットフォームを提供。
- グローバルコミュニティ: 大規模で活発なコミュニティが貢献と改善を行っている。
- 実績ある運用: 学術および商用ロボティクスで広く利用されている。
- 市場投入時間の短縮: 充実したツールとライブラリにより製品開発時間を短縮。
- 汎用性: 組み込みシステムを含む複数のドメインとプラットフォームに対応。
- オープンソース: 自由に使用、修正、拡張でき、革新と協業を促進。
- 商用フレンドリー: Apache 2.0 のような寛容なライセンスで配布。
ROS の歴史と発展
ROS(Robot Operating System)の歴史は、ロボティクス全体の進化と深く関わっています。
初期のロボティクスの発展
- 1959 年: 最初の自動化ロボットの開発からロボティクスの旅が始まりました。
- 1972 年: 環境と相互作用できるロボットが登場。
- 1982 年: 複雑なタスクのためのコンピュータシステムへのロボット統合。
- 1988 年: ロボット自動化と制御システムの進歩。
- 2002 年: 家事用の消費者向けロボット Roomba の登場。
- 2003 年: 探査機による火星でのロボット探査の拡大。
- 2005 年: 倉庫ロボットに代表される産業オートメーションでの重要な役割。
ROS の歴史と発展
初期のロボティクスの発展
- 1959 年: 最初の自動化ロボットの開発からロボティクスの旅が始まりました。
- 1972 年: 環境と相互作用できるロボットが登場。
- 1982 年: 複雑なタスクのためのコンピュータシステムへのロボット統合。
- 1988 年: ロボット自動化と制御システムの進歩。
- 2002 年: 家事用の消費者向けロボット Roomba の登場。
- 2003 年: 探査機による火星でのロボット探査の拡大。
- 2005 年: 倉庫ロボットに代表される産業オートメーションでの重要な役割。
ROS の誕生
- 2007 年: スタンフォード人工知能研究所で Morgan Quigley、Eric Berger、Andrew Ng により「Switchyard」という名で ROS の開発が開始されました。ロボット研究における共有ソフトウェア基盤の不足に対処することを目的としていました。
- 2008 年: ロボティクス研究所 Willow Garage で開発が継続。
- 2009 年: 最初のバージョンリリースをもって ROS が正式に確立。
成長と進化
- 2010 年: ROS 1.0 がリリースされ、Willow Garage がその開発とコミュニティ成長で重要な役割を果たしました。
- 2014 年: Pepper のような社交・サービスロボットの登場により、人間とロボットの相互作用の進歩が示されました。
- 2021 年: ROS は進化し、さまざまな用途向けの高度で汎用的なロボットシステムをサポートしています。
ROS リリースタイムライン
| リリース名 | ディストリビューション | リリース日 | EOL 日 |
|---|---|---|---|
| Boxturtle | ROS 1 | 2010 年 3 月 | 2011 年 3 月 |
| C Turtle | ROS 1 | 2010 年 8 月 | 2011 年 8 月 |
| Diamondback | ROS 1 | 2011 年 3 月 | 2012 年 11 月 |
| Electric Emys | ROS 1 | 2011 年 8 月 | 2013 年 1 月 |
| Fuerte | ROS 1 | 2012 年 4 月 | 2013 年 7 月 |
| Groovy Galapagos | ROS 1 | 2012 年 12 月 | 2014 年 5 月 |
| Hydro Medusa | ROS 1 | 2013 年 9 月 | 2015 年 5 月 |
| Indigo Igloo | ROS 1 | 2014 年 7 月 | 2019 年 4 月 |
| Jade Turtle | ROS 1 | 2015 年 5 月 | 2017 年 5 月 |
| Kinetic Kame | ROS 1 | 2016 年 5 月 | 2021 年 4 月 |
| Lunar Loggerhead | ROS 1 | 2017 年 5 月 | 2019 年 5 月 |
| Melodic Morenia | ROS 1 | 2018 年 5 月 | 2023 年 5 月 |
| Noetic Ninjemys | ROS 1 | 2020 年 5 月 | 2025 年 5 月 |
| Foxy Fitzroy | ROS 2 | 2020 年 6 月 | 2023 年 6 月 |
| Galactic Geochelone | ROS 2 | 2021 年 5 月 | 2022 年 11 月 |
| Humble Hawksbill | ROS 2 | 2022 年 5 月 | 2027 年 5 月 |
| Rolling Ridley | ROS 2 | 進行中 | 進行中 |
現在、ROS は非営利団体 Open Robotics によって維持されており、リアルタイムおよび組み込みシステム向けの改善を含む ROS 2.0 や、その他のツールやライブラリを含むコア ROS システムの開発に専念しています。
ROS 環境のインストールとクイック体験
ROS1 のインストール
- ステップ 1: ターミナルを開き、システムパッケージを更新します。
bash
sudo apt update sudo apt upgrade - ステップ 2: 基本ツールをインストールします。
bash
sudo apt install curl gnupg2 lsb-release - ステップ 3: ROS リポジトリのキーを追加します。
bash
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - - ステップ 4: ROS リポジトリを追加します。
bash
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' - ステップ 5: パッケージリストを更新します。
bash
sudo apt update - ステップ 6: ros-noetic-desktop-full をインストールします。
bash
sudo apt install ros-noetic-desktop-full sudo apt-get install python3-rosdep - ステップ 7: rosdep を初期化します。
bash
sudo rosdep init rosdep update - ステップ 8: ROS 環境変数を設定します。
bash
echo "source /opt/ros/noetic/setup.bash">> ~/.bashrc && source ~/.bashrc - ステップ 9: 依存ツールをインストールします。
bash
sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential - ステップ 10: インストールをテストします。
bash
roscore
ROS のクイックスタート
ROS をすばやく体験するために、ROS ワークスペースを作成し、シンプルなデモを実行してみましょう。
-
ROS ワークスペースを作成
bashmkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make -
setup ファイルを source
bashsource devel/setup.bash -
デモを実行
bashroscore別のターミナルを開いて実行します。
bashrosrun turtlesim turtlesim_nodeさらにもう一つのターミナルを開いて実行します。
bashrosrun turtlesim turtle_teleop_key
このクイックデモでは、キーボードで操作できるグラフィカルなカメロボットが表示されます。
ROS 用一般開発ソフトウェアのインストール
VSCode と ROS 開発拡張機能のインストール
-
VSCode のインストールについては、前のチュートリアルを参照してください: 3.1-Python とプログラミングの基礎
-
VSCode 拡張機能マーケットプレイスから
Python、ROS、C++、CMake Toolsなどのツールをインストールします。
多機能ターミナル Terminator のインストール
-
インストール
bashsudo apt-get update sudo apt install terminator
-
「アプリケーションを表示」 ---> 「Terminator」を検索 ---> 右クリックして「お気に入りに追加」を選択
-
Terminator のよく使うショートカット
- Alt + Up: 上のターミナルへ移動
- Alt + Down: 下のターミナルへ移動
- Alt + Left: 左のターミナルへ移動
- Alt + Right: 右のターミナルへ移動
- Ctrl + Shift + O: ターミナルを水平分割
- Ctrl + Shift + E: ターミナルを垂直分割
- Ctrl + Shift + Right: 垂直分割のターミナルでスプリッターを右へ移動
- Ctrl + Shift + Left: 垂直分割のターミナルでスプリッターを左へ移動
- Ctrl + Shift + Up: 水平分割のターミナルでスプリッターを上へ移動
- Ctrl + Shift + Down: 水平分割のターミナルでスプリッターを下へ移動
- Ctrl + Shift + S: スクロールバーの表示/非表示
- Ctrl + Shift + F: 検索
- Ctrl + Shift + C: 選択した内容をクリップボードへコピー
- Ctrl + Shift + V: クリップボードの内容を貼り付け
- Ctrl + Shift + W: 現在のターミナルを閉じる
- Ctrl + Shift + Q: 現在のウィンドウを終了し、そのウィンドウ内のすべてのターミナルを閉じる
- Ctrl + Shift + X: 現在のターミナルを最大化
- Ctrl + Shift + Z: 現在のターミナルを最大化してフォントを拡大
- Ctrl + Shift + N または Ctrl + Tab: 次のターミナルへ移動
- Ctrl + Shift + P または Ctrl + Shift + Tab: 前のターミナルへ移動
- F11: フルスクリーン切替
- Ctrl + Shift + T: 新しいタブを開く
- Ctrl + PageDown: 次のタブへ移動
- Ctrl + PageUp: 前のタブへ移動
- Ctrl + Shift + PageDown: 現在のタブを次のタブと入れ替え
- Ctrl + Shift + PageUp: 現在のタブを前のタブと入れ替え
- Ctrl + Plus (+): フォントサイズを大きく
- Ctrl + Minus (-): フォントサイズを小さく
- Ctrl + Zero (0): フォントサイズを元に戻す
- Ctrl + Shift + R: ターミナル状態をリセット
- Ctrl + Shift + G: ターミナル状態をリセットして画面をクリア
- Super + g: すべてのターミナルをバインドし、入力をすべてのターミナルにミラーリング
- Super + Shift + G: すべてのターミナルのバインドを解除
- Super + t: 現在のタブのすべてのターミナルをバインドし、入力をミラーリング
- Super + Shift + T: 現在のタブのターミナルのバインドを解除
- Ctrl + Shift + I: 元のウィンドウとプロセスを共有する新しいウィンドウを開く
- Super + i: 元のウィンドウとは別プロセスの新しいウィンドウを開く