タグアーカイブ robotics

著者:yamamoto.yosuke

ROS-O で ROS1 を使う – インストール

本シリーズ前回の記事「ROS-O で ROS1 を使う – ROS-O とは」では ROS-O が必要とされる背景などを中心にその概要の説明をしました.

今回の記事では ROS-O のインストールとその動作確認の方法について説明します.本記事での ROS-O をインストールする対象の Ubuntu のバージョンは次の2つを前提としています.

  • Ubuntu 22.04
  • Ubuntu 24.04

ROS-O のインストール

ROS-O のインストール手順は apt で取得できる ROS-O パッケージを配布している Web サイト Bielefeld University ROS-O package repository のトップページに
Install instructions to use ROS One: という項目で掲載されています.

Install instructions to use ROS One: のコメント以外,実行部分のみを書き出したものを下に掲載します.

インストールはターミナルに下のコマンドを1行ずつコピー&ペーストして [Enter] 入力で各コマンドを実行して行います.

  • 注)1行が長く下記掲載の枠内に表示しきれない行もあるので枠内で右スクロールをして行末までコマンドをコピーするよう注意してください.

Terminal: ROS-O インストール

sudo apt install curl

sudo curl -sSL https://ros.packages.techfak.net/gpg.key -o /etc/apt/keyrings/ros-one-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/ros-one-keyring.gpg] https://ros.packages.techfak.net $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros1.list

echo "# deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/ros-one-keyring.gpg] https://ros.packages.techfak.net $(lsb_release -cs) main-dbg" | sudo tee -a /etc/apt/sources.list.d/ros1.list

sudo apt update

sudo apt install python3-rosdep

sudo rosdep init

echo "yaml https://ros.packages.techfak.net/ros-one.yaml one" | sudo tee /etc/ros/rosdep/sources.list.d/1-ros-one.list

rosdep update

sudo apt install ros-one-desktop

ROS-O の動作確認

ROS-O が動作するかを確認します.動作確認手順の1つとして ROS Noetic 以前と同様に「タートルシム / turtlesim」を Ubuntu PC 画面上で動かしてみます.

ROS Noetic 以前と基本操作は同じですが,異なる点が1つあり,ターミナルの ROS 環境の設定が ROS-O となるように source /opt/ros/one/setup.bash を実行します.

Terminal 1: 入力コマンド roscore

source /opt/ros/one/setup.bash
roscore

Terminal 1: 出力例

robotuser@robotuser-PC:~$ source /opt/ros/one/setup.bash
robotuser@robotuser-PC:~$ roscore
... logging to /home/robotuser/.ros/log/96e7dc35-4f5d-11f1-b266-50eb713af63d/roslaunch-robotuser-PC-5625.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://robotuser-PC:43503/
ros_comm version 1.17.3


SUMMARY
========

PARAMETERS
 * /rosdistro: one
 * /rosversion: 1.17.3

NODES

auto-starting new master
process[master]: started with pid [5633]
ROS_MASTER_URI=http://robotuser-PC:11311/

setting /run_id to 96e7dc35-4f5d-11f1-b266-50eb713af63d
process[rosout-1]: started with pid [5642]
started core service [/rosout]

Terminal 2: 入力コマンド turtlesim_node

source /opt/ros/one/setup.bash
rosrun turtlesim turtlesim_node

Terminal 2: 出力例

robotuser@robotuser-PC:~$ source /opt/ros/one/setup.bash
robotuser@robotuser-PC:~$ rosrun turtlesim turtlesim_node 
QSocketNotifier: Can only be used with threads started with QThread
[INFO] [1778739996.107534065]: Starting turtlesim with node name /turtlesim
[INFO] [1778739996.111756257]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]

turtlesim_node が正常起動すると左図のような中心に亀が表示されたウィンドウが開きます.

Terminal 3: 入力コマンド turtle_teleop_key

source /opt/ros/one/setup.bash
rosrun turtlesim turtle_teleop_key

Terminal 3: 出力例

robotuser@robotuser-PC:~$ source /opt/ros/one/setup.bash
robotuser@robotuser-PC:~$ rosrun turtlesim turtle_teleop_key 
Reading from keyboard
---------------------------
Use arrow keys to move the turtle. 'q' to quit.

turtle_teleop_key を起動した状態でキーボードの方向キー(←↑↓→)を押すと turtlesim_node で表示しているウィンドウの中の亀がウィンドウ内で動くかと思います.

亀がキー操作で動いたらとりあえずの ROS-O の動作確認は終了です.

Terminal 3 は ‘q’ で,Terminal 1 と 2 は ‘Ctrl-C’ で終了します.


今回の記事はここまでです.

本シリーズ次回の記事では ROS-O での ROS パッケージのビルドとその実行について説明する予定です.

著者:yamamoto.yosuke

ROS-O で ROS1 を使う – ROS-O とは

ROS1 は最後の公式なバージョン ROS Noetic のサポートが 2025年5月 に終了(End of Life / EOL)し,ROS2 への移行が進みつつあります.

ROS2 が普及しつつあるとは言え,ROS1 で構成されたロボット資産をまだ有効活用したいこともまだあるかと思います.そのようなケースに対応するため,有志によるコミュニティ主導のプロジェクト ROS-O(ロスオー,ROS One)でサポートが終了した後の新しい Ubuntu 環境においても ROS1 を使えるように維持・管理が行われています.

今回は ROS-O で ROS1 を使う方法について次のように何回かの記事に分けて説明する予定です.

  1. ROS-O とは (←今回の記事)
  2. ROS-O のインストール
  3. ROS-O パッケージのソースビルド
  4. ROS-O と ROS2 の併用
  5. ROS-O パッケージのネットワーク apt インストール対応

ROS-O とは

ROS-O(ロスオー,ROS One)は ROS1 の公式最終バージョン ROS Noetic サポート終了後も,より新しい Ubuntu 環境で ROS1 系ソフトウェアを継続利用できるようにするためのコミュニティ主導プロジェクトです.

ROS1 が公式には 2025年5月 に EOL(End of Life)となり Ubuntu 20.04 にて公式対応が終了しました.その結果 Ubuntu 22.04 や 24.04 上で ROS1 のソフトウェアパッケージを apt install などにより簡単に利用することが難しくなりました.

  • ROS1 公式サポートの終了
    • 2025年5月
    • 最終対応 Ubuntu: 20.04
    • 最終バージョン: ROS Noetic

そうのような状況の中で ROS-O では多くの資産が残っている ROS1 ソフトウェアやそのハードウェアをより新しいバージョンの Ubuntu 上でも活用できるよう修正や保守が行われています.

具体的には ROS-O で ROS1 のコアパッケージの主要なリポジトリをフォークし,バグ修正や最新のコンパイラへの対応を一括して引き受ける受け皿として機能しています.また,新しい Python バージョンや C++ 標準,依存ライブラリの変化に伴って従来の ROS1 コードはビルドできなくなることが増えていることに対して ROS-O プロジェクトにて有志によりこれらの変更に追従するための修正が継続的に行われています.

新しい Ubuntu バージョンでの ROS1 資産の活用

ROS-O の重要な要素でもあるのが新しい Ubuntu バージョンでの ROS1 資産の活用です.公式最終バージョンの ROS1 である ROS Noetic は Ubuntu 20.04 での利用が前提でしたが,ROS-O は ROS Noetic が公式にサポートしていた Ubuntu 20.04 よりも新しいバージョンの Ubuntu にも対応するようメンテナンスされています.

  • ROS-O が対応している Ubuntu(2026年5月時点)
    • Ubuntu 22.04
    • Ubuntu 24.04

これらの Ubuntu バージョンにおいて ROS-O は ros-one-* パッケージを apt インストールできる状態で提供しています.

このように Ubuntu 20.04 以前の古いシステムを維持しなくても ROS1 を動かせることにより,研究・教育・産業の各分野にある ROS1 の大きな資産を継続的に利用することができます.

  • ROS1 資産の例
    • 古いロボット
    • 学術コード
    • センサドライバ

例えば特定のロボットやセンサーのドライバが ROS1 にしか対応しておらず,メーカーのサポートも終了しているような場合でも ROS-O を活用することで新しいシステム内で既存のハードウェアを利用できる可能性があります.

ROS-O 併用による段階的な ROS2 移行

ROS2 の普及が進みつつありますが ROS1 から完全移行するにも一部のパッケージが対応されていないような状況はまだあるものと考えられます.ROS-O により新しいバージョンの Ubuntu 上でも ROS1 と ROS2 を併用したシステムを運用しやすくなります.

  • ROS-O と ros1_bridge による ROS1 + ROS2 併用
    • ROS1 ドライバ
    • ros1_bridge
    • ROS2 Navigation

開発者自身のソフトウェアパッケージについても ROS1 パッケージから ROS2 への移植は簡単な場合も多いですが,一部においては ROS1 から ROS2 へのアーキテクチャなどの変更が大きく影響して移植コストが高くなってしまうケースがあります.その場合は既存の ROS1 パッケージを暫定的に ROS-O で運用し,より優先度の高いソフトウェア開発に注力してから順次 ROS1 パッケージの ROS2 移植を進めることができます.

注意点・限界

ROS-O はいくつか注意して利用する必要があります.

  • 公式 OSRF サポートではない
    • ROS-O はコミュニティベースで,Open Robotics 公式長期保守ではない
  • 全 ROS1 パッケージが必ず動くわけではない
    • 古いパッケージは新しい Ubuntu での言語バージョンなどの違いは修正が必要な可能性あり
  • ROS2 ネイティブ機能の恩恵は得られない
    • ROS2 と比べた ROS1 の本質的制約: DDS 非対応, QoS 設定なしなど

参考となるページ


今回の記事はここまでです.

本シリーズ次回の記事では ROS-O のインストール方法について説明する予定です.