はじめに
RaspberryPi4にROSをインストールした時の記事(22年1月時点)です。
ROSをRaspberryPi4にインストールするにあたり、使用OSがUbuntu20.04 LTSであればROS(Noetic)をインストール方法がインターネット上に豊富に公開されており、「sudo apt-geto install ~」コマンドをいくらか入力することで簡単にインストールできます。
しかしながら、今回は以下2つの課題があったために今回はUbuntu20.04 LTS上のROSインストールとせず、RaspberryPi OS 32bit『Buster』にてROSをインストールしていきます。
課題1
RaspberryPi4にUbuntu20.04LTSを適用した場合、RaspberryPiのGPIOを制御するためのライブラリである「wiringPi」が完全に動作しません。具体的には、GPIOをHigh/Low簡単に切り替える程度に一部動作はできるものの、ラズベリーパイのもつSPI(Serial Peripheral Interface)を動作させることができませんでした。今回はROSを用いたシステム上でSPIも動かすことを目指します。
課題2
将来的にrviz等のGUIツールでROSで構築したシステムをデバッグしたいため、Ubuntu20.04LTSを適用する場合は必然的にDesktop版となりますが、RaspberryPi4にUbuntu20.04LTS Desktop版をインストールすると起動時の立ち上がり時間が非常に遅いです。
以上を踏まえ、RaspberryPi4AにはRaspberryPi OS 32bit『Buster』を適用し、ROS(Melodic)をインストールしてみたので覚書として記載します。なお、22年1月時点のRaspberry Pi OSの最新版は『Bullseye』ですが、これだと ROS(Melodic)をうまくインストールできるかわからなかったので、1つ古い『Buster』を採用しています。
ROS(Melodic)のインストール手順
RaspberryPi OSにてROSをインストールする場合、必要なパッケージをビルドしていく必要がある上、ビルドするための環境自体のインストールから必要となり険しいです。
特に以下2つのサイトを参考に手順を踏みました。
http://forestofazumino.web.fc2.com/ros/ros_install.html
http://wiki.ros.org/ROSberryPi/Installing%20ROS%20Melodic%20on%20the%20Raspberry%20Pi
ROSをaptレポジトリに追加
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu raring main" > /etc/apt/sources.list.d/ros-latest.list'
$ wget http://packages.ros.org/ros.key -O - | sudo apt-key add –
$ sudo apt-get update
$ sudo apt-get upgrade
ROSのインストール手順を色々調べていると以下のようにしてレポジトリ追加している手順も結構あり、はじめはこれらを使っていましたが、公開鍵を設定するapt-keyコマンドが全然通りませんでした。何回かapt-keyコマンド打ってたらすごく稀に通りますが、断念しました。参考に記載します。
$ 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://ha.pool.sks-keyservers.net:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
$ sudo apt-get update
$ sudo apt-get upgrade
pipとツールのインストール
Raspberrypi OSの場合、ROSインストールに必要な後に出てくるツール類はpipを用いないとインストールできませんでした。
更に、python-pipをインストールしようとするとできず、python3-pipをインストールを推奨されましたが、これをインストールしてしまうと、python2と3のライブラリが競合して(?)以降の手順でwstool等が動かなくなったので要注意。
$ sudo apt-get install python-pip
$ sudo pip install rosdistro
$ sudo pip install wstool
セットアップツールのインストール
$ cd ~/Downloads
$ wget https://pypi.python.org/packages/source/s/setuptools/setuptools-1.1.6.tar.gz
$ tar xvf setuptools-1.1.6.tar.gz
$ cd setuptools-1.1.6
$ sudo python setup.py install
上記コマンド群がダメな場合は以下です。
$ sudo apt-get install setuptools
各種ツールのインストール
$ sudo apt-get install python-stdeb
$ sudo pip install rosdep
$ sudo pip install rosinstall-generator
$ pip install -U rospkg
$ sudo apt-get install python-rosdep python-rosinstall-generator build-essential
rosdep初期化
$ sudo rosdep init
$ rosdep update
catkin Workspaceの作成
$ mkdir -p ~/ros_catkin_ws
$ cd ~/ros_catkin_ws
インストール:Desktop: ROS, rqt, rviz, and robot-generic libraries
pipでちゃんと各ツールがインストールできていれば問題ないと思います。
LiDARで取得した点群情報を後々にrvizを使ってGUIで表示させたいので、ここではDesktop版をインストールしています。
$ rosinstall_generator desktop --rosdistro melodic --deps --wet-only --tar > melodic-desktop-wet.rosinstall
$ wstool init src melodic-desktop-wet.rosinstall
依存関係の解決
RaspberryPi OSに『Buster』を採用していれば問題ないと思います。
$ cd ~/ros_catkin_ws
$ rosdep install -y --from-paths src --ignore-src --rosdistro melodic -r --os=debian:buster
ビルド
RaspberryPi OSに『Buster』を採用していれば問題ないと思います。
$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/melodic
$ source /opt/ros/melodic/setup.bash
$ echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
これにてROSはインストール完了!