vegetegev

vegetegev

忘備録を書き留めています。

Amebaでブログを始めよう!

ラズベリーパイにUbuntu16.04とROS-Kineticをセットアップ

Raspberry Pi用のUbuntuイメージをダウンロードします。ARM/RaspberryPi から 「Raspberry Pi3: ubuntu16.04.2 LTS classic image」をダウンロードします。ダウンロードしたファイルは圧縮されているため解凍します。 解凍は7zipなどのソフトが使用できます。Windowsで作業する場合は、Win32 Disk Imager を使ってSDカードへ書き込むことができます。Ubuntuを書き込んだSDカードをRaspberry Pi 3へ装着して起動します。

リモートPCからRaspberry Pi へSSH接続

デフォルトの状態ではDHCPが有効になっているため、LAN上のホストを検索してRaspberry Pi3のIPアドレスを調べます。

Windowsで検索する場合は、netenum 等のフリーソフトを使うと便利です。

Linuxの場合: nmap -sP ネットワークアドレス(192.168.0.0/24 や 192.168.0.*) で検索できます。

Ubuntuheへログイン

UbuntuにSSHで接続し、ログインします。

デフォルトのログイン名は: ubuntu、パスワードはubuntuです。新規パスワードを聞かれるので必要に応じて設定します。

/etc/hosts の修正

/etc/hostsを開いてホスト名を追加します。

127.0.0.1 localhost

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

「 127.0.0.1 localhost 」の下にホストを追加します。

次ぎの1行を追加します。
「 127.0.0.1 ubuntu ]
これを追加しないと、「 sudo: unable to resolve host ubuntu 」と表示が出ます。

ROS Kineticをセットアップ

参照: ROS KineticのUbuntuへのインストール

source.listを設定する

ubuntuではパッケージ管理システムとして,Advanced Packaging Tool(APT)が採用されています。 本システムを用いてROSをインストールします。 本システムでは,パッケージを配布するサーバのアドレスを記述したリスト(sources.lst)からパッケージをダウンロードします. そこで,ROSのダウンロード先のアドレスをsources.lstに追加します。 (packages.ros.org からソフトウェアを受容するよう以下の設定をします。

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

認証鍵の設定(リポジトリの追加)

ROSのパッケージが信頼できることを証明するために鍵を使用します.下記のように鍵をダウンロードし,リポジトリに追加します。

$ sudo apt-key adv -keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

 

キーサーバーへのアクセスに問題があれば、

hkp://pgp.mit.edu:80またはhkp://keyserver.ubuntu.com:80も利用可能です。

ubuntuのアップデート

ここで、以下のエラーが出た場合:

$ GPG エラー: http://ftp.jp.debian.org wheezy-backports Release: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY F42ED6FBAB17C654
このサイトを参照にして、次を実行するとエラーが解消されます。

--recv-keysの次に上記エラーのNO_PUBKEY以降のキーを記載して実行します。
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654

$ sudo apt-get update 6

ROS kineticのインストール

1.       全てのデスクトップ環境のインストール(推奨): ROS, rqt, rviz, ロボットの一般的なライブラリ、2D/3Dシミュレータ、ナビゲーション、2D/3D認識

$ sudo apt-get install ros-kinetic-desktop-full python-rosinstall

rosdepの初期化

ROSのパッケージの多くは,他のパッケージと依存関係(あるパッケージが他のパッケージを使用)にあります。 rosdepは,自動的にパッケージ間の依存関係の整合性を取るものです。 ここでは,ROSを使用ために初期化します。

ROSを使用可能にする前に、rosdepを初期化する必要があります。 rosdepはコンパイル対象となるソースのシステム依存のインストールを簡易化し、ROSの中でいくつかコアとなる コンポーネントを実行するために必須とされています。

$ sudo rosdep init
$ rosdep update

環境の構築

ROSの環境変数を設定します。

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

端末を起動する度に上記を実行する必要があるため,下記のように設定すると楽です。

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

rosinstallの追加(コマンドラインツールのインストール)

rosinstall は、別途配布されているものとして、ROS中で頻繁に使用されるコマンドライン・ツールです。 膨大なROSパッケージのソースツリーを、たった一つのコマンドで簡単にダウンロードできるようにします。 Ubuntuでこのツールをインストールするには、以下のコマンドを実行します:

$ sudo apt-get install python-rosinstall

ここまででUbuntuとROSのセットアップは終了です。

ROSインストール後の処理

2-1-7-1. 作業フォルダ(ワークスペース)の作成と初期化

ROS は catkin という ROS 専用のビルドシステムを使用しています。 このビルドシステムを使用するために catkin 作業フォルダを作成し、作業フォルダ内を初期化する必要があります。
※この設定は、ROSインストール後に一度だけ行えばよい。

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace

※ 1.のワークスペース名は任意の名前を使用可能です。
※ 2.は CD!$ でも代用できます。

ビルド

catkin ワークスペース作成後、試しにワークスペース内のプログラムは」次のようにしてビルドします。

$ cd ~/catkin_ws/
$ catkin_make

ビルドすると、既にある src フォルダのほかに、build フォルダ、devel フォルダが新たに作成されます。

$ ls
$ build devel source

ここで各フォルダには次のファイルが格納されています。

build フォルダ :  catkin ビルドシステムのビルドに関連するファイル
devel フォルダ :  実行に関連するファイル

bashrcを書き換える

端末を起動した際に、製作したワークスペース関係の設定を bash に読み込ませるように、.bashrc を書き換えます。

$ cd ~
$ sudo vim .bashrc

 

source /opt/ros/kinetic/setup.bash #の下に以下の行を追加します。

source ~/catkin_ws/devel/setup.bash

※ catkin_ws 以外にワークスペースを作成した場合は、作成したワークスペースも列記します。

ROSのパッケージの作成方法

$ cd ~/catkin_ws/src
$ catkin_create_pkg my_pckage std_msgs rospy roscpp

これにより、test1 というパッケージフォルダが作成されます。作成後ビルドします。

$ cd ~/catkin_ws
$ catkin_make