BeagleBoard-xM バッテリー駆動

BeagleBoardを完全ワイヤレスにするために、バッテリーで駆動させてみます。BeagleBoardの電源は5Vで、電流は接続予定のUSB機器を含めると、本体:750mA, カメラ:500mA, 無線LAN:(情報なし)なので、1.5Aぐらい必要です。


まずは、手持ちの3端子レギュレーター(NJM7805FA)で試してみました。

eneloop6本の7.2Vでは電圧が足りないせいか、BeagleBoard動作時の電圧が4.5Vぐらいまで落ちてしまい、再起動を繰り返す状態になってしまいました。

次にKHR用の10.8Vバッテリー(ニッケル水素9本)を試してみました。
無線LAN子機とカメラを接続した状態でも動作はするものの、3端子レギュレーターが熱くてさわれない状態になってしまいました。
カメラを使用中はおそらく1A以上流れていますので、(10.8V-5V)×1A=5.8W以上が熱になっている計算になります。
これでは使い物になりません。


というわけで3端子レギュレーターはあきらめて、秋月のDC-DCコンバーターHRD05003Eを購入しました。このDC-DCコンバーターは5V 3A出力でき、スイッチングレギュレータなので、効率良く降圧できそうです。値段も¥300と経済的です。

入力電圧と出力電圧の差が3V以上必要とのことで、eneloop6本の7.2Vでは足りていませんが、少なくとも充電直後は使えるようです。どのぐらいの時間使えるかは今後調べたいと思います。KHR用の10.8Vバッテリーも問題ありませんでした。発熱もカメラを使用した状態でもほんのり温かくなる程度でした。



これで完全ワイヤレス化ができました。
とりあえず無線カメラとして使用できる状態です。別の部屋に置いて映像を見ることができました。


バッテリー駆動ができるようになったので、以前作った↓の台車に載せてみたいと思います。

BeagleBoard-xMでUSBカメラ(その2)

前回、有線LANでUSBカメラ LOGICOOL C905m での動画配信の実験をしましたが、無線LANが使えるようになったので、無線LANで試してみました。



キーボード・マウス・ディスプレイは外し、PCからはsshで接続します。
ケーブルは5Vの電源ケーブルがつながっているのみです。こうなると早くバッテリで動かしたくなります。


前回と同じくmjpg-streamerで配信します。
当たり前ですが、特に問題なく動きました。スピードも有線LANと大きな違いはなさそうです(無線親機と1mぐらいしか離れていませんが。)


バッテリーで動くようになれば、とりあえずロボットに搭載して、PCから動画を見るのはすぐにでもできますね。

BeagleBoard-xM + Ubuntuで無線LAN

BeagleBoard xM rev.C + Ubuntu10.10に無線LAN子機「Planex GW-USValue-EZ」を導入し、ようやく(WPAで)接続ができました。
なお、無線親機にはBuffalo WZR-HP-G300NHを使用しています。



BeagleBoard xM にGW-USValue-EZを取り付けたところ。小さい!!!


GW-USValue-EZのドライバはUbuntu10.10には含まれていないため、USBに挿しただけでは認識しませんでした。
GW-USValue-EZにはRTL8192CUが使われており、メーカー(realtek)のサイトからLinux用のドライバーがダウンロードできます。ただし、ソースなので、コンパイルが必要です。

以下に手順メモを記載します。


(2012/6/9追記 Ubuntu11.04以降にはドライバが含まれていましたので、コンパイルは不要です。)


【ドライバーのインストール】

  • ドライバーソースをダウンロード

http://www.realtek.com/downloads/downloadsView.aspx?Langid=4&PNid=21&PFid=48&Level=5&Conn=4&DownTypeID=3&GetDown=false&Downloads=true
今回はRTL8192CU_linux_v2.0.1502.20110402.zip をダウンロードしたが、5/28時点で新しいドライバが公開されている。

  • ソースを解凍するためUNZIPをインストール


$ sudo apt-get install unzip

  • ソースの解凍


$ unzip RTL8192CU_linux_v2.0.1502.20110402.zip

  • ドライバーのビルドとインストール


$ cd RTL8192CU_8188CUS_8188CE-VAU_linux_v2.0.1502.20110402
$ sudo sh install.sh

以下のエラーで止まった。


/lib/modules/2.6.38.4-x3/build: No such file or directory. Stop.

/lib/modules/2.6.38.4-x3
build -> /build/buildd/linux-2.6.38 へハードリンクが張られているが、リンク先が存在しない。
カーネルのビルドを行った。



カーネルのビルド

$ sudo apt-get install bzr
$ cd
$ sudo bzr branch lp:~beagleboard-kernel/+junk/2.6-stable
$ cd 2.6-stable/
$ cp system.sh.sample system.sh
$ sudo ./build_kernel.sh
なんか聞いてくるが、デフォルトで。
(ビルドするのに8時間ほどかかった。)


※今回はカーネルをビルドしたが、以下でよかったかも。


$ sudo apt-get install kernel-devel


以上で、カーネルのビルドができたので、ドライバーのビルドに戻って、、、


$ cd /lib/modules/2.6.38.4-x3
$ sudo rm build
$ sudo ln -s /home/ubuntu/2.6-stable/KERNEL build

なぜかアーキテクチャ(arm)がうまく取れないので、セットするように修正


$ sudo vi /home/ubuntu/2.6-stable/KERNEL/Makefile


SRCARCH := $(ARCH) の下に
SRCARCH := arm を追加


$ sudo sh install.sh

コンパイルが進むが、usb_intf.cでエラー
http://blog.livedoor.jp/mtk_sugi/ を参考に、以下のように修正


$ sudo vi driver/rtl8192CU_linux_v2.0.1502.20110402/os_dep/linux/usb_intf.c


コメントアウト://pdvobjpriv->pusbdev->autosuspend_delay = 0 * HZ;//15 * HZ; idle-delay time
追加:pm_runtime_set_autosuspend_delay(&pdvobjpriv->pusbdev->dev, 0 * HZ);

install.shがdriverディレクトリを解凍してusb_intf.cを上書きしないように、tarしているところをコメントアウト


$ sudo vi install.sh

#tar zxvf $Drvfoulder


$ sudo sh install.sh

無線子機(GW-USValue-EZ)をUSBに指して、


$ lsmod
で、8192cuができていればOK。また、

$ ifconfig
で、wlan0ができていればOK

ここまでできれば、後はBeagleBoardというよりはUbuntuでの無線LANの設定の問題となる。



無線LAN親機の設定】
今回使用した、Buffalo WZR-HP-G300NHでは無線の認証方式が「WPA/WPA2 mixedmode - PSK」となっており、この設定だとうまくいかないとの書き込みがネット上にあったので、「WPA-PSK」の固定に変更した。(この設定を変更するとつながらなくなるかは当方では未確認です。)


★設定手順

  • WEB設定画面にログインし、「無線設定」-「基本(11n/g/b)」を開く

無線の認証を「WPA-PSK」、無線の暗号化を「AES」に変更

  • 「無線設定」-「AOSS」を開く

暗号化レベル拡張機能を「無効」に変更


無線LAN設定】

  • network-managerが動いているとうまくいかないので、停止させる。

デフォルトでは入っていないかも。入っていない場合は不要。


$ sudo stop network-manager

  • アクセスポイントのスキャン


$ iwlist wlan0 scan
で、無線親機のSSID等が表示されれば無線のドライバやハードは動いていると判断できる。(無線親機のSSIDがステルスモードの場合は表示されないと思われる。)

  • /etc/network/interfacesを以下のようにする


auto lo
iface lo inet loopback

auto wlan0
iface wlan0 inet static
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.1
broadcast 192.168.0.255
wpa-driver wext
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

※なお、有線LANの設定は消しています。
※IPはDHCPではなく、固定としています。IPアドレスはネットワークに合うように適当に変更してください。

  • 暗号キーをwpa_passphraseコマンドで暗号化する


$ wpa_passphrase SSIDを記入 暗号化キーを記入

以下のような結果が表示される。


network={
ssid="指定したSSID"
#psk="指定した暗号キー"
psk=暗号化された暗号キー
}

  • /etc/wpa_supplicant/wpa_supplicant.confを編集


network={
ssid="無線親機のSSIDを書く"
proto=WPA WPA2
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk=wpa_passphraseの暗号化された暗号キーを指定
}

  • confファイルの確認


$ sudo wpa_supplicant -iwlan1 -c /etc/wpa_supplicant/wpa_supplicant.conf -Dwext

  • 無線設定確認


$ iwconfig
で、ESSID等が表示されていればうまくいっている。

wlan0 IEEE 802.11bgn ESSID:"指定したSSID" Nickname:""
Mode:Managed Frequency:2.422 GHz Access Point: XX:XX:XX:XX:XX:XX
Bit Rate:150 Mb/s Sensitivity:45/0
Retry:off RTS thr:off Fragment thr:off
Power Management:off
Link Quality=99/100 Signal level=-45 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

  • 設定を変更した時は以下でインタフェースを再起動させる。


$ sudo ifdown wlan0
$ sudo ifup wlan0

  • NetworkManagerをOS起動時に起動しないようにする

NetworkManagerが起動していると、うまくいかないため、停止させる。
※NetworkManagerはもともとは入っていなかったかも。
ランレベル毎に起動設定ができるはずだが、sysv-rc-confやupdate-rc.dを試してみたがうまくいかない(良く分からない)ので、/etc/init以下のファイルの拡張子を.conf以外にしてすべてのランレベルで起動しなくなるようにする。
redhat系のchkconfigとは設定方法が違っていて良く分からない


$ cd /etc/init
$ sudo mv network-manager.conf network-manager.conf.bak

OSを再起動して、ping等で通信できればOK。

YOKAロボまつり20


本日ROBOSQUAREにて開催されたYOKAロボまつり20バトル大会に親子で参加してきました。運営の皆様、参加者の皆様、お疲れ様でした。
前回参加したYOKAロボまつり16から約半年ぶりの参加です。
(我々の機体「ポンタ1号」は写真の左端です。)


【前回からの変更点】

  • 腕を伸ばしました。
  • モーションを改良しました。
  • 急速充電器を導入しました。(ラジコン用のPERFECT5000です。)
  • モーションの作成時に使用する電源は前回は単3のeneloopをケーブルでつないで使っていましたが、PCのATX電源の12Vを使用するようにしました。
  • 前回はeneloop単4×9本を電池ボックスに入れたものを使っていましたが、バトル中に電池が外れてしまうトラブルがあったので、はんだ付けしてパッキングしました。パッキングは物干し竿用の熱収縮チューブ(太さ3.8cm〜4.2cm用)を使いました。



※電池のはんだ付けは危険なのでお勧めしません。自己責任でお願いします。


ポンタ1号の結果は、、、
[予選1戦目]拓歩
今回優勝した拓歩との対戦。
ロボットのスピードと安定感が全く違いますね。。。負けました。


[予選2戦目]impulseRB
途中までは良い試合でしたが、前回に引き続いてまたもや電源のトラブルで起き上がれず。負けました。


今回も1勝もできず、予選2敗でした。残念。
初勝利を目指して頑張ります。

バキューム成形


KHR-2HVのフロントカウルをなぜかなくしてしまい(笑)、
←こんな電池カバーをつけていましたが、ねじでとめていたので電池の交換に時間がかかるのと、電池の固定が甘く接触不良の原因になっていました。
完成品を買うことも考えましたが、今後その他の外装等も作りたいと思い、バキューム成形に挑戦してみました。
成型機は「桃象」のような既製品もありますが、今回は自作してみました。







まず、型を乗せる台を作りました。虫かごか、魚をとる罠のようなものができました(笑) 150mm×200mmの大きさですので、あまり大きなものは作れません。しかし、大きくすると、板の無駄も多くなるのでこの大きさにしました。
写真のパイプは掃除機をつなぐためのものです。
空気が漏れないように隙間はホットボンドでふさぎました。


型の素材には¥100均の発泡スチロールブロックを使用してみました。
<メリット>

  • 安価
  • カッターや電熱線でらくらく切れる(↓こんなものを自作しました)

<デメリット>

  • なんとなく想像はしていましたが、熱いPP板を乗せてバキュームした際に発泡スチロールが溶けてくっついてしまう。このために、1回しか使用できない(笑)
  • 表面が溶けてしまい、成形した板の表面が鳥肌のようにざらざらになる

やはりバルサ材が良さそうですが、コストがかかるのが難点です。また、削るのも大変そうです。バルサ材は近くのホームセンターには10mmぐらいの厚さのものしか置いていませんでした。型の材料は今後の課題です。
なお、今回はオリジナルのフロントカウルと似たような型にしました。


板の素材は¥100均のPP板(A4サイズ3枚入り)を使用しました。
ネット上の情報では塩ビ版が冷めにくくて良いとのことでしたが、近くのホームセンターには売っていませんでした。塩ビ板を試していませんので比較はできませんが、このPPシートでは冷めるのが早いような気がしました。
次回も塩ビ板を入手できなかった場合は白いプラ板を試してみようと思います。(透明なプラ板は熱すると縮んでしまうためだめらしいです。)

材料のPP板を枠ではさんでねじでとめるようにしました。


板の加熱にはオーブントースターを使用しました。オーブントースターをある程度余熱してから枠ごと投入しました。最初、波打つように変形し、その後、だらーんとなったタイミングで取り出しました。
電熱器がなかったのでオーブントースターを使いましたが、オーブントースターは意外にも全体が温められてやりやすかったです。(今回のサイズより大きくなると入りませんが。)


掃除機のスイッチを入れ、一息に型に押しつけました。枠と台の隙間からかなり空気を吸い込んでいましたので、目張りをする等の工夫が必要です。


↓成型後の様子。結果的には初めてにしてはまあまあのものができたと思います。(これだけで丸1日かかってしまいましたが。。。)


↓塗装して、ロボットに取り付けたところ。(割りピンも無かった(笑)ので、クリップを曲げて作りました。)


この機体で明日はYOKAロボまつり20に参加します。

BeagleBoard-xMでUSBカメラ

購入していたUSBカメラ LOGICOOL C905m を試しました。

まずはluvcviewを使用してローカルのコンソールにカメラの映像を表示します。


luvcviewを取得して、インストールします。


sudo apt-get install luvcview
USBにカメラをつないで、以下のコマンドで実行します。

luvcview -i 15 -f yuv -w
「-f yuv」をつけないと画面がちらついてきれいに表示されませんでした。このカメラのmotion-jpegの品質が良くないのかもしれません。



写真右側のカメラでとったぬいぐるみが画面に表示されています。やった!!!(なお、ディスプレイはBeagleBoardHDMI端子に接続されています。)


次に、http://nobotronics.blogspot.com/2011/02/beagleboard10uvcstream.html を参考にuvc-streamerの環境を構築しました。
しかし、PC側のFireFoxで表示したところでは一瞬表示されるものの、すぐにサーバ側がSegmentationFaultで落ちてしまいます。
FireFoxが悪いのか、カメラのmotion-jpegが悪いかどちらかだと思います。


上記サイトのhttp://nobotronics.blogspot.com/2011/02/beagleboard11uvcstream.html にて紹介されているmjpg-streamerの方を試したところ、こちらはうまく行きました。
ただ、タイムラグが2〜3秒程度発生します。(タイムラグは解像度を下げれば若干改善するかもしれません。)(5/28追記 解像度をVGA(640×480)にしていましたが、QVGA(320×240)ではタイムラグは1秒弱になりました。)

ロボカップ ジャパンオープンが終了しました〜

大きな事故もなくジャパンオープンが終了しました。
選手のみなさん、スタッフのみなさん、お疲れさまでした。


TN-STARSは予選で2勝2敗の3位となり予選を通過できませんでした。
私は別のコートで審判をしていたので、直接はあまり見られませんでしたが、本人達の話と後でビデオを見たところでは、ロボットの動きは概ね通常通りだったようです。(モータードライバーが焼けたり、モーターの故障といったハプニングはあったようですが。)


TN-STARSは決勝には出られませんでしたが、交流会や交流試合をとても楽しく過ごし、来期に向けてモチベーションがMAXに高まったようです。


バージョンAはほとんど見ていないので分かりませんが、バージョンBにおいては多くのロボットが380クラスのモーターを載せており、スピードは世界クラスになっていたと思います。
ただ、その分コートや相手のロボットを傷つけるリスクが高まったようで、さらに高度な工夫が必要になりそうです。
スピードは速いのに相手やコートを傷つけず、ボールをきっちりコントロールできると、口頭プレゼンテーションにあった、かっこ良いロボットだと言えると思います。


去年の世界大会でははっきりスピードに差がありましたので、今年はどうなるか楽しみです。


【5/4交流会の集合写真】


【プレゼンシート (5/8UP)】クリックして、「オリジナルサイズを表示」クリックで拡大