2018年9月23日日曜日

Raspberry Pi 2 NOOBSが “sh: can't access tty; job control turned off”と表示されて起動できない

今まで起動できていたものが突然起動できなくなりました。調べたところ、これはsafe modeで、本来は起動時に特定のキーを押すか、設定ファイルで設定するか、あるいは起動時に特定のGPIOピンのジャンパ、等の方法でこの状態に入るものです。
ところがなんらかの理由でICのGPIOピンが壊れていると読んだ時にプルアップ抵抗の効果が得られずlowレベルと判定、何も接続しない状態でもこのモードに入ってしまう、という例が報告されていました。今回私のケースはこれでした。
ICの一部の機能が正常に働いていないわけですので本来はユニットごと交換するべきなのですが、さほど信頼性を要求しない箇所に使用しているのでごまかしてもう少し使用してみることにしました。その方法はいくつかの質問サイトにありました。


recoveryパーティションのrecovery.cmdlineというファイル内に起動オプションが並んでいます。この最後に(区切りのスペースを入れて) disablesafemodeという語を追加することで文字通りsafe modeが無効化、GPIOピンの状態に関係なく通常起動するようになりました。

2018年9月5日水曜日

第8回ROBO-剣参加




第8回ROBO-剣に参加しました。前回に引き続き優勝、連覇となりました。

今回は前回のロボットを少しだけ、信頼性の向上のために改良しました。


ハードウェア面では、まずカメラの支柱のジョイント部を改良しました。
写真は途中経過のもののためありませんが、両方の中心線を通る点で(プリント部品の大穴が開いている部分)で1本のネジで固定します。
この部分は、ロボットを梱包する際に小さくするために付け外しを頻繁に行います。
もともと木ねじ2本で木材を直角に留めていただけだったものを、双方の部品がぴったりはまるジョイントの部品を3Dプリンタで作成してそれで位置決めしつつ固定するようにしました。これは、ネジで荷重を受けないようにするためです。実際、今まで使っていたネジ穴はゆるくなっていて、固定しても部材が少し動いてしまうほどになっていました。

また、USBケーブル1本でPCと接続できるようにUSBハブをロボットに搭載しました。実態としては束ねた配線とUSBハブを結束バンドで本体に固定しただけですが、ロボットから伸びている配線を減らしてスッキリさせておくのは故障率を下げ信頼性を上げるのに良いと思います。ついでに、上の写真にあるように、DS325(デプスカメラ)のケーブルガイドを取り付けて、人や他のロボット等に引っ掛かることがないようにしました。

ソフトウェア面では、小手や胴をうまく打てるようにするための大きな改良を試みていました。
具体的には、軌道生成方式の実験を進めていました。しかし、うまくいかないことがわかったため基本のアルゴリズムは前回までと同じとしました。振りかぶった姿勢から、竹刀先端を接触させるような逆運動学の解となる姿勢まで関節角度を補間して遷移するだけというものです。
唯一の変更として、振りかぶる姿勢を小手や胴の場合やや上腕をひねった姿勢とすることで、鍔などを回避する都合の良い軌道が生成されやすいようにしました。

また、前回は根本関節のサーボに不具合があって、そのため動作速度を抑えていました。速い打突を行おうとするとシリアルサーボ全体のバスで通信異常が増え、全体が動かなくなってしまっていたのです。これを交換したことで本来の動作速度が出せるようになりました。


またアーム部門とは別に、二足型部門が新たに行われました。こちらには今回私は参加しませんでした。ROBO-ONEの上位入賞経験者中心に選手が集まっていました。試験的な試みのため、ルールに改善点がいくつか見つかって良かった、というような形となりました。見栄えもする、それなりに面白い試合になっていたのではないかと思います。ただ技術的には、市販のロボット型ラジコンの制御システムを使ったロボットのみだったため、細かい操作が難しく、隙があってもなかなか有効打突が当てられないようなもどかしい場面もありました。

カンファレンスのスライドにも書きましたが、直径5cmの球に対してきれいに打撃を当てるには±15mm程度の位置精度が必要ということになります。これはROBO-ONE格闘競技と比べると数倍~10倍程度の開きがあるといえます。このような操作を行うにあたり、目視による操縦では離れたロボットを斜めから見るため狙いがつけづらいものです。また、ROBO-ONEで主流の市販ロボット型ラジコンキットの制御システムでは連続的に操作量を変化させての操縦(比例させる:ラジコンで言うところのプロポの語源)が十分サポートされていないということもあり、細かい操作が困難です。どちらかというと、スイングを変化させて狙うというよりは、ちょうど当たるところに来るのを待って打つというような形がよく見られたように思います。
またそれとは別に、本物の剣道のように軸足を中心として踏み込むと同時に打つというのは高度な二足歩行の技術が必要です。これも挑戦しがいのある課題として残ったのではないかと思います。

エキシビジョンとして、二足型の部の優勝ロボットとの異種試合をしました。アーム型ロボットは移動できないため、センサー(カメラ)の検知できる範囲だけに限定して動いてもらう、という形で行われました。準優勝同士、優勝同士、という形で2試合が行われました。

下の動画は、それぞれ準優勝の「ku剣」と「コビス」の試合からのものです。



私の方の結果は、逡巡が2本先取して勝ちとなりました。1本目は相手が転倒から起き上がった直後に当てるという形になってしまいました。これはルールで想定していなかったのですが、審判・審査員の判断により有効となりました。2本目は、相手の上段の構えの腕の隙間から偶然見えていた面を狙いに行ったのが有効打になりました。これは本来相手の腕に阻まれて当たらないのですが、障害物検知や回避のアルゴリズムがまだないので、そのような無理な打撃を出します。
このとき偶然相手が腕を下ろして面が空いたため、そこに命中しました。動きとしては、小手抜き面(※)のような形に見えたかも知れません。
※剣道において、相手が手首を狙って打ってくるのを手足の動きでかわして、相手が空振りしたすきに相手の面を打つ技術・一連の動き。

いずれも、自動制御により正確な打撃操作ができるという良い面が出たのではないかと思います。二足型・操縦型ロボットでも自動制御によるアシストをつける形にするのが一つの進化の方向だと思います、とコメントしました。

今回は参加チームが少なかったので、次回はより多くのチームが参加できるよう普及活動を考えたいと思いました。

電源分配基板

電源分配用基板を作り直しました。 電源をON/OFFするためのパワーMOSFETと、基板にネジが落ちるなど不慮の事故に備えての安全のための電流ヒューズを載せました。ロボットの操作パネルに付く電源スイッチ(定格5A)は駆動用電流を直接流すためではなく、このMOSFETのゲート電圧を...