ROS の概要と環境構築

はじめに

このチュートリアルでは、ROS(Robot Operating System)の概要を簡潔に説明し、reComputer J3010 Nvidia Jetson Orin Nano 上での ROS のクイックインストールと体験をご案内します。本チュートリアルを終える頃には、動作する ROS 環境が整い、シンプルな ROS デモを実行できるようになります。

前提条件

このチュートリアルを進めるには、次のハードウェアとソフトウェアが必要です。

J3010

ROS の発展についての紹介

ROS とは?

ROS(Robot Operating System)はロボットソフトウェア開発のためのオープンソースフレームワークです。異種計算クラスタのホスト OS の上に構造化された通信レイヤを提供します。ROS はできるだけ薄く設計されており、次の 2 つの部分から構成されています。

  • ROS システム(ROS): プロセス間通信を担う配管のようなシステム。ロボットの各部分が互いに通信できるようにするミドルウェアです。
  • ROS パッケージ: ロボットアプリケーションを書くために必要なライブラリとツール。

J3010

なぜ ROS なのか?

ROS は、さまざまなロボットプラットフォームで複雑かつ堅牢なロボット動作を作り出すプロセスを簡素化します。ROS を利用する主な目的と利点は次の通りです。

  • 高速開発: 研究から製品化までの開発を加速する標準プラットフォームを提供。
  • グローバルコミュニティ: 大規模で活発なコミュニティが貢献と改善を行っている。
  • 実績ある運用: 学術および商用ロボティクスで広く利用されている。
  • 市場投入時間の短縮: 充実したツールとライブラリにより製品開発時間を短縮。
  • 汎用性: 組み込みシステムを含む複数のドメインとプラットフォームに対応。
  • オープンソース: 自由に使用、修正、拡張でき、革新と協業を促進。
  • 商用フレンドリー: Apache 2.0 のような寛容なライセンスで配布。

ROS の歴史と発展

ROS(Robot Operating System)の歴史は、ロボティクス全体の進化と深く関わっています。

J3010

初期のロボティクスの発展

  • 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 日
BoxturtleROS 12010 年 3 月2011 年 3 月
C TurtleROS 12010 年 8 月2011 年 8 月
DiamondbackROS 12011 年 3 月2012 年 11 月
Electric EmysROS 12011 年 8 月2013 年 1 月
FuerteROS 12012 年 4 月2013 年 7 月
Groovy GalapagosROS 12012 年 12 月2014 年 5 月
Hydro MedusaROS 12013 年 9 月2015 年 5 月
Indigo IglooROS 12014 年 7 月2019 年 4 月
Jade TurtleROS 12015 年 5 月2017 年 5 月
Kinetic KameROS 12016 年 5 月2021 年 4 月
Lunar LoggerheadROS 12017 年 5 月2019 年 5 月
Melodic MoreniaROS 12018 年 5 月2023 年 5 月
Noetic NinjemysROS 12020 年 5 月2025 年 5 月
Foxy FitzroyROS 22020 年 6 月2023 年 6 月
Galactic GeocheloneROS 22021 年 5 月2022 年 11 月
Humble HawksbillROS 22022 年 5 月2027 年 5 月
Rolling RidleyROS 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 ワークスペースを作成し、シンプルなデモを実行してみましょう。

  1. ROS ワークスペースを作成

    bash
    mkdir -p ~/catkin_ws/src
    cd ~/catkin_ws/
    catkin_make
  2. setup ファイルを source

    bash
    source devel/setup.bash
  3. デモを実行

    bash
    roscore

    別のターミナルを開いて実行します。

    bash
    rosrun turtlesim turtlesim_node

    さらにもう一つのターミナルを開いて実行します。

    bash
    rosrun turtlesim turtle_teleop_key

このクイックデモでは、キーボードで操作できるグラフィカルなカメロボットが表示されます。

ROS 用一般開発ソフトウェアのインストール

VSCode と ROS 開発拡張機能のインストール

  1. VSCode のインストールについては、前のチュートリアルを参照してください: 3.1-Python とプログラミングの基礎

  2. VSCode 拡張機能マーケットプレイスから PythonROSC++CMake Tools などのツールをインストールします。

多機能ターミナル Terminator のインストール

  1. インストール

    bash
    sudo apt-get update
    sudo apt install terminator
  2. 「アプリケーションを表示」 ---> 「Terminator」を検索 ---> 右クリックして「お気に入りに追加」を選択

  3. 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: 元のウィンドウとは別プロセスの新しいウィンドウを開く