ラズパイ4とubuntu20.04でROSを小気味良く使いたい人向け
NUC(小型PC)のUbuntu20.04にも同じ手順で入りました。
やること
ラズパイ4用にubuntu20.04のMATEが出ています。
そこで64bitで動くこのOSを利用してROS-noeticを使えるようにします。
ubuntu20.04をそのままラズパイ4に入れるとちょっと重たいですが、MATEならubuntuデスクトップも若干軽くなるような気がしています。ベストな方法かどうかはわかりません。
ちなみにNUC(小型PC)のUbuntu20.04にも同じ手順ですんなり入りましたので、おすすめです。(2023.11.12日現在)
そもそもMATEとROSとは
MATEはubuntuの軽量版で、デスクトップGUIが扱えます。
ROSはロボット開発のオープンソースのプラットフォームです。センサやアクチュエータなどの情報やシミュレータなどを統合的に扱えます。
準備物・実施環境
- PCかMac
- 16G以上のSDカード
- USBキーボード、USBマウス、HDMIディスプレイ
- ターミナルについての最低限の知識
参考
STEP 1 : MATEのダウンロード
こちらの「Raspberry pi 64bit...」をクリックし、次のページで「20.4.3 LTS」を選びます。そのあとは「Direct Download」などを選んでDLします。
STEP 2 : Raspberry Pi Imagerのダウンロード
必要に応じてSDカードフォーマッターでSDカードを初期化します。(次のRaspberry Pi Imagerでもフォーマットは可能です。)
次に、以下よりお使いのPC用のRaspberry Pi ImagerをDLします。
Raspberry Pi Imagerを起動し、MATEのイメージをSDカードに書き込みます。
Raspberry Pi Imagerの「CHOOSE OS」のボタンから、メニュー一番したの「Use custom」を選び、DLしたMATEのファイルを指定します。(「ubuntu-mate-20.04.1-desktop-arm64+raspi.img.xz」など。amd64+raspi...だと書き込めないので注意。)
書き込み先を「CHOOSE STRAGE」から選び、「WRITE」を押せばあとは待つだけです。
これだけでラズパイ用のubuntu20.04LTS-MATEのOS入りSDカードが出来上がります。便利。
STEP 3 : MATEの起動
ラズパイにSDカードを入れれば起動するはずです。
MATEの指示に従い、言語、wifi、時間帯、などを選んでいきます。
最後にユーザー名とパスワードを入力し終えると、言語の設定やシステムのDLがはじまります。
かなり時間がかかります。フリーズしたのかなというほど反応がなくなりますが、放置して完了まで待ちます。
STEP 4 : 日本語化したディレクトリ名を英語に戻しておく
参考)https://qiita.com/taiko19xx/items/d1a001bfc25245b91354
ここからターミナルで作業します。ターミナルはMATEのデスクトップ上で右クリックからでも開くことができます。
cd ~/
LANG=C xdg-user-dirs-gtk-update
ウィンドウが出るので、指示に従い表示を変更します。
STEP 5 : 自動アップグレードを止めておく
参考)https://ameblo.jp/myalgia/entry-12603421320.html
自動アップグレードは大事な時に更新が始まったりしそうで怖いので止めておきます。
sudo dpkg-reconfigure unattended-upgrades
sudo reboot
ROSの導入前にアップグレードをするとうまくいかない可能性があるので、ここでのsudo apt upgradeはしない方が良さそうです。
STEP 6 : ディスプレイの自動オフを解除
次のROSのインストールはかなり時間がかかり、画面が消えると進捗がわからなくなるのでディスプレイの自動オフを解除しておきます。
MATEのデスクトップの右上の歯車アイコンをクリック→「ハードウェア」→「電源管理」でシステムやディスプレイのスリープ設定で確認しないを選択します。
STEP 7 : ROS noeticを導入する
参考先の記事の1~7までを行います。
参考)https://qiita.com/take4eng/items/70f167320ede46e4139c
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
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
sudo rosdep init
rosdep update
ここで、catkin buildをインストールします。(catkin_makeよりも新しい方式です)
参考)https://qiita.com/harumo11/items/ae604ba2e17ffda529c2
sudo apt-get install python3-catkin-tools
ワークスペースのディレクトリを作ります。
mkdir -p ~/catkin_ws/src
ワークスペースを初期化します。
cd ~/catkin_ws
catkin init
仕上げに再起動します。
sudo reboot
STEP 8 : ROS の起動確認
ROSCOREの起動
ターミナルを開いて
roscore
とします。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F565043%2F1d8c846a-4255-3457-655e-a9c5a8b4cd7e.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=88cf2a66162d2869357f60182075c4e8)
こんな感じの表示が出たらROSCOREは動いています。
turtlesimの動作をテスト
roscore用に開いたターミナルとは別の新しいターミナルを開いて下記を実行します。
rosrun turtlesim turtlesim_node
もう一つ別のターミナルを開いて、下記を実行します。
rosrun turtlesim turtle_teleop_key
このターミナルをアクティブにしてカーソルキーを押すと、先ほどのウィンドウの亀を操作できます。
さらにrqt_graphも動作テスト
rosrun rqt_graph rqt_graph
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F565043%2F0c86a40d-340a-81f5-e307-816f4ceaa578.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=8fe0e1d60103cbf427b3ea9afa465bb1)
rvizも使えます
rviz
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F565043%2F24c54f8d-3d17-8420-3935-d2df2f559793.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=b32ded369c3e9183cd01fe7cc4d300d7)
gazeboも起動できます。
gazeboも起動だけならできます。
gazebo
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F565043%2F87b85a54-388f-70cf-9a17-cea821800b35.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=d2be98d9c55a0ccd2e0cfa53906a4736)
さすがに重そうです。
STEP 9 : roscdを使えるようにします。
roscdをしたときに飛び先がさっきつくったワークスペースに来るようにします。
echo "export ROS_WORKSPACE=$HOME/catkin_ws" >> ~/.bashrc
うまく書き込めない場合は sudo nano ~/.bashrc などで設定ファイルを開き、文末に「export ROS_WORKSPACE=$HOME/catkin_ws」を追記します。
sudo reboot
再起動後にターミナルでroscdと打ち、~/catkin_ws に移動できれば成功です。
STEP 10 : ファイルのバックアップ
とりあえずROSが動くSDカードができました。
かなり時間のかかる作業だったので、ここで一旦ファイルのバックアップをとっておくことをおすすめします。
以下の作業はおまけになります。
おまけ1 : 日本語入力をいれておく
sudo apt-get install ibus-mozc
sudo reboot
おまけ2 : グラフィック用メモリの割り当てを変更する
MATEをraspiに入れると初期設定ではグラフィックへのメモリが小さく、ブラウザでyoutubeを見たりすることができません。ビデオ用のメモリの割り当てができるようにしておきましょう。
まず、raspi-configを使えるようにインストールします。
参考)https://qiita.com/penguinprogrammer/items/a252676a3ce6bd1410da
sudo nano /etc/apt/sources.list
開いたファイルの最後に「deb http://archive.raspberrypi.org/debian/ buster main」を記入し、Ctrl + x でセーブして終了します。
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 7FA3303E
sudo apt-get update
sudo apt-get install raspi-config
sudo apt reboot
再起動後に、raspi-configを立ち上げ、設定をおこないます。
sudo raspi-config
メニュー画面から「4 Performance Options」→「P2 GPU Memory」を選び、
「192 192MiB for ARM, 64MiB for VideoCore」などを選択し、ビデオメモリを増やします。
最後にFinishを選び、メニュー画面から再起動をします。
再起動後にブラウザでyoutubeにアクセスし、動画が滑らかに再生できるか確認しましょう。
なお、サウンド出力は別途設定が必要になりますので、音がならない場合には各自で調べて設定してください。
この設定は適宜変更して、利用するアプリに応じてパフォーマンスが最大化されるようにしておきましょう。
(メモリが8Mあるラズパイだと安心ですね。)
おまけ3 : ソフトウェアのアップグレード
ROSが入る前にアップグレードするとちょっと怪しい感じでしたが、ROS導入後は無事にアップグレードが通りました。ので、ここでやっておくとスッキリするかもしれません。事前のバックアップを忘れずに。
sudo apt upgrade
時間はかなりかかります。
おわりに
ubuntu専用機を持っておらず、ラズパイでubuntuとROS-noeticをつかうならデスクトップ環境もつかえるこのMATEで作るのがなにかと便利な気がします。
また、さらに快適に使いたい場合には、メモリカードからではなく、高速なUSBメモリにUSBブータブルなOSを入れ、USB3.0コネクタに挿して使えばもっとキビキビと動くかもしれません。
SDカードは16GBと32GB両方試したところ、16GBの方が動きが軽妙な気がしましたが、容量ではなくカードの品質の差かもしれません。
前にも同じような記事を書きましたが、もう2年前のものになります↓
[Qiita] ラズパイ4/BusterにROSのmelodicを入れる