InRoF 2014 C07 Justin&Lucy

知能ロボコン、チャレンジコースに出場しました、Justin&Lucyの製作者、katoです。
圧縮空気を使用した分離&投げ込みロボットの2代目のマイナーチェンジ版で挑んだ今回の知能ロボコンでは、 自身初の決勝進出を成し遂げ5位という成績を収め、圧縮空気が新しい技術であるとしてチャレンジ技術賞を頂くことができました。

動き等はビデオ審査用に提出した動画をあげておいたので興味があればぜひ見てください。

Qtで使うOpenSSL のビルドについて

参號です。

最近T-semi部内でQtを使い始めようかなという人が増えてきました。
私もその一人で趣味として某艦隊シミュレーションゲーム、艦隊こ○くしょんの専用ブラウザを作ったりして楽しんでいます。

LinuxユーザやMacユーザならサンプル(あったかな?)どおりに進めていけばWebブラウザは簡単に作れて機能制限こそあるものの簡易的なブラウザとして利用することが出来ます。
が、Windowsユーザはそうはいきません。
というのも、自分でOpenSSLをビルドするか、配布しているバイナリ入手し、アプリケーションが参照できるところに 配置しないとhttps://hogehuga.piyo/のようにhttpsのリンクにアクセスした場合
QSslSocket: cannot call unresolved function SSLv23_client_method
QSslSocket: cannot call unresolved function SSL_CTX_new
QSslSocket: cannot call unresolved function SSL_library_init
QSslSocket: cannot call unresolved function ERR_get_error
QSslSocket: cannot call unresolved function ERR_get_error
この様に怒られて接続が出来なくなります。

それじゃあどうすればいいんだ!という感じですが、先にも述べたように
①自分でソースからビルド
②バイナリを入手する
この2つの選択肢があります。

ここでは①のソースからビルドを例にとって行っていきたいと思います。
これはこれからQtを触り始める同輩や後輩に向けて再度説明が必要ないようにという感じの覚書のようなものなので、過度な期待はしないでください。

今回使った環境は
Qt 5.2.* for Windows 32-bit MinGW OpenGL
MinGW

VS版をこのサークルで使っている人が自分の知っている中ではいなかったのでMinGW版を対象に進めていきます。

最初にはっきり言ってしまえば、
https://qt-project.org/wiki/Compiling-OpenSSL-with-MinGW
このページを参考にすれば特に問題なくビルドが終わってしまいます。
以上。

というわけにもいきませんね、ちょっと噛み砕いて説明いたしましょう。

ユーザーが別途インストールを要求されているのは、
MSYSを入れたMinGW
ActivePerl等のPerlの環境
です。
私はActivePerlにしました(他の物を知らなかったため)。

次にOpenSSLのソースを落として展開しましょう。
HeartBleedの問題があったので、なるべく新しいものを推奨。

Qtのページに書かれている通りにConfigureしましょう。
./Configure –prefix=$PWD/dist no-idea no-mdc2 no-rc5 shared mingw
$PWD/distの部分は好きに書き換えてください。
私はC:/OpenSSL/MinGWの様にしました。

Configureが完了するとMakefileが生成されます。
それでは早速make…というわけにもいきません、ちょっとMakefileを書き換えます。
まず1つ目としてPerlをインストールしたディレクトリを指定します。
PERL= c:/Perl64/bin/perl.exe
みたいにとりあえず絶対参照しておけば問題ないんじゃないでしょうか。念のため私はPATHも通しました。
2つ目として、testをさせないようにします。
というのも、このままmakeするとtestでエラーをはいて止まってしまうのです。
http://cat-in-136.blogspot.jp/2010/03/mingw32undefined-reference-to-winmain16.html
ここに原因らしきことが書いてありました、たぶんこれじゃないでしょうか?
ですのでMakefileの
build_all: build_libs build_apps build_tests build_tools

build_all: build_libs build_apps build_tools
の様にtestsを消し去りましょう、たぶん問題ないです。
最後に、
install: all install_docs install_sw

install: all install_sw
と書き換えちゃいましょう。
みなさん、どうせman読まないでしょ?

以上の準備が済んだら
make depends
make
make install
これでOpenSSLのビルドは完了。
prefixで指定したフォルダにいろいろと入っていると思います。
Webブラウザで使うのは
ssleay32.dll,libeay32.dll
だけだと思うので、それをアプリケーションが参照できる位置に配置すれば動作すると思います。
私は動作しました。

最初OpenSSL内にある何とか.W32の様なファイルを見てビルドしていたのですが、どうもできずにつまづいていました。
Qtで使うことを限定した場合結構例が載っていて非常に助かりました。
同じようなことで無駄な時間を費やす人が減れば私も嬉しいです。

次は要望のあったQtとOpenCVの連携及び簡単なサンプルコードも載せましょうかね…レポートの地獄から解放されたらの話ですが()

InRoF 2014 C40 アルサイクロクリーナー

知能ロボコンに出場しました, アルサイクロクリーナーの製作者, こばとんです.
得点はあまりできなかったのですが, 掃除機が競技台を疾走し, ボールを回収するというインパクトが評価され (?), アイデア倒れ賞と最優秀ビデオ賞を頂くことができました.

知能ロボットコンテスト2014 http://www.inrof.org/2014/irc/
C40 アルサイクロクリーナー http://www.inrof.org/2014/irc/score/rinfo/robot061.html

この記事は機体解説とかです.

【コンセプト】
このロボットは見ての通り, 掃除機の外観をもつロボットで, 構想自体は知ロボ初参加の2年前から温めていたものです.
掃除機の車輪と吸引機構を制御できるようにしてそのままロボットにしたら面白いんじゃないか. そう思ったのが始まりです.

因みにモノ枠のネタとしては, 昔はこんなのもありました.
扇風機 http://robot.watch.impress.co.jp/cda/news/2007/07/02/543.html
アタッシュケース http://robot.watch.impress.co.jp/cda/news/2008/06/30/1148.html
箒&ちりとり http://robot.watch.impress.co.jp/cda/news/2008/06/30/1148.html
スーファミ http://www.inrof.org/2013/irc/score/rinfo/robot031.html

【改造】
結局掃除機はこんなになりました.

掃除機の各機構の本来の機能を最大限活用できるようにこだわっています.
車輪や電源スイッチはそのまま使用しています.
小ネタですが, 電源ケーブルの巻き取りスイッチがあったところは, 巻き取りできるUSBケーブルが繋がっていて, ここから内部のマイコンにプログラムの書き込みが行えるようになっています.

当の電源ケーブルが生えていた機体後の開口部は, 外部電源から給電する際に利用しています. 1日目はここから給電して動かしました.

ごみをためる部分は外部からアクセスしやすいのでバッテリボックスにしました.

外観を損なわないように, ボール探索用の距離センサ (いわゆるPSD) は前面の吸引開口部に1つと, 床下に左右1つずつ搭載されており, 低い所から見ないと見えないようになっています.

【一応ロボット】
さて, 内部のロボットらしい部分の解説をすると, アルサイクロクリーナーは, 3つのアクチュエータ, 3つの距離センサ, 2つの壁体当たりスイッチ, 1つのI2Cカラーセンサから構成されています.

アクチュエータは, 足回りのステッピングモータとボール回収ファンの3つだけで, 知ロボでは最も少ない部類でしょう. 吸引は問題ないのですが, ボール排出もこの3つのアクチュエータでなんとかしないといけません. ボール排出は足回り, 吸引, 機体後からの排気をフルに使った割と面白い動きをします.

たまたま中古ショップでドライバを入手できたので, 知ロボでもよく目にする5相ステッパを使ってみることにしました. ホールディングトルクだけ見ると優秀な2相ステッパと大差ないのですが, 高速の伸びがとてもいいので, 取り出せる出力は5相ステッパの方が大きくなります.

吸引ファンにはEDFを使用しています. これは空モノ電動ラジコンの推進用ファンで, 今回使用したのは全長1mのラジコン飛行機に使われているものです. モータは定格400W程度のモータを半分くらいの出力で使用しています. 400Wで, 誤記ではないです.
因みにアルサイクロクリーナーの重量は約5kgなのですが, ステッパの電源を切ればファンの推進力だけで前進することができます.

ボール検知は3つのPSDで, 前方と左右方向を読めるようになっていて, 競技の進行に応じて使い分ける予定でした. 前日の午前中は回収できていたのですが, 午後から挙動が怪しくなり, 本番上手くいかず.
1次予選後に判明したのですが, 前面と右のPSDが正確に読めなくなっていたらしく, 何もないところに突っ込んだり検出距離が正確でなかったりしました.
2日目は左のPSDだけで競技を行ったのですが, ボールは取れたものの, 直前に実装した色読みが上手くいかず, 途中でフリーズしてしまったようです.

皆さんも, 初めて使うデバイスを本番当日の朝に取り付けるのは止めましょう.

【謝辞】
決勝に行くという個人的な目標は達成されませんでしたが, アイデア倒れ賞と最優秀ビデオ賞を頂くことができました. また, 素敵な副賞ありがとうございました.

ビデオ賞副賞の「絵でわかるロボットのしくみ」はツボを押さえた解説で, それでいて幅広く扱っています. ちょっと気になっていたあの機構この機構が紹介されていて, InRoFのネタ本としてもうってつけだと思います. 部室にも1冊置くことにしました.

アイデア倒れ賞の副賞は・・・・・・
これはステレオカメラと飛行ロボットで来年またアイデア倒れ賞を取ってね.   ということでしょうか?
チャレンジ技術賞の方にも似たようなものが行っていたような・・・・・・

それから科学館の皆様, 水曜日の試走の時は相当音が響いていたようで, すみませんでした.

【展望とか】
今回はプログラムがあまり詰められなかったので, 来年はもう少し完成度を高めて, インテリジェントなロボットを出せればと考えています.
当の掃除機の方は中途半端な出来に終わってしまいましたが, 学祭でラジコンにでもしようかなと思っています.

おしまい

※ 画像は2枚目を除き, ロボットコンテスト実行委員会様提供の競技中の写真を編集したものです.
※ 今年の学祭は抽選漏れて出展できないようです.

( こばとん )

NHKロボコン

5月31日、6月1日の2日間、東京の渋谷区で行われたNHK大学ロボコンの
見学に行ってきました。今年の課題は「A SALUTE TO PARENTHOOD」。
詳しい説明は避けますが、去年の課題などと比べても難しく感じられる課題でした。
T-Semiとしても挑戦しましたが、残念ながら本戦に出場することはできませんでした。
本戦の出場校は18校でしたがどこのロボットも完成度が高く、
予選から白熱した試合の連続でした。ここで大会の動画をお見せできないのが残念です。
そんな激戦を勝ち抜いたのは名古屋工大さん、おめでとうございます。
他の出場校も素晴らしい健闘ぶりでした。見ていると自分たちももっと頑張らなきゃな、
これに負けないものを作ってみたいなという気持ちになりました。
そんな大会の様子が放送されるのはNHK総合で7月21日(月)、午前10時05分から!!(ステマ)