暁の電子工作奮闘記

知識も経験もないのにArduinoとRaspberryPiを買ってしまった大学生が、勉強しながらあれこれ試行錯誤するブログ。

[ROS Noetic] ROS Wiki Tutorials を読み進める (その0) / 概要とインストール

ROS Wiki の Tutorials を中心に ROS Noetic を実際に使いながら読み進め、
ROSについて勉強したり遊んだりするシリーズです。


こんにちは!暁です。

今ラズパイでUbuntu20.04を動かしているんですが、
ROSを使ってみたいと思いまして。

というわけでROS Wikiを読み進めながらROSを勉強していきたいと思ってます。
今回はROSの概要とROS Wikiについての説明、そしてROS Noeticのインストールをしていきます。

ROSとは?

ROSはオープンソースで提供される, ロボット向けのメタ・オペレーティングシステムです. ハードウェア抽象化, 低レベルなデバイス制御, 一般的な機能性, プロセス間通信, そして, パッケージ管理など, 一般的なオペレーティングシステムに要求されるサービスを提供します. また, コードを複数台のコンピュータにわたって保持・ビルド・記述・実行するためのツールやライブラリも提供しています.
http://wiki.ros.org/ja/ROS/Introduction

ちょっと今はROSの何たるかを説明できるほど知識がないので自分の言葉では説明できませんが、 公式Wikiに詳しく書いてあるのでそれを読みましょう。

ROSは「Robot Operation System」の略で名前にOSを含みますが、
WindowsなどのOSとは違い、ミドルウェアやソフトウェアフレームワークの一種であり、
Ubuntuなどで動作するものだそうです。

つまり、
Ubuntu上でROSを動かす」
UbuntuにROSをインストールする」
などといった形になるわけです。

ROSのバージョン

ROSにはMelodicやNoeticなどの複数のバージョンがあります。

…いや、嘘を言ったかもしれません。
正しくは
「ROSにはMelodicやNoeticなどの複数のディストリビューションがあります」
でしょうか。

ROS Wiki にはこう書いてあります。

A ROS distribution is a versioned set of ROS packages.
(ROS ディストリビューションとは、ROS パッケージのバージョンセットのことです。)
Distributions - ROS Wiki

ROSに関してはディストリビューション=バージョンと考えても差し支えないのかな…?
なんならディストリビューション=バージョンと考えるべきなのかもしれませんが。
「ROS バージョン」で検索かけるとMelodicなどを
バージョンとして扱っているサイトがたくさん出てくるので。
ただ、ROS Wikiではディストリビューションで統一されているようなので、
"ディストリビューション"と出てきたらMelodicやNoeticのことなんだなぁと思ってください。

ちなみに、Ubuntu20.04は、
ディストリビューション名:Ubuntu
・バージョン       :20.04
なので、一般的にはディストリビューション=バージョンとはいえないようですね。

少し話がそれてしまいましたが、
ROSにはMelodicやNoeticなどの複数のディストリビューションがあります。
Ubuntuと同じように5年間サポートのLTS(Long Term Support : 長期間サポート)版があり、
それぞれのディストリビューションUbuntuの1つのバージョンに対応してます。
今回インストールするNoeticが最新で、Ubuntu20.04で動作します。

Every ROS release will be supported on exactly one Ubuntu LTS.
(すべてのROSリリースは、ちょうど1つのUbuntu LTSでサポートされます。)
Distributions - ROS Wiki

とあるように、例えばNoeticはUbuntu18.04ではサポートされてない(動かない)ので注意。
下の表にしたがって、対応するディストリビューションをインストールしましょう。

ディストリビューション Ubuntuのバージョン サポート期限
Indigo 14.04 2019年5月
Kinetic 16.04 2021年5月
Melodic 18.04 2023年5月
Noetic 20.04 2025年5月

Distributions - ROS Wiki

ROS Wiki には現在Noeticが推奨となっています。


ROSのバージョン?の話でもう1つ。
上で述べているROSとは別に、「ROS2」というものがあります。

The goal of the ROS 2 project is to adapt to these changes, leveraging what is great about ROS 1 and improving what isn’t.
(ROS 2プロジェクトの目標は、これらの変化に適応し、ROS 1の素晴らしいところを活用し、そうでないところを改善することです。)
Here you will find the official documentation on ROS 2, the newest version of ROS.
(ここでは、ROSの最新バージョンであるROS 2の公式ドキュメントを見つけることができます。)
ROS 2 Overview

要するに、ROS2は今のニーズに合わせて改良したROSと言ったところでしょうか。

ROSから始めるかROS2から始めるか迷いましたが、
ROSと比べてROS2の情報がまだ少ないことと、
おそらくROSで十分事足りるだろうということから
ROSを選択しました。

ROSで何がしたいの?

どうでもいいので折りたたみ。

クリックすると展開されます 正直なところを言うと、何ができるかまだよくわかっていません…。

でもおそらく、
「USBカメラで人を認識したときにArduinoで何かしらの動作をさせる」
などといったことができるのかな…?

Arduinoで画像処理などの重めの処理をするのはおそらく厳しいため、
RaspberryPiにArduino・USBカメラを接続する形になると思います。

もしROSを使わない場合。 実装するためには、
カメラからの画像をラズパイで受け取り、
OpenCVで画像処理するためのプログラムを書き、
その処理結果をもとにArduinoに出す命令を決定・送信、
ラズパイとArudinoの間でSerial通信して、
Arudino側で命令を受信して、何かの動作をさせ…?

こんなの1人で実装できる気がしません。
特に、上の処理どうしをどうつなげばよいのか…
でもROSを使えばこれが可能かも…?と期待しています。
数か月後に乞うご期待。

加えて、研究室で使う可能性があるので、今勉強しておいて損はないかなーといったところです。

ROS Wiki

これからROSを勉強したり使ってみたりしたいわけですが、
何を見ればいいんでしょうか?

実は「ROS Wiki」というサイトがあります。
(実はも何もこの記事でもう何度も名前を出してますが…)

ROS Wiki には、ROSについての説明やインストール方法、
そしてチュートリアルなどたくさんの情報があります。
チュートリアルを一通り進めるとROSがある程度使えるようになるのかな?

なんと日本語翻訳版もあります。
「じゃあ日本語のページ見てインストールしよう!」と思ったら…
wiki.ros.org
日本語版のインストールページに飛ぶと、
もうサポート終了しているIndigoのインストールページに飛びます。
チュートリアルも基本的にIndigoベースの古いものみたいです。

という訳で、ROS Wiki英語のページを見た方がよさそうですね。
英語が読めない? 私も読めません笑
DeepLというオンライン翻訳ツールをちょくちょく使いながら読んでます。
DeepLGoogle翻訳と比べて精度良く翻訳してくれます。
元の英語もそこまで難解ではないので、DeepLを使えば英語でもスムーズに読み進められると思います。

ROS Noetic のインストール

ではさっそくROSをインストールしていこうと思います。

Ubutnu20.04LTSなのでROS Noeticをインストールします。
ちなみに私はRasperryPi4で動いているUbuntuにインストールしましたが、
PCで動いているUbuntuにインストールするのと同じ作業です。

RaspberryPi4にUbuntuをインストールする方法はこちら qiita.com

ROS Noetic のインストールは ROS Wiki のインストールページ通りに進めていきます。 wiki.ros.org

このページを上から順に見ていけば大丈夫です。

英語が苦手な人のために必要なところだけピックアップします。
まずUbuntuで端末を開いてください。(Ctrl+Alt+Tで開けます)
端末が開けたら、下のコマンドを上から順に打っていきましょう。

$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

$ sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

$ sudo apt update

$ sudo apt install ros-noetic-desktop-full

$ source /opt/ros/noetic/setup.bash

$ echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc

以上でインストールは終わりです。

おつかれさまでした~!


追記 (2021/6/8)

長い間放置してしまい、申し訳ございませんm(__)m
この記事の執筆後、ROS Tutorialsの中級くらいまでは勉強しました。
んですけど忙しくてまとめる時間がとれなくて…。

放置してしまっているので代わりに参考になるものを…。
Qiitaにsrs様のROS講座というシリーズがあるのですが、
こちらとてもわかりやすいのでオススメです。
「ROSで〇〇やってみたいな」と思ってたことが大体載ってました。
kinetic・melodicの仕様で書かれていますが、
ディストリビューションの部分をNoeticに置き換えて読めば、
結構そのまま使えます(ただし自己責任で)。
私もよくお世話になっております…。

話は戻りますが、
続きを書くかは迷っております。
もし時間の余裕ができたら書くかも。