FC2ブログ

raspi4にROS-kineticを入れる


自分用にRaspi4にKineticを入れたSDイメージも作っておいた方が良さそうなので作っておきました。
melodicよりも需要ありそう。
Raspi3へのROS-kineticインストールは簡単だったのですが、Raspi4-kineticとなるとまた面倒が。
そのままではインストールがうまくいかないので、なかなか大変でした。。。
余力があったらQiita化しておきます。まずは自分メモ。



参考URL
インストール方法
https://wiki.ros.org/ROSberryPi/Installing%20ROS%20Kinetic%20on%20the%20Raspberry%20Pi

boostのダウンロードもと
https://www.boost.org/users/history/version_1_58_0.html

boostのビルド方法
https://boostjp.github.io/howtobuild.html


■ 環境
・ラズパイ4でSDカードはNoobsから入れたもの。
・devian version 10.1
・カーネルのバージョン Linux raspberrypi 4.19.75-v7l+

■ 公式のインストール手順を途中まで行う。

$ sudo apt-get install dirmngr

$ 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 upgrade
(注:公式通りのsudo apt-get upgradeだと引っかかることがある)

$ sudo apt-get install -y python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential cmake

$ sudo rosdep init
$ rosdep update

$ mkdir -p ~/ros_catkin_ws
$ cd ~/ros_catkin_ws

■ ROS-Comm: (recommended) を入れる。
(Desktopを入れようとするとOpenCVのところで引っかかるのですが未解決のため)

$ rosinstall_generator ros_comm --rosdistro kinetic --deps --wet-only --tar > kinetic-ros_comm-wet.rosinstall
$ wstool init src kinetic-ros_comm-wet.rosinstall


■ 3.2 依存関連の処理

$ 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

$ cd ~/ros_catkin_ws
$ rosdep install -y --from-paths src --ignore-src --rosdistro kinetic -r --os=debian:buster

■ Boost1.58.0を導入する

公式サイトにも記載がありますが、kineticの中にあるrospackファイルがBoost1.58.0を利用して作られているため、このrospackのためだけにBoost1.58.0を準備してあげる必要があります。
すでにインストールされているBoostは別のファイルが利用するため、隔離された特別な場所にBoost1.58.0を入れておきます。当例ではrospackの中にboostディレクトリを作成し、その中に格納しています。その上で、rospackがその場所のBoostを参照しに行くようにファイルを数箇所書き換えます。

$ cd ~/ros_catkin_ws/src/rospack
ダウンロード
$ wget http://sourceforge.net/projects/boost/files/boost/1.58.0/boost_1_58_0.tar.gz
解凍
$ tar -zxvf boost_1_58_0.tar.gz
$ rm boost_1_58_0.tar.gz

実行ファイルの作成
$ cd ~/ros_catkin_ws/src/rospack/boost_1_58_0
$ sudo sh bootstrap.sh

$ mkdir ~/ros_catkin_ws/src/rospack/boost
$ sudo ./b2 install -j2 --prefix=/home/pi/ros_catkin_ws/src/rospack/boost
ls

■rosBoost関連のファイルの修正


$ sudo nano /home/pi/ros_catkin_ws/src/rospack/include/rospack/rospack.h
として、ファイルの中身から
#include <boost/tr1/unordered_set.hpp>
#include <boost/tr1/unordered_map.hpp>
をそれぞれ
#include </home/pi/ros_catkin_ws/src/rospack/boost/include/boost/tr1/unordered_set.hpp>
#include </home/pi/ros_catkin_ws/src/rospack/boost/include/boost/tr1/unordered_map.hpp>
に書き換える。


$ sudo nano /home/pi/ros_catkin_ws/src/rospack/src/utils.cpp
として
#include <boost/tr1/unordered_set.hpp>

#include </home/pi/ros_catkin_ws/src/rospack/boost/include/boost/tr1/unordered_set.hpp>



$ sudo nano /home/pi/ros_catkin_ws/src/rospack/boost/include/boost/tr1/unordered_set.hpp
を開いて、3箇所書き換える。
# include <boost/tr1/detail/config.hpp> を
# include </home/pi/ros_catkin_ws/src/rospack/boost/include/boost/tr1/detail/config.hpp> に。
また
# include <boost/tr1/detail/config_all.hpp> を
# include </home/pi/ros_catkin_ws/src/rospack/boost/include/boost/tr1/detail/config_all.hpp> に。
また
#include <boost/unordered_set.hpp>を
#include </home/pi/ros_catkin_ws/src/rospack/boost/include/boost/unordered_set.hpp> に書き換える。


<p>
$ sudo nano /home/pi/ros_catkin_ws/src/rospack/boost/include/boost/tr1/unordered_map.hpp
# include <boost/tr1/detail/config.hpp> を
# include </home/pi/ros_catkin_ws/src/rospack/boost/include/boost/tr1/detail/config.hpp> に。
また
# include <boost/tr1/detail/config_all.hpp> を
# include </home/pi/ros_catkin_ws/src/rospack/boost/include/boost/tr1/detail/config_all.hpp> に。
また
#include <boost/unordered_map.hpp> を
#include </home/pi/ros_catkin_ws/src/rospack/boost/include/boost/unordered_map.hpp> に
書き換える。
</p>

■ スワップ領域を増やす
CONF_SWAPSIZE=1024
CONF_SWAPFILE=/mnt/sda1/swap.file
(ここで再起動したほうがよいかどうかわからないけどそのまま進みます)

■ いよいよワークスペースのビルド
$ cd ~/ros_catkin_ws
$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/kinetic -j2
(苦労した身としてはこれがすんなり行くとかなり気持ちよい。)

■ ソースの追加とバッシュへの登録
$ source /opt/ros/kinetic/setup.bash
$ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc

■ 4.ソースのメンテ
$ sudo apt-get install python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential
$ rosdep update

$ cd ~/ros_catkin_ws
$ rosinstall_generator ros_comm ros_control joystick_drivers --rosdistro kinetic --deps --wet-only --tar > kinetic-custom_ros.rosinstall

$ wstool merge -t src kinetic-custom_ros.rosinstall
$ wstool update -t src

$ rosdep install --from-paths src --ignore-src --rosdistro kinetic -y -r --os=debian:jessie
$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/kinetic
スポンサーサイト



RALF_01 : まずラズパイ4にROS-melodicを入れる

あけましておめでとうございます。


Raspberrypi4用OSのRasbianはBusterというバージョンが使えます。
ROSも新しいMelodicを入れたいところですが、ROS入りのイメージはまだ配布されていないようで、自分でビルドする必要があります。
ビルドガイドが紹介されていますので、それに沿って導入してみます。
https://www.instructables.com/id/ROS-Melodic-on-Raspberry-Pi-4-RPLIDAR/

また環境構築からかぁ〜って思っちゃいますが、今回はクリーンインストールで再現性があるようにしておこうと思います。


▼ まず環境確認

基盤:ラズパイ4
OS:debian_version 7.8
カーネル:Linux raspberry 4.19.75

ちなみにRasbian のバージョン確認方法とカーネルのバージョン確認方法
$ cat /etc/debian_version
>7.8
$ uname -a
>Linux raspberry 4.19.75-v71+ #ほにゃらら


▼ いつもの準備

$sudo apt-get update
$sudo apt-get upgrade


▼ ROSを入れる(melodic)
そのままではまだインストールできないので下記を参考にビルドする。下記URLのステップ3までをやる。
https://www.instructables.com/id/ROS-Melodic-on-Raspberry-Pi-4-RPLIDAR/
http://wiki.ros.org/melodic/Installation/Debian を参考にしてもうまくいかない。)

$ 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-get update
$ sudo apt-get install -y python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential cmake
$ sudo rosdep init
$ rosdep update

ros_catkin_ws の 作成:
$ mkdir ~/ros_catkin_ws
$ cd ~/ros_catkin_ws

ROS Desktop の Install:
$ rosinstall_generator desktop --rosdistro melodic --deps --wet-only --tar > melodic-desktop-wet.rosinstall
$ wstool init -j8 src melodic-desktop-wet.rosinstall

(上記のインストールが途中で止まったら右記で再開 $ wstool update -j4 -t src)

依存関係の細かな修正:
$ 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

OGRE for rvizのインストール:
$ sudo apt-get install libogre-1.9-dev

※元のサイトのこのあたりで出てくる「Finally we'll need to fix the issues with libboost….」の修正項目(boost::posix_time::milliseconds関連の修正)は、元のファイルに修正が入ったようで今はは必要なさそうです。

次に以下を実施。(ここは時間がかかります。)
$ cd ~/ros_catkin_ws
$ rosdep install --from-paths src --ignore-src --rosdistro melodic -y

Build と Install:
$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/melodic -j2
(ここはもっと時間がかかる。1時間ぐらい?)

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

一旦再起動。
$ sudo reboot

roscoreを起動。(上記のrebootなしで動かそうとしたら動きませんでした。)
$ roscore

ちなみにturtlesimもテスト。
$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key


よし動いた。

th_IMG_6858.jpg



こちらをベースに、自分用にカスタマイズしたRALFシステムを乗せていきます。

テーマ : 自然科学
ジャンル : 学問・文化・芸術

プロフィール

二名川(ニナガワ)

Author:二名川(ニナガワ)
ホビーロボットをレトロゲームが発展したものと捉えて楽しく遊び倒します。
子供が夢を見ている時間帯に稼働します。

電子出版
「コンソロイド ガイドブック」
46107_CONSOLOID_GUID_FACE_200.jpg





■作成中の機体
汎用ヒト型決戦遊具 ~RX計画~
RX-7.5 ゼロタンク
RRf-0.6 ゼニィ
RXM-7.9 ゼムネス
RX-7.5R 量産型ゼロタンク
RX-7.5Fp ファミタンク仮設1号
RX-7.7 ゼロキャノン
RX-7.8 ゼログレイ
SMS-0.1 ゼロライナー
以下続く

RX整備計画(仮)

ブログ内検索
最近の記事
最近のコメント
カテゴリ
月別アーカイブ
リンク