Raspberry pi3でROS(indigo)が使えるかも?
秋月では速攻で売り切れてしまったRaspberry Pi3ですが、購入してみました。
« 2016年2月 | トップページ | 2016年4月 »
秋月では速攻で売り切れてしまったRaspberry Pi3ですが、購入してみました。
今回はロボットにブレットボードを乗せるブレットボードホルダーを作ります。ホルダーを装着したのがこの写真です。
バックボード前に白いブレットボードが乗っています。これを支える台がブレットボードホルダーです。ホルダーはメインフレームを挟んで乗せてあるだけなので、前後に移動が可能です。roombaの電源ボタンはホルダーを少し前にずらして押すことになります。もちろん、ブレットボードを使わない実験では外しておきます。
ホルダーとブレットボードも接着しません。連結用ボッチを利用して押さえ込んでいるだけです。こうすることでブレットボードだけを取り出し、机の上で楽に配線作業が出来ます。
材料は2.5tのMDF板と6X6、10X2のヒノキ棒です。これは手持ちの材料を活用したためです。ロボットを作った残り材で作ってもかまいません。
ホルダー周りの寸法は次の写真を見てください。
細かな寸法は使うブレットボードに合わせてください。メインフレームをレールにして乗っかるので内幅と下からヒノキ棒までの距離25mmはなるべく正確にします。下手をするとホルダーがガタガタして配線作業がしにくくなります。
前回ubuntuからGPIOを使えるようにしましたが、実行にはsudoが必要なので、ROSパッケージからは使えません。次回はこの辺りを見直して、ROSから使えるようにします。
パソコン搭載の初代コンパチ機で最初にマッピングしたときに、どうなれば成功なのかがわからずに苦労しました。今回いろいろやってみて、いくらかコツがわかってきたのでまとめておきます。
それから、画面右上のようにまっすぐで平らな壁の方が特徴をとりやすいようです。ここはクローゼットの扉です。他の部分は家具に布がかけてあったり、カーテンだったりで凸凹しています。実験してみるとなかなか面白いです。
今回はマッピングとナビゲーションです。
今回はkinectを使って人間追跡をさせてみます。これでkinectの動作も確認できます。
操作用PCのキーボードをジョイスティック代わりに使ってturtlebotコンパチのHanabot2を無線操縦します。手順は下記の通りです。
turtlebotをインストールします。このブログを読みにくるような人は、ROSやturtlebotについてそれなりに知識があると思いますので、このへんはあまり説明しません。知っているものとしてハナシを進めます。以前の投稿でざっくりまとめたことがあるので、こちらを参考に。
turtlebotをインストールする前にバッテリーの充放電について解説しておきます。
しばらくすると電圧が徐々にあがってきます。これは充電が進んでいるしるしです。くどいようですが、セメント抵抗が発熱するので注意が必要です。発熱は電圧が低い程大きくなります。写真のように12Vくらいのときは、80℃くらいにはなっています。触るとアチチとなる温度です。半田ごてのようにイキナリ火傷をする程の温度ではないですが、気をつけるにこしたことはありません。13Vくらいになると発熱はだいぶ少なくなり、触れるくらいの温度になります。
電圧が14.7Vくらいで完全充電です。電池の減り具合にもよりますが、それには8時間以上かかります。この状態になったら充電器のプラグを外しますが、充電電流は100mA程度まで落ちていて、そのまま放置しても過充電になる心配は少ないです。神経質になる必要はありません。気がついたら外す位の感覚でかまいません。また、完全充電まで待たなくとも、14V台になれば8割がた充電できているので使用には差し支えありません。
お次ぎは放電です。ロボットを使っていると次第にバッテリー電圧が下がってきます。10Vが下限電圧と考えてください。10V台まで下がったらすかさず充電を開始してください。過放電をするとバッテリーが充電できなくなってしまいます。
電源ONの時に充電器を差し込むと、使用しながら充電が出来ますが、これはエディタでプログラムを書いたりする程度の使用状態を想定しています。kinectやroombaを使いながらだとあまり充電が出来ないかもしれません。
ともかく本機のバッテリー管理は、ユーザーの判断がたよりですので、以上のことを良く理解した上で使ってください。
ケーブル類の製作とテストが済んだので、これから電装品をフレームに組み付けます。
中央部にはkinectの台座がくるので、左右に一つずつ貼付けます。ペテップルという商品名で販売されていますが、ダイソーでも似たようなものは手に入ります。これでむやみに長いkinectのケーブルを下の写真のようにさばきます。
左側がkinectからアダプターまでの長いケーブル、右側がアダプターケーブルのあまりです。これでスッキリです。kinectはこのようにはめ込みますが、はめ込みが緩い場合は両面テープでずれないように固定します。kinectの取り付けはラズパイ2と電源基板を取り付けてからにした方が良いです。ここではケーブルの取り回しの確認だけしておいてください。
次にバックパネルにラズパイ2と電源基板を取り付けます。基板やケースの上端がバックパネルの上端から25mmくらいになるようにします。電源基板はペテットで 、ラズパイ2のケースは木ねじで取り付けました。
kinectを含む電装品を取り付けたバックバネルはこのようになります。すべてのケーブルを接続して組み付け完了です。電源基板から引き出した5Vはraspberry pi2のピンヘッダの5VとGNDに接続します。
バッテリーは6mm角くらいのヒノキ棒(割り箸でもかまいません)でこのようにガイドを作り、ずれないようにします。ダイソーで売っているベルクロのテープをかければしっかり固定できます。
これで完成です。次はturtlebotをインストールして動作テストをします。最後にroombaのインターフェイスから、ラズパイに接続したUSBシリアル変換機へのケーブルを作ります。完成品はこんな風になります。
左側が直接ラズパイのUSBポートに差し込むUSBシリアル変換機。右側がroombaのインターフェィスコネクタへ差し込む7PのminiDINプラグです。
USBシリアル変換機はアマゾンで売られているこれを使いました。似たようなものは色々ありますが5Vロジックレベル、または5Vトレラント入力の3.3Vロジックのものならば使えるでしょう。ポピュラーなものなら秋月電子のこれに短いUSBケーブルをつけてもよいでしょう。
接続図は電源基板の配線図にあります。ワイヤーはオスーメスのジャンプワイヤ(150mm)を加工して使うと良いでしょう。
これに7PのminiDINプラグを接続します。miniDINプラグとはこんなものです。一昔前はちょっとしたラジオ部品店で簡単に入手できたのですが、最近はとんとお目にかかれなくなりました。
ジャンパワイヤーのオス側の先端を切り落とし、miniDINプラグにハンダ付けします。ピンの頭にちょっとしたくぼみがあるだけなので、ハンダ付けにはテクニックが必要です。ここにはバッテリー電圧も出ているので、そことショートしないように気をつけます。接続はこの投稿で電源基板の回路図をみてください。
ハンダ付けに自信のない向きには、下の写真のようにジャンプワイヤーをそのままroombaのコネクタに差し込む手があります。差し込んだ状態でホットボンドでワイヤーをまとめれば、お手製のコネクターにできるでしょう。
ここまでで全てのケーブルの製作が終わりました。
今回はkinectの電源ケーブルを作ります。これは簡単です。
ACアダプター自体は使いません。このケーブルだけを使います。切断した電源ケーブルを注意して剥き、これにDCプラグを接続します。茶色が+(センター)、白がGND(外周)なので間違えないようにします。こういうケーブルを剥いたことがない人は、使わないACアダプター側のケーブルで練習してください。ニッパーで軽く挿んでケーブルを回すだけですが、適当なところで被覆を引っ張るというテクニックが必要です。
ケーブルだけ(kinectは接続しない)を電源基板に接続してスイッチON、写真のようにkinectコネクターの緑色のLEDが灯れば接続OKです。roombaの電池ボックスを改造し電源をケーブルで引き出します。
これからケーブル類の製作に入ります。
バッテリー側のコネクタはファストン#250を使います。案外入手が難しい部品です。今回はマルツから入手しました。#250メス端子とカバーが必要です。本来は圧着するのですが、工具がないので今回は写真のようにハンダ付けしました。スリーブ部分はペンチで折り曲げ、カバーをはめて完成です。
ヒューズ部分はこのようになっています。これも圧着ではなくハンダづけです。DCプラグは2.1mmです。センタープラスで接続します。ケーブルが完成したら、テスターで極性を確認したうえで、バッテリーに接続します。プラグは手持ちの部品を活用したので写真のものですが、小さすぎて工作が難しいので、新しく買う場合はこちらがいいと思います。
これから基板に接続してテストしますが、接続前に再度センタープラスになっているかどうか、テスターで確認することをお勧めします。バッテリーは大電流が流れるのでちょっとしたミスで回路を壊してしまいます。
スイッチを入れると電流表示が現れます。バッテリーは最初そこそこ充電してあるので、12V台の電圧が表示されると思います。この状態で、5Vの電圧を確認しておきます。
ここでスイッチを切ります。これから充電回路のテストです。CHARGEジャックに15Vのアダプターを挿すと電圧が表示されるはずです。しばらく見ているうちにこの数値が少しずつあがっていけば、充電回路も動作しています。表示がでなければ、リレー周りやそもそもジャックへの配線が間違っている可能性があります。電圧がいきなり15Vの場合はダイオード→抵抗→バッテリーの回路が間違っている可能性があります。
問題がなければ、電圧が14Vをこえるあたりまで充電しておきましょう。充電中、抵抗にちょっと触れてみると熱をもっているのがわかると思います。
今回から電気周りに入ります。まずは電源基板からです。これが完成写真です。(セメント抵抗の値が4.3ohmになってますが、最終的には回路図にある3ohmに落ち着きました)
回路図を下記からダウンロードし、これを見ながら以下の説明を読んでください。なおこの回路図にはroombaとラズパイを接続するインターフェィスケーブルの図面も入っています。
回路はこのような構成になっています。
J2 BATT INからバッテリーの12Vを入力します。メインスイッチのSW1を通った後kinect、roombaへDCジャックDIP化基板で分電するとともに、DCDCコンバータV7805-1000でラズパイ用の5V/1Aを作ります。WiFiモジュール込みで0.4A程度の消費電流なので十分でしょう。これはブレットボード用のオスーメスケーブルでラズパイのピンヘッダに接続します。ここは普通の三端子レギュレータではなく、ぜひともDCDCコンバータを使いたいところです。バッテリーライフに影響します。
メインスイッチのもう一つの回路は、バッテリーをデジタル電圧計に接続します。電源ONで電圧を表示するためです。この回路にはリレー接点が並列に入り、電源OFFでもJ1 CHARGER INに15VのACアダプターを挿して充電が始まると、リレーが働いて電圧を表示するようになっています。電源ONの時は放電電圧のチェック、充電中は充電状態のチェックに使います。リレーは12用でちょっと電圧低めですが、このくらいなら問題ありません。電圧計は青色が一番消費電流が少ない(10mA以下)ので採用しています。
充電回路は15Vを逆接防止用の電力用ショットキーダイオード、3ohm/10Wのセメント抵抗を経由してバッテリーに接続しているだけです。ダイオードは必ず準方向電圧降下の小さいショットキーを使ってください。普通の整流用ダイオードだと準方向電圧降下が大きいのでバッテリーが十分に充電できません。セメント抵抗は余裕のある10W型を使ってください。これは充電初期はかなり発熱します。手の触れにくい場所に実装してください。この回路の詳しい説明はずいぶん昔のこの投稿にあります。
バッテリーケーブルにはヒューズホルダを挟みます。基板がむき出しなので、ショートしたときのための最低限の対策です。ヒューズ容量は3〜5Aにします。
ユニバーサル基板は秋月電子のものを使います。基板の端まで部品ランドがあるので、基板を有効に使えます。基板の取り付けにはペテットを使います。ステッカー式に貼付け出来るので工作が楽です。ラズパイの取り付けにはこの専用ケースを使いました。もちろん、別のケースでも使えます。
基板の組み立ては特に難しい所はありません。デジタル電圧計には取り付けタブがありますが、2mmのビスが必要なので、タブをホットボンドでユニバーサル基板に固定しました。唯一注意すべきなのは、セメント抵抗の実装です。前に書いたように発熱するので、冷却効果が出るように基板から浮かして取り付ける必要があります。完成したら入念に12V-GND間のショートとDCジャックの極性を確認しておきます。
kinectやラズパイを取り付けるバックパネルを組み立てます。
ここまでの接着が乾いたら、kinectを挟み込むバーをFで作ります。下記写真の寸法で工作します。kinectの幅は62mmとシビアですが、木材なので調整も利きます。あまり神経質にならないで加工しましょう。
面を揃えた方が前方です。反対側は揃いませんがこれで問題ありません。この状態でボンドを乾かします。
ここまで出来たらフレームに仮止めしてみます。ビスナットは4X25、軽く閉めておきます。うまくはまるかどうかと2本のサポートにずれが出来ないかどうかを確認します。少しのずれはこのあとHを接着することで補正できますが、大きくずれているときは、ビス穴を広げるなどして修正します。
このまま倒してHを接着します。背面に本や箱などをおいてサポートが水平になるようにします。この上にHを置いて接着します。Hの上部は写真のようにサポートの上面とツライチにします。おもりを乗せてしっかり接着します。
接着剤が乾いたら完成です。仮組みで確認します。これでメインフレームは完成です。
ここまで出来たフレームに、安定を良くするためのサポート部品Dを取り付けます。Dに中心線をケガいてA,Bの中心線と合わせ、写真のようにBにピッタリと合わせてCに木工用ボンドで接着します。
接着剤が乾いたら前工程同様、残りの12X12X30のブロック2個を、写真のように両面テープで仮止めし、フレームを乗せて接着します。ボンドをブロックに塗る前にフレームを乗せて、ブロックがDの下に収まっているか確認してください。
これでメインフレームの基本部分は完成です。フレーム構造なのでroombaの電源ボタンが押しやすくなっています。
最後に「拡張フレーム」を取り付けます。これは前にも書いたように、必ずしも必要なものではありません。必要になってから作ってもよいでしょう。
まず、メインフレームの外側に写真のようにケガキを入れます。
Iをケガキ線を内側に合わせて接着します。このとき3つ並んだ穴が前の方に来るよう、また、Iの後端はAの前縁から30mm入ったところに来るようにします。
これで完成です。
roombaに取り付けるメインフレームを組み立てます。下が完成写真です。A、B、Cを写真のように木工ボンドで接着します。Cのビス穴がA側に来るようにします。
この上にCを内側がケガキ線に乗るように接着します。最初の数分は、ずれる可能性があるので手で押さえ、ボンドが生乾きになったら、上から本などを乗せてしっかり接着します。
roombaからこの投稿に従って化粧パネルを取り外し、この投稿に従ってブラシとダストボックスを取り外します。また、12X12ヒノキ棒を30mmくらいに切ったブロックを6個作っておきます。ブロックのうち4個を下の写真のように両面テープで仮止めします。あとではがすので両面テープは小さく切って使うと良いでしょう。残りの2個はあとで使います。
位置はだいたいでいいですが、写真下側の2カ所はroomba外周の凸に密着するようにおいてください。これがフレームの位置決めになります。
この上にさっき作ったフレームを乗せて接着するのですが、このときroombaの中心線と、フレームの中心線をなるべくぴったりと合わせてください。roombaに鉛筆で中心線をマークしておくと良いでしょう。下の写真のようにブロックに木工用ボンドを付けて、フレームを乗せます。
roombaに引いた中心線とフレームの中心線はこのようにそろえます。前後の位置もこの写真のように「目分量」であわせます。前後は多少ずれても大きな問題はないので気楽に行きましょう。
このままおもりを乗せて数時間、接着剤が乾いたらroombaごとひっくり返し、30X10の角材を20mm程に切ったモノを写真の位置に接着します。これはフレームが前にずれるのを防ぐためのストッパーです。roombaの円弧状の切り欠きにピッタリ当るように取り付けます。写真のように少し角を丸めておくとしっくりくるでしょう。
接着剤が乾いたら静かにブロックをroombaからはがします。下の写真のようにフレームにブロックがついていると思います。(写真にはDも写ってますが、この工程ではDはまだ取り付けません。写真を撮り忘れたので後工程の写真を流用しています)
Bについている3つのブロックで、roomba上部後ろの凸部とダストボックスの切り欠きを抑え、フレームがずれないようにしています。roombaに乗せて確認しておきます。
まずはフレームを構成する木製部品を切り出します。
組み立てには、4X25のビスナットが4組とワッシャー8枚が必要です。
試作も一段落したので、これから製作記事を投稿していきます。ブログタイトルにちなみ、Hanabot2と命名しました。(Hanabot1はこんなのでした)
turtlebotの主要部品の中で、入手が厄介なモノがkinectとroomba500シリーズです。いずれも現行品ではないからです。それぞれの入手法と品定めのポイントを投稿します。
前回の投稿で問題発覚したroombaの電源、DCDCコンバータで昇圧して対応しました。これまで4時間程のバッテリーライフだったのがどう変わるのか、テストしてみます。
試作機に12V5AHのバッテリーを搭載しバッテリーライフのテストをしています。これは前の投稿のコンセプトの通り、roombaの14.4VのNi-NH電池を外して親バッテリーから12Vを供給しています。
こんな感じで、roombaのバッテリー接点の端っこにリード線をハンダ付けして電源を引き出し、12Vのバッテリーに接続します。ハンダの乗りは良好で工作は楽です。端っこに付けるのは、バッテリーとの接触面をきれいなまま残して、もとの掃除ロボットにもどしたときに、バッテリーが接触不良を起こさないようにするためです。僕の工作では基本的にroombaは元に戻せるように使います。
この状態でturtlebotのfollower demoでバッテリーライフのテストをしました。(これは1号機でfollowerをやっている様子です)速いスピードが少し遅いような気がしますが、動作は文句無しです。プログラムは人間を追跡しますが、壁に近づくと人間を見失い、壁に向き合って停止してしまいます。これを利用して普段は壁に「吸い付かせて」おいて、7〜8分に一度、壁との間に割り込んで2〜3分ロボットを引っ張り回します。これはプログラム開発をシミュレートしています。プログラムを修正し、実行してテストするという繰り返しのつもりですね。
この状態でバッテリーの終止電圧を11Vとして、これを下回るまでの時間を計ったところ、約4時間でした。これはなかなか良い成績です。やれうれしやといったん終了し、10Vまでやってみるかとロボットを再起動してroombaのボタンを押したら赤ランプが点灯、「ぴろり〜バッテリーを充電してください」と言われて起動できません。
なるほど。turtlebotとして外部制御で動いている間は、電圧監視もかからないので、規定の電圧を下回っても動作をし続けますが、ロボット電源を切って(もちろんroombaの電源も切れる)再度入れると通常モードからスタートするため、電圧が下がっていると電圧監視機能が働いて起動できなくなるようです。さらにテストを繰り返してみると、電源が入ってもリセットがかからない(ぴろりろりろ〜という音が鳴らない)こともあるようでした。やはり12Vバッテリーで使うのは具合が悪いようです。
「そんなこともあろうかと」準備しておいた3A型のステップアップDC-DCコンバータを接続。roombaに14Vの電圧を供給するようにしました。こうすると2〜3割消費電流が増えそうですが背に腹は代えられません。
これで性能を再評価しました。長くなりましたので、以降は次回投稿で。