はじめに
ロボット制御のデファクトスタンダードになっているROS(Robot OS)を勉強している。
Kobukiみたいな既にROSインストール済のロボットでROSの基礎を学習中だが、自前で一から勉強してみたくなったので、お手軽なRaspberry piを使って自作ロボットを作ってみたいと思う。
Hostマシン : Raspberry Pi 3
使用Soft : Ubuntu 16.04 LTS / ROS Kinetic
使用ロボットHW : 市販二輪走行ロボット(次回に説明)
パッケージサポートが整っている Ubuntu 14.04 / ROS Indigo を選択したかったが、その場合 Raspberry Pi3では動かずRaspberry Pi 2 になると聞いたので、今回は Ubuntu 16.04 LTS / ROS Kinetic を選択した。
Ubuntu Server 16.04 のインストール
基本的には、下記サイトの参考にした
gihyo.jp
母艦Ubuntu PCで
https://wiki.ubuntu.com/ARM/RaspberryPi
から ubuntu-16.04-preinstalled-server-armhf+raspi3.img.xz をダウンロード。
Ubuntu PCの場合、 xzcat コマンドでSDカードに書き込む。この際、SDカードの有無時の/dev/のファイル増減から指定する/dev/ファイルを見つける。私の環境では/dev/sde1 であった。(/dev/sd** or /dec/mmcblk***のどれかになる模様)一旦、SDカードがmountしている場合はumountしておいた方がよい
$ xzcat ubuntu-16.04-preinstalled-server-armhf+rasPi 3.img.xz | sudo dd of=/dev/sde1
時間がまぁまぁかかる。もし途中経過が分からず不安ならば、別ターミナルで以下のコマンドを入力する
$ sudo killall -USR1 dd
Windows PCの場合、7zipで解凍して、出てきたimgファイルをDDforWindowsなどでSDカードに書き込む。(この際、管理者権限で実行しないとうまくSDスロットを認識してくれないので注意)
ラズパイでのUbuntu立ち上げ
続いて、書込み後のSDをラズパイに挿入して、電源ON。
コンソール画面が出るのでログイン/パスワードを入力(デフォルトは"ubuntu/ubuntu")。
次に設定ファイルの更新をします。この修正をしないと、ソフトアップデートした際にOSが起動しなくなるとの事。
/boot/firmware/config.txtを以下の様に編集します。
#device_tree_address=0x100 ←コメントアウトする #device_tree_end=0x8000 ← コメントアウトする device_tree_address=0x02008000 ←追記する
この修正後に、"sudo apt update"→"sudo apt upgrade" を実施する。その後、rebootを実施して、立ち上がる事を確認する。
各種設定
sshで入るため、下記設定を行う
sudo apt-get install avahi-daemon
続いて、PPAを設定する。
sudo add-apt-repository ppa:ubuntu-raspi
/etc/apt/sources.listを次のように書き換える
deb http://jp.archive.ubuntu.com/ports/ xenial main restricted universe multiverse deb-src http://jp.archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse deb http://jp.archive.ubuntu.com/ports/ xenial-security main restricted universe multiverse deb-src http://jp.archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse deb http://jp.archive.ubuntu.com/ports/ xenial-updates restricted main multiverse universe deb-src http://jp.archive.ubuntu.com/ubuntu/ xenial-updates restricted main multiverse universe deb http://jp.archive.ubuntu.com/ports/ xenial-backports restricted main multiverse universe deb-src http://jp.archive.ubuntu.com/ubuntu/ xenial-backports restricted main multiverse universe
$ sudo vi /etc/hosts → 2行目に127.0.0.1 ubuntuがあるか確認し,ない場合は追加 $ sudo locale-gen ja_JP.UTF-8 $ echo "LANG=ja_JP.UTF-8" | sudo tee /etc/default/locale $ sudo dpkg-reconfigure -f noninteractive locales $ echo "Asia/Tokyo" | sudo tee /etc/timezone $ sudo dpkg-reconfigure -f noninteractive tzdata $ sudo vi /etc/default/keyboard → XKBLAYOUT="us"をXKBLAYOUT="jp" に変更 $ sudo dpkg-reconfigure -f noninteractive keyboard-configuration
ここまで来たらいったん再起動。
GUIログイン設定
パッケージをインストール
$ sudo apt install ubuntu-desktop gnome-session-flashback xserver-xorg-video-fbturbo dphys-swapfile $ sudo vi /etc/X11/xorg.conf → 以下の記載を追加(新規作成) Section "Device" Identifier "Raspberry Pi FBDEV" Driver "fbturbo" Option "fbdev" "/dev/fb0" Option "SwapbuffersWait" "true" EndSection $ sudo vi /etc/network/interfaces → 以下をコメントアウト # Source interfaces # Please check /etc/network/interfaces.d before changing this file # as interfaces may have been defined in /etc/network/interfaces.d # See LP: #1262951 # source /etc/network/interfaces.d/*.cfg
ここまで来たらいったん再起動。その後、Ubuntuロゴをクリックするとセッションが選択できるので,[GNOME Flashback (Metacity)]を選択してログインできれば成功。
無線の設定
ここははまりかけたので注意。
まずは、電波帯の国設定
$ echo "JP" > sudo tee /etc/wpa_supplicant/wpa_supplicant.conf
続いて、/etc/network/interfacesの修正をする。
# source /etc/network/interfaces.d/*.cfg ←コメントアウトされている事を確認 以下の4行を追加 auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/[SSID名].conf wireless-power off
その後、[SSID名前\],confを作成する。
$ sudo -s # apt install wpasupplicant # wpa_passphrase [SSID名] [パスワード] > /etc/wpa_supplicant/[SSID名].conf # less /etc/wpa_supplicant/[SSID名].conf network={ ssid="[SSID名]" #psk="[パスワード]" psk = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx } # apt install wireless-tools
これで、"ifup wlan0" をすれば wlan0 が見える!と思いきや、、、見えない…
何故だ!?とWebを調べていくと以下のサイトを発見
github.com
どうやら2017/4/13以降のソフトアップデートが原因の様で、以下のコマンドで回避できるとのこと。
$ cd /lib/firmware/brcm/ $ sudo wget https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm80211/brcm/brcmfmac43430-sdio.bin -O brcmfmac43430-sdio.bin $ sudo wget https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm80211/brcm/brcmfmac43430-sdio.txt -O brcmfmac43430-sdio.txt $ sudo reboot
これで無事にWifiが見えた! よかった
次回
いよいよ ROS インストールに行きます。(先は長いなぁ)