2018年10月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

カテゴリー

ブログパーツ

無料ブログはココログ

« 2016年2月 | トップページ | 2016年4月 »

2016年3月

2016年3月28日 (月)

Raspberry pi3でROS(indigo)が使えるかも?

秋月では速攻で売り切れてしまったRaspberry Pi3ですが、購入してみました。

12241487_1081456391912289_856725005

もしかしたら2用のubuntuとROSをインストールしたマイクロSDで起動できるかもと思ったのですが、案の定ダメでした。ネットを調べてもubuntu14.04は対応版がないようで、Ubuntu MATEだと15なのでindigoが動かず‥ということで、使ってみたいけど苦労しそうな感じでした。
ラズパイ3を起動できるRaspbianのブートローダーとライブラリを、ラズパイ2用のubuntu14.04に持ち込んだらどうかしら、と検索してみたら、このサイトが見つかりました。同様の方法で作ったubuntu14.04のマイクロSDをRaspberry Pi3で起動に成功、さらにindigoもインストールとのことで、これなら良さそうです。もっともちゃんとテストしてみないと安心できませんが。

時間のあるときに、試してみたいと思います。

2016年3月27日 (日)

塗装しました

生地完成状態のHANABOT2を塗装しました。あまり手もかけられないので、雑でもそれなりに仕上がる黒にしました。ラベルはプリンタで打ち出したものを55番のスプレー糊で張っただけです。実験用ロボットの雰囲気が出たと思います。

Dscn3328

2016年3月26日 (土)

ブレットボードホルダーを作る

今回はロボットにブレットボードを乗せるブレットボードホルダーを作ります。ホルダーを装着したのがこの写真です。

Dscn3267

バックボード前に白いブレットボードが乗っています。これを支える台がブレットボードホルダーです。ホルダーはメインフレームを挟んで乗せてあるだけなので、前後に移動が可能です。roombaの電源ボタンはホルダーを少し前にずらして押すことになります。もちろん、ブレットボードを使わない実験では外しておきます。

ホルダーとブレットボードも接着しません。連結用ボッチを利用して押さえ込んでいるだけです。こうすることでブレットボードだけを取り出し、机の上で楽に配線作業が出来ます。

Dscn3263

材料は2.5tのMDF板と6X6、10X2のヒノキ棒です。これは手持ちの材料を活用したためです。ロボットを作った残り材で作ってもかまいません。

ホルダー周りの寸法は次の写真を見てください。

Bb1 Bb3_2

Bb2

細かな寸法は使うブレットボードに合わせてください。メインフレームをレールにして乗っかるので内幅と下からヒノキ棒までの距離25mmはなるべく正確にします。下手をするとホルダーがガタガタして配線作業がしにくくなります。

前回ubuntuからGPIOを使えるようにしましたが、実行にはsudoが必要なので、ROSパッケージからは使えません。次回はこの辺りを見直して、ROSから使えるようにします。

2016年3月24日 (木)

訂正があります

Img_453534_27363731_0txt
ubuntuのインストールで間違いがありました。この投稿です。マイクロSDの書き込み方法が間違っていました。訂正してあります。

このブログはメモをもとに書いているのですがNOOBSと混同したみたいです。試した方にはご迷惑をかけました。ウチのネコに免じてお許しの程を。

2016年3月23日 (水)

gmappingアレコレ

パソコン搭載の初代コンパチ機で最初にマッピングしたときに、どうなれば成功なのかがわからずに苦労しました。今回いろいろやってみて、いくらかコツがわかってきたのでまとめておきます。

基本的には、部屋の壁にそってロボットを何回か周回させます。そのときなるべくまっすぐに長い距離を移動させた方が、マップが作られやすいようです。
例えば、壁にそって部屋の角まで来たら、次の角にその場旋回で方向を定めて、あとはまっすぐに走行させます。ジグザクに動かすとどうも部屋の特徴を覚えにくいみたいです。
前の投稿でゆっくり動かすと書きましたが、実際のところ、スピードはあまり関係ないような気がします。とはいえ全速力では操縦もしにくいので、ほどほどのスピードで運転します。ゲームパッドで操縦していますが、反応がデリケートで操縦には練習が必要です。こういったことはパラメータの変更で対応できるはずですが‥

部屋の特徴は、rviz上に黒い点や線で表示されます。基本的にこれが部屋の平面図になりますが、必ずしも不動産屋さんの平面図のようにならなくとも差し支えないようです。これはkinectがとらえた部屋の特徴なわけですから、プログラムがその特徴から自己位置を推定できれば良い訳です。例えばこんなマップでも、ロボットは上手に自己位置推定しています。

Dscn3324

それから、画面右上のようにまっすぐで平らな壁の方が特徴をとりやすいようです。ここはクローゼットの扉です。他の部分は家具に布がかけてあったり、カーテンだったりで凸凹しています。実験してみるとなかなか面白いです。

2016年3月19日 (土)

マップを作って自律移動

今回はマッピングとナビゲーションです。

まずはこの動画を見てください。


マッピングで室内のマップを作成し、それを使って目的地に自律移動します。やり方は以前の投稿を見てください。投稿の「X61(ロボット搭載のパソコン)」をraspberry Pi2に、「ワークステーション」「T61」を操作用PCに読み替えてもらうといいでしょう。
実行するとワーニングやエラーもレポートされますが、ラズパイではなくラップトップパソコンでも似たような感じなので、あまり気にしなくとも良いでしょう。

また、操作にはゲームパッドを使っています。以前の投稿に従って操作用PCで使えるようにしておく必要があります。投稿はgroovyですがindigoでも同じで大丈夫でした。
ゲームパッドはパソコン用の2アナログスティックのものなら大丈夫そうです。もちろん、ゲームパッドを使わないでキーボードテレオペでやってもかまいません。

マッピングはなるべくロボットをゆっくり動かして行います。マップが確定すると黒で平面図が描かれます。なるべく多くの部分が描かれるようにロボットを動かします。オドメトリが狂うと、センサで見た状況と平面図がずれますが、SLAMが効いているので特徴的な平面図を認識すると、ぴたりと補正する様子が見られます。rvizを観察してみると良いでしょう。

マップがそこそこ出来たら保存してナビゲーションのテストをします。マッピング用のローンチをしているターミナルを止めて、ナビゲーション用のローンチを起動するだけでいけます。

確定している部分が少ないと、指定してもぐるぐる回るだけで移動しないときもあるようです。人間やネコなどの障害物を認識すると回避しようとします。また、低い障害物にバンパーが当ると停止します。

十分に動作しますが、ロボットの速度をもうちょっと落とした方が良いように思います。ラズパイが遅いせいか、障害物を認識してもギリギリでよけることがあります。

2016年3月15日 (火)

followerで遊ぶ

今回はkinectを使って人間追跡をさせてみます。これでkinectの動作も確認できます。

これは簡単です。操作用PCでは何も起動しません。ラズパイだけで完結します。

まずsshでロボットにログインして下記を実行します。

roombaの電源を入れる
$ roslaunch turtlebot_bringup minimal.launch

起動するのを待ちます。

起動したら新しいターミナルからsshでロボットにログインして下記を実行します。

$ roslaunch turtlebot_follower follower.launch

followerが起動したかどうかは、kinectの一つだけ離れたレンズの中に、赤い小さな光が見えるのでわかります。これでもいくつかワーニングが出ますが(kinectのキャリブレーションファイルがないためのようです)特に問題はないようです。

ロボットに近づくと動き始めます。近くの物体に近づくアルゴリズムのようで、壁などに近づきすぎると、そっちへ行ってしまいます。


ここまで動けば、kinect周りもOKです。製作したロボットはうまく動いていることが確認できました。

2016年3月14日 (月)

テレオペレーションで動作チェック

操作用PCのキーボードをジョイスティック代わりに使ってturtlebotコンパチのHanabot2を無線操縦します。手順は下記の通りです。

まずturtlebotコンパチ機のroombaの電源ボタンを押してONにします。ただし、3分間で自動パワーオフしてしまうので、コマンドを出す直前に操作します。
raspberry Pi2にログインして下記コマンドを実行し、ロボットを起動します。(レポートメッセージを全部読みたいなら、後ろに--screenを付けます)

$ roslaunch turtlebot_bringup minimal.launch

しばらくしてroombaの電源ボタンのランプが消え、USBシリアル変換機の通信LEDがせわしなく点滅し始めたら正常に起動しています。ドライバノードがroombaと通信しているのです。

僕の環境ではワーニングが二つ出ます。一つはバッテリー電圧が読めないというのですが、これはラズパイにそういう機能がないのでしょうがありません。もう一つはなんだか不明です。
また、publisherにqueue_sizeというアーギュメントが足りないというメッセージが出ますが、これはpythonのプログラムの仕様が変わったためのようで、昔自作したpythonノードも同じメッセージが出ます。特に問題はないようです。

さて、次は操作用PCでの作業です。
turtlebotのチュートリアルではdushboardを起動してロボットをモニターするようにありますが、テレオペレーションを試すだけなら下記ダケでOKです。

$ roslaunch turtlebot_teleop keyboard_teleop.launch

画面に操作キーの説明があるので、それにそって操作します。ロボットが動けばOKです。

2016年3月13日 (日)

ラズパイ2にturtlebotパッケージをインストール

turtlebotをインストールします。このブログを読みにくるような人は、ROSやturtlebotについてそれなりに知識があると思いますので、このへんはあまり説明しません。知っているものとしてハナシを進めます。以前の投稿でざっくりまとめたことがあるので、こちらを参考に。

Dscn3322

最初にraspberry Pi2のインストールです。インストールパッケージからシミュレータを外してインストールします。これはラズパイにはシミュレータが入ってないからです。操作用PCの方に入っていれば問題ないと思います。

$ sudo apt-get install ros-indigo-turtlebot ros-indigo-turtlebot-apps ros-indigo-turtlebot-interactions ros-indigo-kobuki-ftdi ros-indigo-rocon-remocon ros-indigo-rocon-qt-library ros-indigo-ar-track-alvar-msgs

例によって時間はかかります。

raspberry Pi2の名前はuPiで他のubuntu PCから名前で参照できるようになっています(この辺の詳細はこのあたりの投稿を参照してください)。マルチマシンでROSを使う設定やturtlebotの設定をする必要があります。
今回は簡単に~/.bashrcに下記を追加して設定します。

ROS_HOSTNAME=uPi
export ROS_MASTER_URI=http://uPi:11311
export TURTLEBOT_BASE=roomba
export TURTLEBOT_STACKS=circles
export TURTLEBOT_3D_SENSOR=kinect
export TURTLEBOT_SERIAL_PORT=/dev/ttyUSB0

操作用PC(もちろんubutu14.04、ROS indigoがインストールされていることが必要です)へのインストールはシミュレータ用のファイルも含む全てです。インストールしたPCの名前はT61です。

$ sudo apt-get install ros-indigo-turtlebot ros-indigo-turtlebot-apps ros-indigo-turtlebot-interactions ros-indigo-turtlebot-simulator ros-indigo-kobuki-ftdi ros-indigo-rocon-remocon ros-indigo-rocon-qt-library ros-indigo-ar-track-alvar-msgs

同様に操作用PCの~/.bashrcに下記を追加します。topicの行き先を管理するROS MASTERをラズパイ2にしています。遅いコンピュータだとどうかなと思いましたが、ロボットだけを起動し、ROSが入っていないMacのTerminalからsshしてもROSの実験が出来るようにこうしてます。今のところ特に問題はないようです。

ROS_HOSTNAME=T61
export ROS_MASTER_URI=http://uPi:11311
export TURTLEBOT_BASE=roomba
export TURTLEBOT_STACKS=circles
export TURTLEBOT_3D_SENSOR=kinect

これでインストール終了です。次回テストします。

2016年3月12日 (土)

バッテリーの充電管理

turtlebotをインストールする前にバッテリーの充放電について解説しておきます。

まず充電です。電源を切り、15VのACアダプターを差し込むと、電圧計が点灯して充電が始まります。電圧計はバッテリーの端子電圧を表示しています。

Dscn3321

しばらくすると電圧が徐々にあがってきます。これは充電が進んでいるしるしです。くどいようですが、セメント抵抗が発熱するので注意が必要です。発熱は電圧が低い程大きくなります。写真のように12Vくらいのときは、80℃くらいにはなっています。触るとアチチとなる温度です。半田ごてのようにイキナリ火傷をする程の温度ではないですが、気をつけるにこしたことはありません。13Vくらいになると発熱はだいぶ少なくなり、触れるくらいの温度になります。

電圧が14.7Vくらいで完全充電です。電池の減り具合にもよりますが、それには8時間以上かかります。この状態になったら充電器のプラグを外しますが、充電電流は100mA程度まで落ちていて、そのまま放置しても過充電になる心配は少ないです。神経質になる必要はありません。気がついたら外す位の感覚でかまいません。また、完全充電まで待たなくとも、14V台になれば8割がた充電できているので使用には差し支えありません。

お次ぎは放電です。ロボットを使っていると次第にバッテリー電圧が下がってきます。10Vが下限電圧と考えてください。10V台まで下がったらすかさず充電を開始してください。過放電をするとバッテリーが充電できなくなってしまいます。

電源ONの時に充電器を差し込むと、使用しながら充電が出来ますが、これはエディタでプログラムを書いたりする程度の使用状態を想定しています。kinectやroombaを使いながらだとあまり充電が出来ないかもしれません。

ともかく本機のバッテリー管理は、ユーザーの判断がたよりですので、以上のことを良く理解した上で使ってください。

電装品の組み付け

ケーブル類の製作とテストが済んだので、これから電装品をフレームに組み付けます。

まずkinectのケーブルをまとめるためのフックをバックパネル裏に下の写真のように貼付けます。

Dscn3141

中央部にはkinectの台座がくるので、左右に一つずつ貼付けます。ペテップルという商品名で販売されていますが、ダイソーでも似たようなものは手に入ります。これでむやみに長いkinectのケーブルを下の写真のようにさばきます。

Dscn3313

左側がkinectからアダプターまでの長いケーブル、右側がアダプターケーブルのあまりです。これでスッキリです。kinectはこのようにはめ込みますが、はめ込みが緩い場合は両面テープでずれないように固定します。kinectの取り付けはラズパイ2と電源基板を取り付けてからにした方が良いです。ここではケーブルの取り回しの確認だけしておいてください。

Dscn3290

次にバックパネルにラズパイ2と電源基板を取り付けます。基板やケースの上端がバックパネルの上端から25mmくらいになるようにします。電源基板はペテットで 、ラズパイ2のケースは木ねじで取り付けました。

Dscn3144

kinectを含む電装品を取り付けたバックバネルはこのようになります。すべてのケーブルを接続して組み付け完了です。電源基板から引き出した5Vはraspberry pi2のピンヘッダの5VとGNDに接続します。

Dscn3317

バッテリーは6mm角くらいのヒノキ棒(割り箸でもかまいません)でこのようにガイドを作り、ずれないようにします。ダイソーで売っているベルクロのテープをかければしっかり固定できます。

Dscn3308 Dscn3288

これで完成です。次はturtlebotをインストールして動作テストをします。

Dscn3283

2016年3月11日 (金)

roombaとのインターフェイスケーブルを作る

最後にroombaのインターフェイスから、ラズパイに接続したUSBシリアル変換機へのケーブルを作ります。完成品はこんな風になります。

Dscn3298

左側が直接ラズパイのUSBポートに差し込むUSBシリアル変換機。右側がroombaのインターフェィスコネクタへ差し込む7PのminiDINプラグです。

USBシリアル変換機はアマゾンで売られているこれを使いました。似たようなものは色々ありますが5Vロジックレベル、または5Vトレラント入力の3.3Vロジックのものならば使えるでしょう。ポピュラーなものなら秋月電子のこれに短いUSBケーブルをつけてもよいでしょう。

接続図は電源基板の配線図にあります。ワイヤーはオスーメスのジャンプワイヤ(150mm)を加工して使うと良いでしょう。

Dscn3206

これに7PのminiDINプラグを接続します。miniDINプラグとはこんなものです。一昔前はちょっとしたラジオ部品店で簡単に入手できたのですが、最近はとんとお目にかかれなくなりました。

Dscn3205 Dscn3204

ジャンパワイヤーのオス側の先端を切り落とし、miniDINプラグにハンダ付けします。ピンの頭にちょっとしたくぼみがあるだけなので、ハンダ付けにはテクニックが必要です。ここにはバッテリー電圧も出ているので、そことショートしないように気をつけます。接続はこの投稿で電源基板の回路図をみてください。

Dscn3208

ハンダ付けに自信のない向きには、下の写真のようにジャンプワイヤーをそのままroombaのコネクタに差し込む手があります。差し込んだ状態でホットボンドでワイヤーをまとめれば、お手製のコネクターにできるでしょう。

Dscn3173

ここまでで全てのケーブルの製作が終わりました。

kinectの電源ケーブルを作る

今回はkinectの電源ケーブルを作ります。これは簡単です。

まず、ACアダプターケーブルを USBと同じぐらいの長さで切断します。

Dscn3291

ACアダプター自体は使いません。このケーブルだけを使います。切断した電源ケーブルを注意して剥き、これにDCプラグを接続します。茶色が+(センター)、白がGND(外周)なので間違えないようにします。こういうケーブルを剥いたことがない人は、使わないACアダプター側のケーブルで練習してください。ニッパーで軽く挿んでケーブルを回すだけですが、適当なところで被覆を引っ張るというテクニックが必要です。

Dscn3293

ケーブルだけ(kinectは接続しない)を電源基板に接続してスイッチON、写真のようにkinectコネクターの緑色のLEDが灯れば接続OKです。

Dscn3296

2016年3月10日 (木)

roombaの電源ケーブルを作る

roombaの電池ボックスを改造し電源をケーブルで引き出します。

昇圧用のDCDCコンバータはこれを使いました。ポピュラーなLM2577を使ったもので出力2.5Aです。Aitendoでも同じようなキットが入手可能です。
まず、DCジャック付きのケーブルを作り、DCDCコンバータの入力端子に接続します。極性を間違えないようにしてください。センターが+です。

Dscn3323

電源基板に接続してスイッチON、出力が14Vになるようポテンショメータを調整します。この工程を忘れると高電圧が出てroombaを壊してしまう可能性があるので気をつけましょう。

Dscn3270

roombaの電池接点に直接ハンダづけしてリード線を引き出します。赤が+です。リード線には抜け止めの結び玉を作って、電池ケース左側から引き出します。

Dscn3301

ただし、引き出し部分は、下の写真のようにポスト付近の壁をニッパーで切り取り、リード線が通る隙間を作る必要があります。これをやらないと底板を取り付けたとき、リード線が切れる恐れがあります。

Cutoff

DCDC基板はリード線部分をホットボンドで固定します。基板本体は熱を持つ可能性があるのでこうします。

Dscn3302

裏蓋を閉めた状態です。DCプラグを電源基板のジャックに接続し、基板のSW1をONにすると、一拍おいて「ぴろりろりろりろ」とリセット音が鳴れば接続OKです。

Dscn3299

2016年3月 9日 (水)

バッテリーケーブルを作る

これからケーブル類の製作に入ります。

まず最初にバッテリーケーブルを作成します。完成したケーブルの写真です。長さの参考にしてください。

Dscn3306

バッテリー側のコネクタはファストン#250を使います。案外入手が難しい部品です。今回はマルツから入手しました。#250メス端子カバーが必要です。本来は圧着するのですが、工具がないので今回は写真のようにハンダ付けしました。スリーブ部分はペンチで折り曲げ、カバーをはめて完成です。

Dscn3197

ヒューズ部分はこのようになっています。これも圧着ではなくハンダづけです。

Dscn3280

DCプラグは2.1mmです。センタープラスで接続します。ケーブルが完成したら、テスターで極性を確認したうえで、バッテリーに接続します。プラグは手持ちの部品を活用したので写真のものですが、小さすぎて工作が難しいので、新しく買う場合はこちらがいいと思います。

Dscn3312

これから基板に接続してテストしますが、接続前に再度センタープラスになっているかどうか、テスターで確認することをお勧めします。バッテリーは大電流が流れるのでちょっとしたミスで回路を壊してしまいます。

スイッチを入れると電流表示が現れます。バッテリーは最初そこそこ充電してあるので、12V台の電圧が表示されると思います。この状態で、5Vの電圧を確認しておきます。

Dscn3311

ここでスイッチを切ります。これから充電回路のテストです。CHARGEジャックに15Vのアダプターを挿すと電圧が表示されるはずです。しばらく見ているうちにこの数値が少しずつあがっていけば、充電回路も動作しています。表示がでなければ、リレー周りやそもそもジャックへの配線が間違っている可能性があります。電圧がいきなり15Vの場合はダイオード→抵抗→バッテリーの回路が間違っている可能性があります。

問題がなければ、電圧が14Vをこえるあたりまで充電しておきましょう。充電中、抵抗にちょっと触れてみると熱をもっているのがわかると思います。

2016年3月 8日 (火)

電源基板の製作

今回から電気周りに入ります。まずは電源基板からです。これが完成写真です。(セメント抵抗の値が4.3ohmになってますが、最終的には回路図にある3ohmに落ち着きました)

Pcb

回路図を下記からダウンロードし、これを見ながら以下の説明を読んでください。なおこの回路図にはroombaとラズパイを接続するインターフェィスケーブルの図面も入っています。

「Hanabot2POW.pdf」をダウンロード

回路はこのような構成になっています。

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にします。

Dscn3282

ユニバーサル基板は秋月電子のものを使います。基板の端まで部品ランドがあるので、基板を有効に使えます。基板の取り付けにはペテットを使います。ステッカー式に貼付け出来るので工作が楽です。ラズパイの取り付けにはこの専用ケースを使いました。もちろん、別のケースでも使えます。

Dscn3124

基板の組み立ては特に難しい所はありません。デジタル電圧計には取り付けタブがありますが、2mmのビスが必要なので、タブをホットボンドでユニバーサル基板に固定しました。唯一注意すべきなのは、セメント抵抗の実装です。前に書いたように発熱するので、冷却効果が出るように基板から浮かして取り付ける必要があります。完成したら入念に12V-GND間のショートとDCジャックの極性を確認しておきます。

Dscn3203

2016年3月 7日 (月)

バックパネルの組み立て

kinectやラズパイを取り付けるバックパネルを組み立てます。

kinectのサポートをE、F、Gで作ります。GをEに接着しサポートを二組作ります。下記写真に従って接着しますが、左右のサポートは右側の写真のように勝手違いなので間違えないよう工作します。

Bp1 Dscn3099

ここまでの接着が乾いたら、kinectを挟み込むバーをFで作ります。下記写真の寸法で工作します。kinectの幅は62mmとシビアですが、木材なので調整も利きます。あまり神経質にならないで加工しましょう。

Bp2

面を揃えた方が前方です。反対側は揃いませんがこれで問題ありません。この状態でボンドを乾かします。

ここまで出来たらフレームに仮止めしてみます。ビスナットは4X25、軽く閉めておきます。うまくはまるかどうかと2本のサポートにずれが出来ないかどうかを確認します。少しのずれはこのあとHを接着することで補正できますが、大きくずれているときは、ビス穴を広げるなどして修正します。

Dscn3114

このまま倒してHを接着します。背面に本や箱などをおいてサポートが水平になるようにします。この上にHを置いて接着します。Hの上部は写真のようにサポートの上面とツライチにします。おもりを乗せてしっかり接着します。

Dscn3116

接着剤が乾いたら完成です。仮組みで確認します。これでメインフレームは完成です。

Dscn3193

2016年3月 6日 (日)

メインフレームの組み立て(2)

ここまで出来たフレームに、安定を良くするためのサポート部品Dを取り付けます。Dに中心線をケガいてA,Bの中心線と合わせ、写真のようにBにピッタリと合わせてCに木工用ボンドで接着します。

Dscn3185

接着剤が乾いたら前工程同様、残りの12X12X30のブロック2個を、写真のように両面テープで仮止めし、フレームを乗せて接着します。ボンドをブロックに塗る前にフレームを乗せて、ブロックがDの下に収まっているか確認してください。

Dscn3187 Dscn3189

これでメインフレームの基本部分は完成です。フレーム構造なのでroombaの電源ボタンが押しやすくなっています。

Dscn3192

最後に「拡張フレーム」を取り付けます。これは前にも書いたように、必ずしも必要なものではありません。必要になってから作ってもよいでしょう。

まず、メインフレームの外側に写真のようにケガキを入れます。

Ext1

Iをケガキ線を内側に合わせて接着します。このとき3つ並んだ穴が前の方に来るよう、また、Iの後端はAの前縁から30mm入ったところに来るようにします。

Ext3

これで完成です。

Dscn3262

メインフレームの組み立て(1)

roombaに取り付けるメインフレームを組み立てます。下が完成写真です。A、B、Cを写真のように木工ボンドで接着します。Cのビス穴がA側に来るようにします。

Dscn3140

接着は下記手順で行います。写真のように方眼の引いてあるカッティング台の上で作業すると正確に仕上がります。ない場合は大判の紙に中心線を引いて、それをガイドに作業します。まず、A、Bに中心線とセンター振り分けで120mmの位置にケガキ線を引きます。次にA、BをCの長さ分離して置き、中心線を合わせます。

Assy1

この上にCを内側がケガキ線に乗るように接着します。最初の数分は、ずれる可能性があるので手で押さえ、ボンドが生乾きになったら、上から本などを乗せてしっかり接着します。

Dscn3096

roombaからこの投稿に従って化粧パネルを取り外し、この投稿に従ってブラシとダストボックスを取り外します。また、12X12ヒノキ棒を30mmくらいに切ったブロックを6個作っておきます。ブロックのうち4個を下の写真のように両面テープで仮止めします。あとではがすので両面テープは小さく切って使うと良いでしょう。残りの2個はあとで使います。

Dscn3101

位置はだいたいでいいですが、写真下側の2カ所はroomba外周の凸に密着するようにおいてください。これがフレームの位置決めになります。

この上にさっき作ったフレームを乗せて接着するのですが、このときroombaの中心線と、フレームの中心線をなるべくぴったりと合わせてください。roombaに鉛筆で中心線をマークしておくと良いでしょう。下の写真のようにブロックに木工用ボンドを付けて、フレームを乗せます。

Dscn3107

roombaに引いた中心線とフレームの中心線はこのようにそろえます。前後の位置もこの写真のように「目分量」であわせます。前後は多少ずれても大きな問題はないので気楽に行きましょう。

Dscn3106 Dscn3104

このままおもりを乗せて数時間、接着剤が乾いたらroombaごとひっくり返し、30X10の角材を20mm程に切ったモノを写真の位置に接着します。これはフレームが前にずれるのを防ぐためのストッパーです。roombaの円弧状の切り欠きにピッタリ当るように取り付けます。写真のように少し角を丸めておくとしっくりくるでしょう。

Dscn3111 Tailblock_2

接着剤が乾いたら静かにブロックをroombaからはがします。下の写真のようにフレームにブロックがついていると思います。(写真にはDも写ってますが、この工程ではDはまだ取り付けません。写真を撮り忘れたので後工程の写真を流用しています)

Dscn3184

Bについている3つのブロックで、roomba上部後ろの凸部とダストボックスの切り欠きを抑え、フレームがずれないようにしています。roombaに乗せて確認しておきます。

2016年3月 5日 (土)

木製部品の切り出し

まずはフレームを構成する木製部品を切り出します。

使用する材料は下記です。

400 X 300 X 6t MDFまたはベニヤ板 1枚
30 X 10 X 900 角材 1本(拡張フレームを使うなら2本)
60 X 10 X 900 角材 1本
12 X 12 X 900 角材(ヒノキ棒) 1本(または10 X 10)

これ以外にあると便利なのが

6 X 6 X 900 ヒノキ棒 (バッテリー押さえやブレットボードホルダの工作に)
2.5t MDFまたはベニヤ板若干(ブレットボードホルダ工作用)

組み立てには、4X25のビスナットが4組とワッシャー8枚が必要です。

角材はなるべく指定のものを探します。板材の厚みは「これくらい」でかまいません。部品はこの写真の寸法で切り出します。写真はクリックで拡大します。

Frame1

Frame2_2

Backpanel

A,B,D,Hが6tのMDFまたはベニヤです。C,Gが30X10、Eが60X10、Fが12X12の角材です。(なお写真のEとHは黄色い数字より少し長くなっています。最初は写真のとおりで進めたのですが、ちょっとセンサーが高くなりすぎたので最終的に短くしました。黄色い数字が正解ですので、そちらで板取をしてください。)

本家turtlebotのように上部デッキを付けたいなど、将来的に改造したい場合は「拡張フレーム」を作っておきます。下記写真のようなもので30X10の角材で作ります。これをフレーム両サイドに取り付け、上部デッキを支える支柱をビスドメする計画ですが、現時点では穴位置がこれでいいかどうかわかりません。これは付けなくとも差し支えないので、拡張計画が出来てから取り付けてもよいでしょう。

Option

全ての切り出しはピラニアソウを使いました。切れ味抜群で切り幅が狭いので工作がしやすいです。反面、長い直線を切ると切り口が曲がりやすいので、あまり力を入れずに落ち着いて作業するのがよいでしょう。
穴は全て4.5φで安物の電動ドライバであけました。板が厚いので垂直にドリルを当てるよう気をつけて作業します。

切り出したら、ペーパーがけをして切り口を整えておきます。次回は組み立てます。

2016年3月 4日 (金)

turtlebotコンパチ機Hanabot2の完成写真

試作も一段落したので、これから製作記事を投稿していきます。ブログタイトルにちなみ、Hanabot2と命名しました。(Hanabot1はこんなのでした)

まず、完成写真をご覧ください。塗装前の生地完成の状態です。

Dscn3283 Dscn3286 Dscn3285

3次元センサkinectの高さや位置はオリジナルのturtlbotに近づけてあるので、turtlebotのパッケージでうまく動かすことが出来ます。
動力部分は改造したroomba500シリーズです。改造は簡単に出来るよう工夫してあります。

電子頭脳はRaspberry Pi2です。専用ケースに入れてバックパネルに固定してあります。隣の基板は電源基板です。バッテリー電圧の分配やラズパイ用の5V作成、シールドバッテリーの充電を行います。ユニバーサル基板に組み立ててあります。

バッテリーは12V/5AHのシールドバッテリーです。以前の投稿通り、これでラズパイ、kinect、roombaすべての電源をまかないます。電池寿命は約4時間です。充電は15V/1.6AのACアダプターで約8時間。運用しながらの充電も可能です。バッテリーの充放電管理は搭載したデジタル電圧計で行います。

重量は約5.2Kg。ラップトップ搭載の先輩機に比べて1.5Kgのダイエットに成功しました。フローリングもカーペットも軽快に走行します。

さらにラズパイ搭載機ならではの機能として、ブレットボードを搭載可能としました。ROSからGPIOやI2Cを使ってブレットボードに組んだ回路を使えます。下の写真はブレットボードでLチカをやっているところです。

Dscn3252

次回はメインフレームの組み立てです。

2016年3月 2日 (水)

kinectとroombaを準備する

turtlebotの主要部品の中で、入手が厄介なモノがkinectとroomba500シリーズです。いずれも現行品ではないからです。それぞれの入手法と品定めのポイントを投稿します。

kinectは言わずと知れた3Dセンサーです。前方の空間のデプスイメージ(深度画像)を生成し、障害物の認識や環境地図の作成に使用します。ROSで使えるのはXbox用の初代kinectです。

Kinect_sensor

最近のkinect V2(四角っぽいモノ)とkinect for windowsは使えません。今回使用したものはヤフオクで送料込み5K円ほどで入手しました。中古ゲームショップなどで入手も出来るようです。基本的に可動部のような壊れやすい部分はないので失敗は少ないと思います。ただし必ずACアダプターがついているものにしてください。アダプターのケーブルを改造して給電に使用するためです。コネクターが特殊なため、専用アダプターでないと接続できません。運悪くアダプターがない場合は別途調達する必要があります。Amazonなどで入手できます。

roombaの方はもうちょっと注意が必要です。本機にはroomba500シリーズを使います。写真のような外観のモデルです。基本的に大きな改造はしないので、新品や程度のいい中古を購入して実験が終わったら掃除機として使うという手もありますが、壊してしまうかもしれないので、安いものを専用に購入することをお勧めします。

0f65996ee740447fa4a10b9c5e5b6edc

僕はこれまでに2台のroomba500シリーズをやはりヤフオクで入手しました。今回使ったものはroomba536で、送料込み4K円と格安でした。もちろんジャンク扱いでバッテリーはダメでした。500シリーズは旧モデルですが量販店やジャパネットではまだ新品が手に入ります。ただし30K円以上もします。中古品をヤフオクやリサイクル店で探せば3K〜15K円位で入手できます。
バッテリーは使わないので、充電器や付属品もいりません。探せば僕くらいの安物も結構出ています。ただし、これには注意点があります。それは、タイヤです。
roombaのタイヤにはこのような凸凹があります。

H001009lwm_1

これは新品の写真ですが、ヤフオクに出ている写真を見ると、ツルツルに減っているものがままあります。これはオドメトリに影響があるばかりではなく、それだけ減っているということはメカも相当くたびれている可能性があります。そういうのは敬遠した方がいいでしょう。

入手したroombaはかなり汚れているので分解して掃除します。このサイトが丁寧に分解掃除法を説明しています。ただし、以前の投稿のようにブラシやダストボックスを外してしまうので、この辺は掃除する必要はありません。

roombaの消費電流とtutlebotのバッテリーライフ

前回の投稿で問題発覚したroombaの電源、DCDCコンバータで昇圧して対応しました。これまで4時間程のバッテリーライフだったのがどう変わるのか、テストしてみます。

その前に、そもそもroombaはどれほど電流を食うのか調べてみることにしました。古いテスターリードを加工して、DCDCコンバータの出力側の電流を計れるように配線しました。電圧は前に書いたように14Vにセットしました。写真のようにテスターを乗せ、followerで動かしながら電流を読み取ろうという作戦です。

Dscn3277

まず驚いたのが、電源をつないだだけでパルス状に平均10mA程度の電流が流れることです。つまりroombaに電池をセットしただけでそれだけの電流が流れ続けます。わずかな電流のようですが、1週間では1680mAH、roombaの大容量電池でも4500mAHですから、なんと何もしないのに1/3程度放電してしまう計算です。
どうりでしばらくぶりに実験しようとすると、バッテリーが空ということが多かったはずです。どうもroombaは掃除させていないときは充電ベースにおきっぱなしにするのが正しい使い方のようです。

roombaの電力を湯水のように使う設計コンセプトは他にも見られ、電源ボタンを押して電源を入れた状態で160mA 、シリアルポートからコマンドを送って外部制御モード(Fullモード)にすると260mAに跳ね上がります。
そんなもんかと思うかもしれませんが、14V電池動作のキカイとしてはだいぶ多めの電流です。なんにもしてなくともそれだけ食う訳ですからね。roombaの基板写真を見るとトロイダルコイルが見えるので、少なくともメインの5VくらいはDCDCコンバータだと思うのですが‥待機状態でなににそんなに電力を使っているのか不思議です。赤外線センサーとかなんでしょうか。

ちょっと脱線しました。肝心の走行時の電流は最高速度の前進で、フローリング上500mA、カーペット上600mAくらいでした。前出の260mA込みですから、モーターの電流は300mAちょいです。モーター1個あたり2Wくらいでしょうか。
念のため、ロボットを抑えてモーターをロックさせてみました。このときで最大1.3Aくらいなものですから、3AのDCDCコンバータで十分にまかなえます。

これで安心してバッテリーライフのテストが出来ます。
で、やってみた結果ですが、やっぱり4時間程度の保ち時間(終止電圧11V)でした。DCDCコンバータの追加で電力ロスが若干増えたはずですが、誤差の範囲ということのようです。

2016年3月 1日 (火)

roombaの電源を見直す

試作機に12V5AHのバッテリーを搭載しバッテリーライフのテストをしています。これは前の投稿のコンセプトの通り、roombaの14.4VのNi-NH電池を外して親バッテリーから12Vを供給しています。

Dscn3209

こんな感じで、roombaのバッテリー接点の端っこにリード線をハンダ付けして電源を引き出し、12Vのバッテリーに接続します。ハンダの乗りは良好で工作は楽です。端っこに付けるのは、バッテリーとの接触面をきれいなまま残して、もとの掃除ロボットにもどしたときに、バッテリーが接触不良を起こさないようにするためです。僕の工作では基本的にroombaは元に戻せるように使います。

Dscn3215

この状態でturtlebotのfollower demoでバッテリーライフのテストをしました。(これは1号機でfollowerをやっている様子です)速いスピードが少し遅いような気がしますが、動作は文句無しです。プログラムは人間を追跡しますが、壁に近づくと人間を見失い、壁に向き合って停止してしまいます。これを利用して普段は壁に「吸い付かせて」おいて、7〜8分に一度、壁との間に割り込んで2〜3分ロボットを引っ張り回します。これはプログラム開発をシミュレートしています。プログラムを修正し、実行してテストするという繰り返しのつもりですね。

この状態でバッテリーの終止電圧を11Vとして、これを下回るまでの時間を計ったところ、約4時間でした。これはなかなか良い成績です。やれうれしやといったん終了し、10Vまでやってみるかとロボットを再起動してroombaのボタンを押したら赤ランプが点灯、「ぴろり〜バッテリーを充電してください」と言われて起動できません。

Dscn3269

なるほど。turtlebotとして外部制御で動いている間は、電圧監視もかからないので、規定の電圧を下回っても動作をし続けますが、ロボット電源を切って(もちろんroombaの電源も切れる)再度入れると通常モードからスタートするため、電圧が下がっていると電圧監視機能が働いて起動できなくなるようです。さらにテストを繰り返してみると、電源が入ってもリセットがかからない(ぴろりろりろ〜という音が鳴らない)こともあるようでした。やはり12Vバッテリーで使うのは具合が悪いようです。

「そんなこともあろうかと」準備しておいた3A型のステップアップDC-DCコンバータを接続。roombaに14Vの電圧を供給するようにしました。こうすると2〜3割消費電流が増えそうですが背に腹は代えられません。

Dscn3275

これで性能を再評価しました。長くなりましたので、以降は次回投稿で。

« 2016年2月 | トップページ | 2016年4月 »