Raspberry Pi にRaspbian環境でROSをインストール
目次
はじめに
オープンソースで開発が進められているROS(Robot Operating System)がロボット製作に便利であるという情報を聞きつけ、試してみたくなった&勉強したいので、自宅RaspberryPiにインストールしてみます。
環境
・ボード : Raspberry Pi 3 Model B Rev 1.2
・SDカード : 32GB
・OS : Raspbian GNU/Linux 10 (buster)
・日本語環境にてセットアップ
・Raspberry Pi専用の7inchタッチパネル搭載
※ただし、SSH接続で遠隔操作しているため、あまり関係なし
インストール手順
前準備
1. dirmngrをインストールする(リポジトリにアクセスするために必要?)
sudo apt-get install dirmngr
2.ROSリポジトリのセットアップ
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
3.Bootstrapの依存関係を解消するために必要なパッケージをインストール
sudo apt-get install -y python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential cmake
4.rosdepの初期化を行う
sudo rosdep init rosdep update
ROSセットアップ
1.catkin ワークスペースを作成する
mkdir -p ~/ros_catkin_ws cd ~/ros_catkin_ws
2.ROSインストールに必要なパッケージを集める
rosinstall_generator ros_comm --rosdistro kinetic --deps --wet-only --tar > kinetic-ros_comm-wet.rosinstall wstool init src kinetic-ros_comm-wet.rosinstall
3.collada_urdfの代わりにassimpを入れる(?)
mkdir -p ~/ros_catkin_ws/external_src cd ~/ros_catkin_ws/external_src wget http://sourceforge.net/projects/assimp/files/assimp-3.1/assimp-3.1.1_no_test_models.zip/download -O assimp-3.1.1_no_test_models.zip unzip assimp-3.1.1_no_test_models.zip cd assimp-3.1.1 cmake . make sudo make install
※makeにまぁまぁ時間が掛かるので待つ(30分くらい?)
4.rosdepで依存関係を解消する
cd ~/ros_catkin_ws rosdep install -y --from-paths src --ignore-src --rosdistro kinetic -r --os=debian:buster
5.catkinワークスペースをビルドする
sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/kinetic -j2
※ビルドしている最中にメモリ不足でエラーが出て止まるらしいので、"-j2"オプションを入れておく。
6.以下のようなエラーが出てしまった...
make[2]: *** [CMakeFiles/rospack.dir/build.make:76: CMakeFiles/rospack.dir/src/rospack_backcompat.cpp.o] Error 1 /home/pi/ros_catkin_ws/src/rospack/src/utils.cpp:31:10: fatal error: boost/tr1/unordered_set.hpp: No such file or directory #include <boost/tr1/unordered_set.hpp> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated. make[2]: *** [CMakeFiles/rospack.dir/build.make:102: CMakeFiles/rospack.dir/src/utils.cpp.o] Error 1 make[1]: *** [CMakeFiles/Makefile2:371: CMakeFiles/rospack.dir/all] Error 2 make: *** [Makefile:141: all] Error 2 <== Failed to process package 'rospack': Command '['/opt/ros/kinetic/env.sh', 'make', '-j4', '-l4']' returned non-zero exit status 2 Reproduce this error by running: ==> cd /home/pi/ros_catkin_ws/build_isolated/rospack && /opt/ros/kinetic/env.sh make -j4 -l4 Command failed, exiting.
どうもrospackというのはboostというライブラリに依存しているようで、boost1.58のバージョンが必要らしい。使用していたRaspbian(Buster)では、boost1.67だったので、互換性なくmakeが通らなかった模様。ros wikiに書かれているとおり、
sudo apt remove libboost1.67-dev sudo apt autoremove sudo apt install -y libboost1.58-dev libboost1.58-all-dev sudo apt install -y g++-5 gcc-5 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 20 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 20 sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30 sudo update-alternatives --set cc /usr/bin/gcc sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30 sudo update-alternatives --set c++ /usr/bin/g++ sudo apt install -y python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential cmake
7.再度ビルドする
sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/kinetic -j2
これでエラーを吐くことなく、終了することができました。
動作確認
1.起動時にROSのセットアップが走るように設定
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source /opt/ros/melodic/setup.bash
2.以下のコマンドでroscoreを動かしてみます。
roscore
これで以下のような表示がされれば、ROSが正常にインストールされています。
ここまでお付き合いいただきありがとうございます。お疲れ様でした。
... logging to /home/pi/.ros/log/da6fa3ac-8a2b-11ea-a636-b827eb1690ee/roslaunch-raspberrypi-19512.log Checking log directory for disk usage. This may take awhile. Press Ctrl-C to interrupt Done checking log file disk usage. Usage is <1GB. started roslaunch server http://raspberrypi:46695/ ros_comm version 1.12.14 SUMMARY ======== PARAMETERS * /rosdistro: kinetic * /rosversion: 1.12.14 NODES auto-starting new master process[master]: started with pid [19522] ROS_MASTER_URI=http://raspberrypi:11311/ setting /run_id to da6fa3ac-8a2b-11ea-a636-b827eb1690ee process[rosout-1]: started with pid [19535] started core service [/rosout]
失敗事項
Desktop版を入れようとしたところ、OpenCVのmakeに失敗をしているようで、以下のようなエラーが出て、先に進めず。 自力では解決負荷だったため、Desktop版を諦め、ROS-Comm版を入れることに...残念。
おわりに
まずは、ROSを試験する土台を立てることができました。これからはROSでのアプリケーション作成をやってみます。
感想
久しぶりにLinuxでのロボットを動かす環境の構築をやってみて、大学・大学院時代のRTAIのセットアップに苦労していた頃を思い出しました。Webサイトで掲載されている日本語情報を頼りにしても、想定外のエラーが出てしまうことがあり、結局は、公式サイトの英語記事を読みながら進めていって、何とか、インストールすることができました。海外サイトの英語と格闘しながら進めていくのには、粘り強い忍耐が必要ですね。もっとさらっと進められるだけのスキルがあればよいのですが、まだまだ力及ばずのところばかりです。