バイパスコンデンサ・・・がない( ;∀;)

お盆休みもあと3日...ということで,だいぶ気分もブルーになりつつあります.あ~.もう働きたくないな~.

という感じなんですが,せめてお盆休み中に確認走行コースのデータくらいは取っておきたいという思いもあり,土曜につくばチャレンジ会場へデータを取りに行こうとしてます.追い込んで準備してたんですが,一つ足りない部品を発見...そうです.タイトルの通り所望のコンデンサが一つ足りません...抵抗とかコンデンサとか,電子工作するときに多めにいろんな種類のもの買ってたんで,ちょうどいいものがあるかな~と淡い期待を抱いてたんですが,

手持ちのコンデンサ
f:id:rkoichi2001:20180817041236j:plain

手持ちのコンデンサは容量が1000μF, 25Vだったんですけど,ほしいものは1000μF, 50Vでした....この部品,一つ100円くらいなんですが,Amazonで買うと明日の夜まで届かず...ということで,朝一で秋葉原まで行ってきます...うーん.なかなか進まんなあ.

OpenCVビルドの高速化

OpenCV3.3.1を使うことにしましたが,ソースのビルドをします.OpenCVのビルドをすることが仕事でも結構あるんですが,これって本当に時間かかります.ただ,時間を食っているところって大半がCudaのビルドなんです.で,オプションを何も指定しなければ,ほぼすべてのGPUに対してビルドを実行してしまいます.自分の持っているHWでしかOpenCVを使わないなら,PCのGPUで使える設定のビルドだけしてやればOKです.下記のようにCMakeのコンフィグ生成時点で指定してあげればOKです.

1. 自分のGPUのCompute Capabilityを調べる.

自分の場合はGTX1070なので,下記の表からCompute Capability6.1だとわかります.
developer.nvidia.com

2. CMakeのコンフィグを下記のように設定します.
cmake -D OPENCV_EXTRA_MODULES_PATH=/hoge/hoge/opencv331/opencv_contrib/modules -D CMAKE_INSTALL_PREFIX=/hoge/hoge/opencv331/install -D CMAKE_BUILD_TYPE=Release -D WITH_CUDA=ON -D WITH_GSTREAMER=ON -D WITH_OPENGL=ON -D BUILD_EXAMPLE=OFF -D CUDA_ARCH_BIN="6.1" -D CUDA_ARCH_PTX="6.1" -D WITH_CUBLAS=ON  ../opencv

ここで指定している”CUDA_ARCH_BIN”, "CUDA_ARCH_PTX"という変数がポイントで,指定したアーキテクチャにだけOpenCVをビルドします.あとはマルチコアをふんだんに活かして,下記のコマンドでビルドすれば,10分以内には終わるかと!

make -j32

以上,メモメモでした.

環境整備

約半年ぶりにJetson Tx2,ZEDを使います.最新のツールキットを落として使おうと思っているんですが,昨年のつくばチャレンジではTx2のOpenCVのバージョンとホストPCのOpenCVのバージョンが合わなかったりして苦労したので,合わせておきます.

JetsonTx2

Jetpack 3.2.1を使います.
developer.nvidia.com

紐付いているライブラリは,,,
OpenCV : 3.3.1
Cuda : 9.0
cuDNN : 7.0.5
TensorRT : 3.0GA

ZED

For Linux PC & JetsonTx2
ZED SDK v2.5.1 を使います.
www.stereolabs.com

紐付いているライブラリは,,,
Jetpack : 3.2
Cuda : 9.0

Cuda9.0

developer.nvidia.com

ということで,ベースのソフト構成は,,,,

Ubuntu 16.04
ROS Kinetic
OpenCV 3.3.1
Cuda 9.0

で決定です!cuDNNとかまで使えるレベルになればうれしいですが..

Tsukuba Exploration Rover2 HW完成!

ということで,想定したよりかなり時間がかかってしまいましたが,HWが完成しました!明日からはSW制作に取り掛かります.実際に試走会に参加するにあたって,機械部分の露出があると好ましくないので,ロボットの”ガワ”も一気に作ってしまいました.防水のことも考えてゴムとかはったりしてみたんですが,この辺りはちょっと作りこみが甘くてガバガバになってしまった(笑)ので,実際の雨天走行時に対処が必要そうです.

ちなみに,,,なんでTsukuba Exploration Roverって名付けたのかといいますと,NASAのジェット推進研究所が「火星探査のロボットを作る!」っていうプロジェクトを立ち上げて,それはそれは夢のあるプロジェクトだったんですけど,この時のロボットの名前が「Mars Exploration Rover」だったんですよね.単純にこれをパクりました.('ω')ノ 毎回ロボット紹介の時に司会の方が噛むのを見て申し訳ない気持ちになるんですが(笑),今年もこの名前で行こうかと.
Mars Exploration Rover - Wikipedia

横から
f:id:rkoichi2001:20180815021203j:plain

前から
f:id:rkoichi2001:20180815021324j:plain

後ろから
f:id:rkoichi2001:20180815021351j:plain

筐体内部の様子(前のエントリで扱ったバッテリもギリギリ収まってます!)
f:id:rkoichi2001:20180815021424j:plain

ひとまずデータをとれる状態にして,お盆休みが終わるまでに会場に行ってデータ取得をするとこまでもっていくのが目標です (゚Д゚)ノ

電源の話

お盆休みが,,,キタ━━━━(゚∀゚)━━━━!!
ということで,11連休の始まりです.このままずっと休みだったらいいんですけどね~...つくばチャレンジ本番までの最後の天王山ということで,頑張ります.

で,新しくロボットを作るにあたって電源の構成をどうするか検討したので,知識の整理もかねてメモを残しておきます.

1. 消費電力はどの程度?

自分の場合,「画像処理だけを用いて完走する!」というのがコンセプトなので,当然ながら GPU を使いたくなってきます.ただ,ここで難しいのが電気の話で,あまりにパワフルなGPUが乗っているパソコンを買ってしまうと消費電力が大きくなりすぎて,継続して電力供給できなくなってしまいます.最近はオンラインゲームをやる人が増えたせいか,グラフィックの性能が高いノートPCも販売されているんですが,基本的にコンセントにつないで使うことを前提に作られていて,ノートPCのバッテリーだけだとGPUのパワーをセーブしてしまうので,外部供給が必要になります.ちなみに,現状 Amazon で手に入るリチウムイオンバッテリーだと,大体消費電力が 300W くらいのものが最大で,これを超えてしまうと自分で電源をいじる必要が出てきます.が,このくらいの大きさの電気をいじるのは怖いので,既製品で行きます.

とか

が手軽に手に入るレベルで最大の電源です.

ということで,消費電力が 300W くらいまでならなんとかシステムが組めそうだということで,下記のPCを購入しました.(NEXTGEAR-NOTE i5730GA1)もうひとつ上のスペックになると,GTX1080が二枚付いている17インチのパソコンになるんですが,消費電力が400Wを超えてくるのでこちらにしました.GWからここまで,多分軽自動車買えるくらい金入れてしまいましたが,まあ,,,未来への投資ということで.

www2.mouse-jp.co.jp

で,実際にPCが届いたので,その消費電力を計測してみました.電力計測に用いたのは amazon で購入した下記のワットチェッカーです.

ロボットで自律走行中にCPUとGPUがフルで稼働していることを仮定して,下記のソフトをインストール&実行してストレステストをやりました.

stress-ng
sudo apt-get install stress-ng
GpuTest

www.geeks3d.com

で,同時にフル稼働してワットチェッカーで消費電力を見てみました.

CPU 8コアフル稼働 & GPU フル稼働中

f:id:rkoichi2001:20180815012026p:plain

ワットチェッカー結果(結果:180W)

f:id:rkoichi2001:20180815011219j:plain

もともとPCのACアダプタには最大230Wという記載がされていたんですが,レアなケースで実際にはもう少し小さいと思っていたんですが,230W行きますね...上のストレステストだと,CPUとGPUしか動かしてないんですが,ロボットで使うときはLANのコントローラとかUSBからの電源供給とかいろんなものがフル稼働になってしまうので,結局電力消費(and 排熱)の問題とは今後も付き合っていかざるを得なさそうです.

バッテリーの選定

大体システムの消費電力が分かったので,次はバッテリーの選定です.つくばチャレンジに参加しているチームの電源構成をみると,大体みんな鉛バッテリーとリチウムイオンバッテリーの両方,もしくはどちらかを使っています.両者の違いを調べてみました.
(今回のロボットは i-Cart Middle を参考に作らせてもらったので,動力系の電源には鉛バッテリーを使っているのですが,ここではPC周りの電源検討をしてます.)

1. 鉛バッテリーの場合

車に乗っているバッテリーといえばなじみ深いと思います.Amazonで売っているものだと,例えば下記のような商品があります.

上記の製品だと,大体下記のようなスペックになります.
サイズ: 225mm x 173mm x 232mm (= H x W x L)
重量 :15.6kg
5時間容量率 :58Ah
電圧 :12V

5時間容量率というのは,「5時間かけてバッテリを使いきった時に取り出せる電流総量」です.上記の例だと,58Ahを5で割った数値(=58 / 5 = 11.6A)で5時間かけて電流を取り出すと,取り出せる電流の総量が58Aになります.なんでこんなめんどくさい表記の仕方をしているかというと,短時間で大きな電流を取り出すよりも,長時間で小さな電流を取り出したほうが取り出せる電流総量が多いからだそうです.

で,効率はちょっと無視して,上記のバッテリーを300W出力で使い切るとして時間を計算すると,次のようになります.
電圧 :12V
電流 :300W / 12V = 25A
時間 :58Ah / 25A = 2.32h

このクラスのサイズのバッテリーを使えば,何とかGPU搭載PCの電力を賄えそうです.ただ,,,,重い&大きいんですよね.ということと,効率の問題もあるので,実際には供給可能時間はもっと下がるかと思います.

2. リチウムイオン電池の場合

もう一方のリチウムイオン電池ですが,下記の製品を例として取り上げます.

上記の製品のスペックは,
サイズ:210mm x 190mm x 280mm (= H x W x L)
重量 :6.8kg
容量 :500Wh
電圧 :100V & 12V & 5V (USB) 

同じく,上記のバッテリーを300W出力で使い切るとして時間を計算すると,次のようになります.
電圧 :100V
時間 :500Wh / 300W = 1.66h

ということで,鉛バッテリーもありかなとは思ったんですが,重すぎるので今回はあきらて,リチウムイオンバッテリーを使うことにしました.
(ちょっと上の計算は合っているかどうか自信なしです(笑)参考程度に読んでください.)

つくばチャレンジ試走会2回目 & ROS + i-Cart middle 2日目 ~ 組みたて

久々の投稿です.8月4日.つくばチャレンジ試走会2回目!目標は下記の達成でした( `ー´)ノ

1. i-Cart mini ベースのロボットを作成し,試走会参加!
2. ROS の基本パッケージを使って,確認走行区間の走破!

結果は,,,

筐体作成が間に合わず,不参加....(;´・ω・)

でした.まだ一度も新しいコースを見てないのでそろそろ行きたかったんですが,レンタカー借りるのもお金かかるし,ロボットもさっさと作らないといけないし..ということで今回はあきらめました.

i-Cart middle の使用

で,肝心のロボット作成ですが,大幅な方針転換をしました.前回 「i-Cart mini を組み立てました!」という投稿をしたと思うんですが,そのあとつくばチャレンジの冊子を見ていると,どうやらみんな i-Cart mini ではなく,i-Cart middle をベースにして挑んでいるらしいことに気づき....確かに i-Cart mini だとサイズが小さいので,PC や Jetson を動かすバッテリーが載せられなさそうです.「そんなこと事前にわかるやろ」という話ではあるんですが,このあたりが一人でやっているとつらいとこでして...やっていく中でいろいろ気づくんですよね.

で,HW周りをちょっとづつ直しながら進めると無限に時間を取られるので,結局 i-Cart mini をやめて i-Cart middle をベースに作り変えることにしました.i-Cart middle もT-frog プロジェクトの方が部品表や設計図を公開してくれていて Misumi & Monotaro & Amazon を駆使して3週間くらいでフレームが組みあがるとこまでは来ました.

前から
f:id:rkoichi2001:20180805171018j:plain

斜めから1
f:id:rkoichi2001:20180805170831j:plain

斜めから2
f:id:rkoichi2001:20180805170934j:plain

うーん.でかいですね.来週からお盆休みなので,一気に走らせられるところもまで持っていければいいんですが,下記3つの目途がつけばひとまず走るとこまではいくかと!

1. ボディー作成
2. 電気周りの調整
3. PC用バッテリー購入
4. ROSの基本パッケージの実験

3のPC用バッテリーの選定でちょっと悩んでいまして,ここは別のエントリで書きます.

ROS + i-Cart mini 1日目 ~ 組みたて

ようやく帰国からの,ロボット再開です.以前下記のページで宣言した通り,今年は三つの新規取り組みがあります!
daily-tech.hatenablog.com

1.ハードを変える.

2.レーザースキャナを使う

3.画像ベースの3D地図を作成し,カメラで自己位置推定する.

で,本当はハードの組み立て(1, 2)をGWくらいにやりたかったんですが,まあ計画通りには進まず...ということで,8/4にROSの標準パッケージを使って i-Cart mini で確認走行の達成をひとまずの目標とします!

i-Cart mini の組み立て

GW前に発注しておいた i-Cart mini のパーツが全部そろったので,さっそく組み立てを開始しました.下記,i-Cart mini の全パーツ,計25万円くらいです.うーん.やっぱりどうしても金はかかりますね.
f:id:rkoichi2001:20180709191003j:plain

で,昨晩から始めたんですが,あっけなく組みあがりました.やっぱり先人の知識・積み上げというのは半端ないですね...一台目完全自作した時は本当に大変だったんですが,こんなにすんなり組みあがるならもっと早くこっちにしておけばよかったかしら..ということで,T-frog プロジェクトの皆様,有難く使わせていただきます.<(_ _)>
t-frog.com

完成したロボットの様子

つくばチャレンジ出場のためにはもう少しいろいろと手を加えないといけないですが,土台部分は完成です!
f:id:rkoichi2001:20180709191301j:plain

自作ロボットをやめるのはちょっと寂しいような気もしますが,この後一台目から必要な部品を取り外します.
f:id:rkoichi2001:20180709191608j:plain

ここからもう少しつくばチャレンジ仕様にしていきますが,それはまた次の投稿で...