今日も生きる

いろいろな闘いを描くブログ。ここで発信する内容はあくまで私個人の意見であり、現在所属する会社の公式見解を示すものではありません。

ROS Indigoを使うがためにRaspberryPi3に「Ubuntu 14.04」をインストールし、WiFiまで使えるようにする方法

まえがき

ROS Indigoを使うがためだけに、RaspberryPi3に「Ubuntu 14.04」を入れたい。

既報として、RaspberryPi3にUbuntu 14.04とROS indigoをインストール | RT MicroMouseにて、OS及び、ROSのインストール方法が整備されているのでこれに従いインストール。

この方法でRaspberryPi3でUbuntu14.04環境は手に入れることが出来るのだが、RaspberryPi3の売りの一つであるWiFiが使えない!!!!!!(少なくとも僕が試した内では。。。)

いろいろ試行錯誤の末、なんとかWiFiが動かせるようになったのでその手順をメモ。

(なお、特にROS Indigoにこだわりが無ければ、「Ubuntu Mate 16.04」のイメージが公開されているのでそれを使うのがいいと思う。) ubuntu-mate


前手順

RaspberryPi3にUbuntu 14.04とROS indigoをインストール | RT MicroMouseに従い、OSインストール。(ROSはまだインストールしない。)

WiFi接続に必要なファームウェアをインストール

sudo apt-get install linux-firmware wireless-tools wpasupplicant

RaspberryPi3用ファームウェアの用意

今回最大の肝。RaspberryPi3のWiFiの利用には、pi 3 - Configure WLAN for RaspberryPI3 using image created with Yocto - Raspberry Pi Stack Exchangeあたりを見ていると、linux-firmware-brcm43430が必要らしいということが分かる。Ubuntu14.04のリポジトリからsudo apt-get linux-firmwareしても上記のファームは入らないようである。 なので、とりあえず今回は、次のファームを「Ubuntu Mate 16.04」から引っこ抜いた。引っこ抜いたファームを、/lib/firmware/brcm/へとコピーする。(ダウンロードはぱっと探した感じ見つからない。) * brcmfmac43430-sdio.bin * brcmfmac43430-sdio.txt

cp brcmfmac43430-sdio.bin /lib/firmware/brcm/
cp brcmfmac43430-sdio.txt /lib/firmware/brcm/

WiFiの設定

sudo vi /etc/network/interfaces
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
  • アクセスポイントの設定。
sudo wpa_passphrase {SSID} {PASS} > sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf
sudo ifup wlan0
  • 遅くならないように、wlan0の設定を変更。
sudo vi /etc/rc.local
iwconfig wlan0 power off

所感

とりあえず、WiFiは動くようになった。Bluetoothに関してはかなり難易度が高い模様。(挫折) Bluetoothが動く方法があれば教えてください。

Angular.jsで"緯度経度"の入力を補助するDirective、angular-geopickerを作った

前置き

35.689265,139.691763.......................長い、長すぎる。

ということで、Angular.jsの勉強を兼ねて、

需要はあまりなさそうだが、入力が面倒な"緯度・経度"の数値を簡単に入力するためのテキストボックスのディレクティブ、angular-geopickerを作ってみた。

github.com

 

デモページ

http://fudekun.github.io/angular-geopicker/

f:id:fukku_n:20150731224152p:plain

 

こんなことができる。

使う側
  • このテキストボックスにフォーカスすると、地図(Open Streat Mapより)がポップアップする。ポップアップした地図上で緯度経度の値が欲しい場所をクリックすると、テキストボックスにはクリックした場所の緯度経度を入力することがきできる。
  • クリックした場所には、マーカーが表示される。マーカーはドラッグ&ドロップで移動可能で、テキストボックスの入力はマーカーの座標に追従して変化する。
実装側
  • 小数点以下の桁数が指定できる
  • デリミタが指定できる
  • 10進数、60進数の指定ができる

 

今後

できたらいいな。

  • 住所とか郵便番号とかへの変換
  • 日本測地系への変換
  • MGRSへの変換

 

Raspberry PiにPidoraをインストールしてみる

Raspberry Pi Model Bを購入した。

前々から、外付けHDD(2TB)がほとんど使われていない状況が続いておりせっかく買ったのに勿体ないと感じていた。(MacBook Airに買い換えてから持ち運ぶ度にいちいちUSBケーブルをつなぐのが面倒になった。。。)

そこで、Raspberry Piを使って外付けHDDをネットワークドライブ化しようと画策。ついに秋葉原千石電商にて購入するに至った。 

以下、備忘録。

環境

イメージの書き込み:Mac OS X(10.9.3)

SDカード:microSDHCカードをアダプタを使って利用(Transcend製、Class4)

ネットワーク:有線LAN接続(既存DHCPをIP固定で利用)

 

OS選び

Raspbian or Pidoraかで小一時間悩む。

NOOBS (New Out Of the Box Software)というものがあって、それを使えば複数のOSをSDカードにしまっておいて起動時に選択ができるようになる模様。しかし、今回は手元のSDカードが小さいため単一のOSに絞ることにした。

最終的にはCentOSになれていることもあってPidoraを採用。

以下からPidoraのイメージをダウンロード。

http://www.raspberrypi.org/downloads/

 

イメージを書き込み

ダウンロードしてきたZIPファイル(Pidora-2014-R1.zip)を解凍。

$ cd Pidora-2014-R1

$ ls

Pidora-2014-R1.img        Pidora-2014-R1.img.md5sum

 ddコマンド(ファイルの変換とコピーを行うコマンド)でSDカードへイメージファイル(Pidora-2014-R1.img)を書き込む。

ddコマンドはSDカードをアンマウントしてから実行する。SDカードのマウント位置はdfコマンドで確認可能。

イメージの転送が終わったらSDカードをアンマウントして取り出す。

$ df

$ diskutil unmount /dev/disk1s1

$ sudo dd bs=1m if=Pidora-2014-R1.img of=/dev/rdisk1

Password:

2177+1 records in

2177+1 records out

2283643904 bytes transferred in 440.678777 secs (5182105 bytes/sec)

$ diskutil unmount /dev/disk1s1

起動

完成したSDカードをRaspberry Piのスロットルに挿入。続いて、「LANケーブル」、「HDMIケーブル」、「マウス」、「キーボード」が接続されていることを確認した後、電源を投入。(Raspberry PiはminiUSBで給電開始で起動。スイッチはない。)

初回はGUIで設定することにした。いろいろ画面に従って操作。

確認

クライアントからSSHでログインできることを確認する。

DHCPへのアクセス情報からMACアドレスを取得。IPアドレスを固定。

 $ ssh <Pidoraのユーザ名>@<PidoraのIPアドレス>

ログインができることが確認できた。

セキュリティ設定

鍵認証の設定

#Pidora側 

$ mkdir ~/.ssh

$ chmod 700 ~/.ssh

 

#クライアント側(公開鍵・秘密鍵が作ってないときは作成する)

ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/Users/tatsuya/.ssh/id_rsa): <<パスフレーズなしでログインしたいので何も入力せずEnter>>

$ scp ~/.ssh/id_rsa.pub <Pidoraのユーザ名>@<PidoraのIPアドレス>:~/.ssh/id_rsa.pub

 

#Pidora側 

$ cd ~/.ssh

$ mv id_rsa.pub authorized_keys

$ chmod 600 authorized_keys

rootログイン無効、パスワード認証無効、ポート番号変更
$ sudo vi /etc/ssh/sshd_config

 #PermitRootLogin yes
↓【変更】
PermitRootLogin no

 

PasswordAuthentication yes

↓【変更】

PasswordAuthentication no

 

#Port 22

↓【変更】

Port <新しいポート番号>

ssh再起動

$ sudo service sshd restart

確認

接続確認完了。

#クライアント側

$ ssh <Pidoraのユーザ名>@<PidoraのIPアドレス> -p <新しいポート番号>

 

モジュールアップデート

SDカードが遅いせいか2時間近くかかった。。。

$ sudo yum -y update

 

とりあえず使いはじめる段階まで持ってきた。 

W杯、本田△。。。