■7月21日■
わんだほ〜ロボットかーにばるの観戦に行ってきました。例によって観客なんだけど出場者席周辺でふらふらしてみんなのロボットを見せてもらったり話を聞かせてもらったり。
打ち上げにも参加させてもらいまして、なぜか神谷みのる先生の正面になっちゃいまして、、プラレス3四郎のロボットで何が好きかっ ってお題で柔王丸に「はぃ!」って手を上げたんだけど、井上さんが「なんでエル・ウラカンが出ないの?」と不満な様子。 考えたらエル・ウラカン作ってロボワンに出たいなと思ってたのを忘れてた。(^_^;)
実はイガァさんの言いつけでシグマをこっそりとかばんに忍ばせて持って行ってました。(「シグマをもってこい」って言われたんじゃなくて、「大会に参加しなくてもロボットもって行って動かすんですよ。」って話で) 徹夜明けで大変そうな面持ちのc4cronoさんに「見せてくださいよ」って言われたので会場の片隅でこっそり出して動かしてました。
歩かせると案外ガシャガシャ音がして「こっそり」って形容は微妙ですが。 動かしていると通りがかりの皆さんが足を止めて写真とか撮られたりして。
いや、みんな2足歩行ロボット作ってるくせに多足も好きなんですね〜。 しばらく多足談義に花が咲いちゃって気がついたら「サイコロシュート」が終わってました(^_^;)
上半身つけようかと思っていたのだけど、もうちょっと違う方向に進化させた方がいいのかもしれない。これも面白くするにはCPUをでかくする(処理能力を上げる)必要があって、実際にはサーボを増やすことよりもCPUなんかの制御系の実装空間の方が問題になるかも知れない。幾何学的な美しさが身上なのだし。
今回もJINさんや網野さんと濃い話ができました。 JINさんとはロボットビジネスの話で網野さんとは関節制御について。 どちらも書くと営業妨害になるとまずいんで詳しくは書かないですが、モチベーション下がり気味の脳みそには刺激的な会話でした。 あと、のむむさんの暴挙について。お手伝いロボ楽しみにしてますぅ〜。>のむむさん
関節制御の話で、動作の安定域を広げるためにどのような技術が必要かって話で「二関節筋」の話になったのですが、もうこのクラスのロボットにも二関節筋を取り入れなきゃならない状況になってきているんですね。 ワクワクしてきました。俺もがんばらなきゃなー。
打ち上げで石川さんに「わんだほ〜」を見る立場での感想を聞かれたんですけど、そのときは悪いところを言わなきゃならないと思って一生懸命考えたけどいい意見が出てこなかったんですが、ガルー対サァガのバトル(*1)を見れるのは「わんだほー」だけですよ。強いて言うならアニメイダーさんにマイクを持たせてあげてください。 あとGIYさんの解説が面白すぎてやばかったです。 (*1あのレベルの試合という意味です)
あれぞみんなが見たいロボットバトルなんだと思います。 ロボワンをはじめとする他のバトル大会ではレギュレーションの問題なんかがあってあのカードとあの試合内容は成立しないんじゃないかと思います。 サァガの投げ(対T-Storm)もすんばらしかったけど、サァガが吹っ飛ばされたガルーの横突き一閃が最高でした。
さて、3連休最終日だしちょっとモチベーション上がったからどれかを進捗させよう!
早速、仕事をこなして行こうと思い、まずは簡単なところでファームアップしたサーボの実力測定。
ラムダはRS601CRを使っているのですが、これはコマンド式サーボなので、角度と時間を与えるとリニアに動作するのだけれど、ロボットの足に使うときはそんな使い方は望んでいません。 ラムダの場合は25ms周期に角度を指定して足先やら手先が目的の軌道を描くように各関節を動かしています。
問題はこの25msという時間で、できればもっと短くして動作分解能を上げたいし、できればもっと粗くしてCPUタイムを削りたい。PWMサーボなら決まった周期に信号を与えないとトルクが発生しないという問題が生じるのだが、コマンド式なら、、、 と思いきや。 50ms周期くらいで時間データをつけてコマンドを送ると不思議なことにトルクが出ないという問題がありました。 仕方なく、移動時間ゼロで角度データを指示し、それを短い時間で指示し続けることで動作させてました。 つまり、PWMサーボと同じ制限を持っていたのです。 そこでファーム改良してもらい、短い時間周期で時間付きデータを送ってもきちんと動作するようにしようというものです。
結果は良好。 これでサーボへの指示周期を50msとか100msとかに広げることが可能です。動作分解能が下がるのだけれど、ちょっとCPUが暇になるのはいいことです。
次に、網野さんとお手伝いロボの話をしていて、遠隔でカメラ画像で操縦するとなるとカメラ部分のぶれが問題になるはずだってことで、本来ならばロボットの振動をカメラ姿勢にフィードバックするか、カメラデータから手振れ補正を行うかってところなのですが、ラムダが注目物にトラッキングしている状態で歩くと手振れキャンセルと同等の動作をするんじゃないかと思って撮影してみました。 ウィンドウズの画面を動画キャプチャーするツールで撮影してみました。
@カラー画像で撮影 これはフレームレートが低すぎて手振れが撮影できてない。
Aモノクロちっこい画像で撮影 これこれ、こんな感じ。
Bトラッキング画像 ボールが横にずれていくとクイッと中央に戻る
遠隔で操縦するにはこれくらいのフィードバック周期じゃ足りていないですねー。もっと高度なことをしないと操縦者が酔っちゃいそう。(>_<)
次にRPU-10のプログラミング環境構築。 GDL2.0.0.0をSISOさんからもらってインストールしただけですが。 テストプログラムをRPU-10に入れて動くことを確認。さ〜て、次は何をすればいいんだっけか。 やっぱセンサーボードかなぁ。 すると、ATMEGA128にRS485ポートを2つ付けて、ジャイロと加速度センサーを搭載するってことです。 もしくは壊れたと診断されたスピーシーズのセンサーボードの死活確認。これがもし生きてればラムダの復活の日は近いのだが。
■7月25日■
大阪出張から戻ってきました。 今週のウィークデーは何もできなかった。 そして、先週RSコンポーネンツに注文した発振器は届いていない。 おかしいな?と思ってメールをチェックすると、支払い方法が間違っていてリジェクトされてしまっていた。 注文しなおし。 (ーー;)
明日は、あのでかーい発信器をジャンパーで取り付けて仮付けで作業を進めてみるか。 買っておいたジャイロも加速度センサーも動作させてみたことがないのでそのあたりから始めねばなるまい。 早くエンジンかけなきゃね。
ちなみに来週の前半は、また九州と山梨へ出張なのでウィークデーは期待できない。 ちょっとロボット開発への取り組み方を工夫しないと進捗しにくくなってる。
ROBO-ONEアンテナからあちこち見回っていると佐藤ロボット研究所不定期日誌にシグマが登場してる。 シグマでの不整地歩行も研究したいのだがこの体たらくじゃねぇ〜。この土日はぜひとも作業進捗を!
■7月26日■
センサーボードの製作。
ちゃんと回路図書いて作ろうかなーと思ってイーグルをインストールしたのだが、イマイチ使い方がわからん。アートワーク設計するわけじゃないからイーグルで書くことはないのだが。。 結局はノートにさらさらっと書いて着手。 イーグル、、、いつか使うかなぁ〜(^_^;)
今日できたのはジャイロと加速度センサーとマイコンボードをハーフピッチのユニバーサルボードに積んで、電源供給したところまで。
センサーの出力はマイコンボードのアナログ入力に直つなぎ。 ローパスフィルターくらいは必要かもね。 フィルターは波形を見て必要に応じて後に調整ってことで。
あとこれにRS485を2ポート付ける。
ハーフピッチのユニバーサルボードは予想以上に作業しづらいです。 目がしょぼしょぼして辛かった(>_<)
センサーの動作をオシロで確認。 電源つなぐだけでちゃんと動くから便利なもんですねぇ。
明日はセンサーデータを取り込むプログラムを作ってみる予定。 それとも一気にRS485まで進めちゃうかな。
■7月27日■
センサーボードの配線がほぼ終わりました。ほぼっていうのは発信器の交換と、2チャンネル目のRS485の配線がまだなので。 コレだけの配線するのにだらだらと1日かかってしまった。(>_<) 床でかがんで作業していたので腰が痛くなってしまった。 暑かったのにエアコンなしで作業していたせいもあるかも。脱水症状になりそうだった〜。
コネクタの位置が変わってます
ATMEGA128にはUARTが2チャンネル備わっているのですが、今回はその2チャンネルともRS485とします。 片側はRPU-100と通信を行うため。もう片側はサーボと通信を行うため。COMポートがなくなってしまうと動作確認やらなんやらがえらく不便になるので一通りの動作確認まではこの状態で行う。 RPU-100側のRS485が動き出したらRPU-100を介すればモニターできるので、そうなったら発信器の交換とサーボ側のRS485を立ち上げます。
とりあえずATMEGA128のADCでセンサーの値を読み込んで見るところまでできました。
バッファ動作させるの楽しみだなー。うまく行けばいいのだが。 バッファ動作が出来たらRPU-100側のプログラムも随分と自由度が上がる。 更にはタスクスイッチ時間をそれほど短くしなくてもよくなるんじゃないかなと思う。タスクスイッチ時間(って表現でよかったっけ?)が長い方が(タスク切り替えが起こりにくい方が)CPU効率はいいはずだし。
RS485の動作確認まですすめたかったが、明日の出張の準備が先。 次にこいつの作業ができるのは、、、 火曜日の夜。 へたすりゃ木曜日の夜まで触れない。(>_<)
今回、ちょうどよいレギュレータが無くて、電圧決定用の抵抗もいいのが無くて時間がかかってしまった。 あ、あと、ハーフピッチのユニバーサルボードの扱いに慣れなくて時間がかかってしまった。結局、やっと配線作業のカンが戻って来たかなーってところで作業終了。 次の何かのために部品を補充しておかなくちゃな。 あと、日ごろから配線作業の練習も。(・・・それはしないな。 (^_^;) ) 補充部品リスト作らなきゃ。。。
■7月31日■
やはり今日までロボることはできなかった。 きょうも残業して帰ったので大して時間は取れない。 この週末にATMEGAのプログラミングに没頭できるようにハードの動作確認だけは終わらせておきたい。
で、RS485の動作確認がつつがなく完了。 RPU-100と、問題なく通信できているようです。 ここまでは予定通り。
ウィンドウズ上の通信ソフトだと115200bpsでちゃんと通信できるのにRPU-100だとボーレートの誤差のせいで文字化けしてしまう。ATMEGA128ボードの発信器が16MHzの時、UARTを115200bpsに設定すると2%ほどの誤差が出るのだが、この誤差を許容してくれないのだ。 逆にRPU-100は117647bpsなんて設定ができるので、ハードの確認がなんとかできるってスンポーです。 サーボはこんな設定できないのでATMEGA128ボードの発信器を乗せ変えるまでは接続確認できません。
あ、ちなみに注文していた発信器とどきました。
CPUの上に乗ってるのがそれ。
ちゃんと乗るかなぁ〜。 いや、乗せるっっっ!
明日はプロジェクトの打ち上げがあるので作業不可。 ふぅ。
■8月2日■
今年はマンションの理事をやらなきゃならない上に、大規模修繕の年。 午前中は大規模修繕の説明会に出席。 バルコニーが使えないとか、エアコンの室外機を移動させなきゃならないとか、窓が開けられなくなるとか、大変だ。 作業音もすごいらしいので、騒音に便乗して部品加工するとか(^_^;)。。
ハードはとりあえず完成と思っていたが、大事なことを忘れていた。ラムダにコントローラをつなぐためにRRC-R11の接続コネクタをつけなきゃならない。 これは発信器を交換したあとのSPIライターISPライターと共用で使えるようにしよう。 ←(ISPコネクタには~RESETを収容しなければならないので共用はできなかったです。)
RRC-R11のコネクタは聞き慣れないメーカーの、入手が困難な部品を使っているので秋葉原で入手可能なZHRコネクタで代替。ちゃんとはまらないんだけど、まぁいいや。 コネクタのピッチは1.5mmなので1.27mmのユニバーサル基板には足を曲げて差し込んだりして結構なバラック製作になってます。
↑で、こんな風につきました。
さて、これの動作確認なんだけど、SPI接続らしいのだが、どちらがマスターなのか、伝送方式はなんなのか?LSBなのかMSBなのかもわからない。色々と調べてみたが判らず、結局は色んなモードを試して調べて行きました。
試行錯誤の結果わかったのは、@マイコン側がマスター AMSB先行 B動作種別は3 Cクロック周波数は1MHzくらい D「~SS」をLにしてから200μs程度のウェイトが必要
って感じです。 1パケットは8バイトです。 データのフォーマットはSISOさんのブログが参考になります。
SSとSCKの様子。 SSは8バイトのパケットで一度Hにしてます。 必須かどうか判らないけど。
クロックはもっと早くしてもいいのかもしれないけど試してません。 200μs程度のウェイトもどれくらい短くしても大丈夫かってのもあるけどこれも極めてません。 ちなみにRPU-10のライブラリーだと500μsくらいの長さがあります。 上の画像だと150μsくらいですねー、それくらいでも大丈夫ならしい。
■8月3日■
引き続きセンサーボードの製作。
早いとこ発信器を乗せ変えてRS485をキチンとつないで、RPU-100との通信とサーボとの通信を確立したいところなのだが、ISPコネクタとしたい1.27mmピッチの1列ヘッダーが手元にないので進められない。 売ってるところを探して発注しときました。 今週中にくるかなぁ〜。
まじめに考えると、センサーのAD変換と、サーボへの定期コマンド送信と、コントローラからの定期受信と、RPU-100からの不定期データ受信とセンサーデータ要求と、その返事。 これを漏れなく遅れなくってできるのかどうか。 今日の午後の前半は、これをどうやって実現させるのかを考えておりました。
タイミングを考えて仕事が重ならないようにするべきかとも思ったのだが、RPU-100がらみは非同期にならざるを得ない。また、ソフトの作りとしてはほとんどがハードの処理待ちのうえ、ほとんどの待ちが割り込みで受けることが出来るのでなんとかなるんじゃないかと思ってます。 ま、作ってみよう。
今日はセンサーのデータ取得部分を作成。 5チャンネル分を2ms周期で取得、もっと短くもできそうなのだが、これ以上データが多いと、RPU-100側への転送が大変になるのでこれくらいでいいでしょう。 いまんとこのAD変換は基準電圧をマイコンボードの電源電圧である5Vで行っているので精度が悪い。 せめてセンサーの電源の3.3Vにつながないともったいない。 ノイズは大丈夫かなぁ〜。LPF入れた方がいいんだろうけどなぁ。
来週の土曜日は関東組ロボット練習会。 秋葉原に買い物もあるしぜひ行きたいんだけど、動くロボットがないんだよな。 ま、いつもロボット動かしてないからあまり関係ないし(^^ゞ
せめて、ラムダのサーボケーブルの張り直しくらいやっておくかなぁ。 時間があれば。
■8月8日■
引き続きセンサーボードの製作。
火曜日には1.27mmピッチのヘッダーが届いたのでISPライターとの接続を試してみた。 ところが、つながらない。。。。どうしてもつながらない。 ただSPIインターフェースをつなぐだけ(SSは使わないのだけど) だから、どうということはないはずなのにうんともすんとも言わない。 ライターが壊れたのかと思ったが、ATMEGA32だとちゃんとつながるのだ。 仕事から帰って時間のある日に、日を変えて再トライしてみたが、ダメ。 1.27mmヘッダーがおかしい?とか理不尽な疑いをかけてみたりしたのだが、接続は大丈夫。
このままだと、埒が明かないので土曜日は練習会に行かずに徹底的にやるしかないかなーと思っていた。 のだが、
今日、大阪出張の折りにPCにATMEGA128のデータシートを入れて新幹線の中でチェック。。 すると、ATMEGA128のシリアルプログラミングの際にSPI接続に使用するポートはSPIインターフェース用のポートではなくてRX0とTX0がアサインされているらしい。 ガーーーンーーー。ATMEGAと同じでSPIポートを使うと決め付けてた。 でも、間違いが見つかってよかったー。
帰って接続を修正して無事ISPライターがつながってプログラムの書き込みも正常にできました。 思い込みで作業せずにちゃんとデータシート読まなきゃダメですね。
これでやっと発信器の取替えもできるようになりました。
■8月10日■
昨日は関東組ロボット練習会に行ってきました。
ラムダもシグマも半解体状態だったし、会場がロボット王国店内だったりなので、ラムダもシグマも持っていかず、PCとセンサーボードだけ持って行きました。 ま、案の定会場は雑然としていてPCを広げるスペースもプログラムする雰囲気でもなかったのでPCさえ取り出さずに終わりました。
打ち上げに行った時、Kさんに「ろっぽん足(シグマのこと)はどうなりました?」って聞かれたのをきっかけに、あ〜そういえば、ってことで小さくてパワーのあるCPUボードについて談義。(シグマには小型で高性能のCPU積んで、IKでモーション起こして歩かせたいなと思っていたので) SENB1200Aがよさそうだけど、10万円するけど・・ って話に。 調べてみるとRTで扱ってるし、5万円切ってるし、50×70mmだし、IOたくさんあるし、5W弱だし、1200MIPSだし、これって小脳に最適じゃないですか。 せっかく練習会におかださんが来ておられたのに話を聞ければよかったのに、残念。 ちなみにRPU-100のCPUはフリスケのMPC5200で最高速度で760MIPS、C7@1GのMIPS値は、、調べてもわからんかったけど、1200MIPSってすげーやん。
今日も引き続きセンサーボード。 ISPライターがつながったので最後のはんだ付け、発信器の取替えをやりました。ちっこい上に端子が裏側にあるタイプなのでちょっと苦労しましたが、チップ部品の付け替えは成功。 RPU-100との規定ボーレートでの通信もうまくいきました。
でも、色々と問題もあってすぐにうまく行ったわけじゃありませんでした。 まず、UART0をMAX485と接続してしまうとISPライターとの接続がうまくいかない。これはRX0が共用となるのでMAX485からの出力とコンフリクトしてしまうからでした。プルダウンしていた送受信切り替え端子をプルアップにすることで対処しました。
プログラム側でも問題が。 RS485のテストをするプログラムを手抜きで作っていて、送信側にしっぱなしにしておいたら、RPU-100の挙動がおかしい。 ハングしてしまいます。 どうやらRS485ポートが占有されているとうまくないらしい。ということで、RPU-100のデバイス初期設定が完了するまでは周辺デバイス(この場合センサーボードが)が送信モードになってはいけないようです。 このあたりはRPU-100の問題なのだろうが、仕方ないなぁ。
あとはひたすらプログラム。まずはストックしたセンサーデータをまとめて返すプログラムを作ってみます。COMポートをすべてRS485にしてしまったのでモニターするにはRPU-100を経由せねばならない。 一応、USB-RS485が作れる材料を買いこんではいるのだが、PC側から送信するための制御がわからんので放置。
いままではサーボの電源はRS485回線を通じてRPU-100が供給してました。 今回のセンサーボード兼サーボデータバッファをつなぐと、1本の細い線で全サーボの電源を供給することになり、危険です。なので電源供給は別ルートでバッテリーから直接供給できるように構成を変更しなければなりません。 その配電ボードを作らないとサーボのコントロールはできないのです。 あ、、すると、配電ボードを設計するまではサーボケーブルの長さが決まらないからサーボケーブルの作り直しができないなぁ。。うぅむぅ〜。。 配電ボードどこに積もうか。。。
■8月11日■
やっぱりサーボの配線と電源周りをキチンと決めておこうと思って、コネクタボードの検討をする。
RPU-100のコネクタ部の近くにスペースがあったのでここにコネクタボードを取り付けることに。 ここならRPU-100直結でもバッファボード(兼センサーボード)経由の接続でもケーブル長さが変わらずに済む。 これでバッファボード抜きにしてもケーブルの作り直しを進めることが出来る事になった。
基板を切ったり穴を開けたりは休日の作業になるのだけど、ケーブル作成は夜でも出来るなぁ〜。
ここしばらく、ロボットの足構造の変遷と、更に先日のわんだほーで(極局部的に)話題に上がった二関節筋について考えている。
少し前からリンク構造がはやるようになったが、リンク構造というのは、ある部分で二関節筋と同じ役割を持つ。 つまり、足の姿勢に関わらず足裏が水平なら胴体は垂直になるということで、足の自由度の抑制の機能を果たしている。 ただ、抑制が効きすぎていて、ロボット全体の取れる姿勢にも制限ができてしまい、起き上がり姿勢がアクロバッティブになってしまったりするという欠点もある。 多関節構造での不安定さを抑制する方法としては魅力的なのだが、生活ロボットを目指すラムダは動作域が抑制されるのは嬉しくない。
動作域をキープしながらも不安定さを抑制する構造はできないものかと思案している。 いくつかアイディアはあるのだが、絵に描いた餅っぽい。 どちらにしてもラムダに折り込むには改造というより作り直しに近い。
・・・寄り道ばっかりだなぁ、最近。。(^_^;)
■8月12日■
今日は山梨出張。 いつもなら山梨出張の帰りは特急カイジが宴会場のようになって、早い時間から酔っ払ってしまっているところなのだが、今日はそのメンバーが居なくてもしかして一人きりである。 こりゃぁ飲まずに帰ったらロボれるぞ、 と思っていたのだが、ひとりじゃぁありませんでした。いま、今年入社の新人君が仕事を教えるって名目でプロジェクトのメンバーに迎え入れているのですが、彼が別件で山梨からの出張の帰りです。 新人君と二人で帰るのにしらふじゃなんだなってことで軽くビールでも飲みながら帰ってきました。 軽くしか飲んでいないのに、連日の睡眠不足がたたってか、なんだか酔っ払ってしまって、ごろんと横になってしまったのが運のつき、 気がつくと日付が変わっていました。 ってのは大げさで、なでしこジャパンの試合を見たり、柔道の谷本選手の喜びのコメントを聞いたりはしてたんですけどね。
ということで早く帰ったらコネクタボードの製作をしようとか、ケーブルの製作に着手しようって計画は泡と消えました。 ただし、例によって山梨行きの特急の中ではロボット検討してました。 今日のお題はセンサーボードとの通信フォーマット。
センサーボードからサーボへのデータはマルチサーボコマンド(フタバ的にはロングパケットと呼ぶ)で20個のサーボへ定期的に送信する。パケットデータが送り終わった時点で対象となるサーボが一斉に動作を開始するので、サーボの動作を同期させるにはパケットの長さを常に同じにする必要がある。
データとして変化する可能性のあるレジスタは10個くらいなのだが、レジスタが連続している必要などもあるため、1サーボあたり14バイトのデータを一定周期で送ることにしてみた。 サーボが20個だと280バイト、ヘッダーを入れて290バイトほどなので、460800bpsで送ると6.5msくらいで送り終わる。 先日のサーボファームの改良で、それほどコマ切れな時系列データを作らなくてもしっかり動くようになったので、そうだなぁ〜、20ms周期くらいでいいかな。それなら残り時間でサーボの角度や負荷情報の吸い上げが出来る。1フレームあたり2サーボからデータを取れればいいだろう。
RPU-100からのデータは100msに一度、5フレーム分のデータを送ればいい、こちらは同期を取る必要がないので(そのためのバッファだし)変化するデータだけを送ればいい。
ラムダは今のところ足に6×2、腕に4×2、頭に3、カニ手に2で合計25個のサーボがある。(まぶたの開閉は除く) 上記で20とあるのは両腕両足のサーボで、これを同期動作させようとしている。頭と両手はRPU-100から直接コントロールさせようかなと考えている。 両手はどうでもいいけど頭のサーボはトラッキング動作をさせる関係から100ms周期でうまくいくかどうかは実験してみないとわからないが。
あとは、センサーボードで採取したサーボの角度情報やジャイロと加速度センサーのデータをストックするのだが、RPU-100からの要求コマンドでデータを送り出さねばならない。 この送り出すデータフォーマットを作ってみた。 データ欠落の有無がわかるようにセンサーボードで計数するフレームナンバーを付与するとか、要求コマンドが定期ではないので送り出すデータ長が不定である、そのためパケット長をパケットヘッダーに含めなきゃならないとか、そういうのを決めてました。
結局やっぱりサーボの角度データってのは200msかけて20個分が採取できるって形になりそう。 これは早く解決して欲しい問題で、せめて20ms周期で20個くらいのデータは採取したい。 回線を並列にしてコントローラ側でがんばるってのもいいけど、マルチドロップ回線でデータフェッチコマンドを送ったら接続されているサーボがトークンリングを組んで順にデータを送ってくるって感じにできないもんかなぁ。 (俺サーボファームを書けばいいんだけどね(>_<) )
#ここまで書いて、ふと思い出した! ロングパケットの最長データ長は128byteでした。280byteって2回に分けても送れない (>_<) 要再検討。
■8月15日■
昨日、今日と福岡⇒大阪と出張でした。 日付が変わった頃に帰宅です。
羽田空港でふらりと立ち寄った本屋で「人とロボットの秘密」(堀田純司著)という本を見つけました。 ぱらぱらと見て、モチベーションアップになるかなと思って買って飛行機の中で読んでました。
こういう本ってなんていうジャンルって呼ばれるのか知りませんけど、NHKスペシャルみたいな感じだからドキュメンタリーって言うのかな?
この本の中で前野隆司教授(慶應義塾大学)の受動意識仮説というものが紹介されていました。 これがラムダに実装したいけどさっぱり着手できないでいる「意識エンジン」の構想に似ています。 前野教授は既にロボカップのロボットプログラムにその考えを反映させて実証実験をされているようなので「意識エンジン」の考え方はそれほど突飛じゃなかったんだなぁと喜んでいいのかがっかりすべきなのか。
つまり、今の段階でもロボットが「意識」を持つことは十分可能だということ、 問題はクオリアの方です。 本にも書かれていたけど全ての事象をエピソードとして記憶することは不可能で、クオリアによる選別が必要となるわけですが、クオリアの正体については触れられていませんでした。 私が思うに、クオリアってデジャブーに近いものなんじゃないかなぁと思ってます。過去の記憶の蓄積がある状況やある状態を特別視させるのではないかと。。 もっというと生まれたての子供にはクオリアがない。あるのは本能によるクオリアでそれはここで言うクオリアとは分けて考えるべきものでは。。。 とこういうことを考え出すとどっぷり暮れた夜が明けてしまいます。
家に帰ると注文していたブツが届いていました。SEMB1200Aです。 こいつでシグマを動かしてみようと思ってます。シグマを動かすだけだとちょっと勿体無いようですが、シグマは当面リモコンロボなのだけど、動作はIKで算出するつもりです。 そして悪路踏破にはセンサーフィードバックが必要で、マイコンレベルだと能力的には不安があります。 そして中途半端な能力のCPUで苦労するくらいなら処理能力たっぷりのCPUで、ジャブジャブと計算しちゃってそこでは苦労したくないのです。能力が小さなマイコンボードでも結構な値段がするし、それに比べるとこいつは高性能な割りには安いなと思ったので思わず買ってしまいました。 将来的にはラムダの小脳にもこれかこの後継となるようなCPUを使いたいですね。
RAMが少ないので、大脳的アプリには向いていないし、IKを使う範囲ではいいのだけど、将来的には関節制御も確率データベース(HMMのような(HMMを「確率データベース」などと呼んでいいのかどうかは知りませんが) ) が使われるべきだと考えているので、そうなるとこういうもので大容量RAMとストレージが必要になってしまいます。 が、今の段階では小脳としては最強なんじゃないだろうか。
注意書きに熱抵抗が8℃/W以下となる放熱板が必要となっている。これは結構しっかりした放熱板が要るってことです。どっかで入手しなければ電源入れられないなぁ。 放熱板はそれらしいのが会社の実験室にあるかも。 コネクタは買わなきゃならないし、サーボにつなぐためには外部回路がちょっと必要。 たくさんある拡張UARTをRS485にして、シグマの足を複数チャンネルで制御する予定。基本のUARTも入れれば6チャンネルだけど、そっちは別に使うとすると拡張UARTは4チャンネル。 6本足を4チャンネルで面倒みるってキリが悪いけどなぁ(^_^;) 残念なのはADCがないこと。拡張ボードをつければ出来るけど、CSIポートはコントローラをつなぎたいのでだめだ。 マイコンをUARTでつないで取得するって感じかなぁ。 それにしてもちっこいです。ちっこいけどずっしりと重い。
情報収集のため、岡田さんのHPを眺めてると、1年程前にRTでこいつの講習会とかやってるんですね。 その頃はノーチェックだったな。 またやってくれないだろうか。(^^ゞ
さて、明日こそはATMEGA128ボードのプログラム。 明後日はお手伝いロボの予選観覧です。 お手伝いロボがどんなふうになるのか楽しみだな。
■8月16日■
今日は一生懸命コーディングの日です。
RS485周りを書いてたのだけど、付属のライブラリではちょっと不十分なことが判ってUART周りを全部書き直す。(って言っても大したことないですが) 今回は2つのUARTを非同期に同時に動かすつもり。 試しに動かしてみると、同時に動かすと片方がちゃんと動かない、データが化けてしまう。 困ったなー。 同時受信、同時送信、受信・送信、送信・受信がちゃんと非同期で動かないとバッファにならないんだけど。
困ったなぁ〜と思った時点で夕方だったのだけど、コネクタボードの工作を明るいうちにしなくちゃならないのをすっかり忘れていた。 気持ちを切り替えて日が暮れる前に工作を終わらせよう。
ラムダのフレーム部品にセンサーボードとコネクタボードの取り付け穴を開ける。もうすぐラムダが復活だなぁ〜。。。 時間かかっちゃってるけど。 センサーボードが復活しても本体側のプログラムも、それを使ったプログラムに修正しなきゃならない。復活はまだしばらく先か。。。 やっぱり今までのセンサーボードとの互換プログラムも作ろうかなぁ〜。 それならすぐできるはずだし。
■8月17日■
お手伝いプロジェクトの予選を観に行ってきました。
この競技がどんなふうになるのかってのも気になったのだけど、なんと言ってものむむさんのアマテラスの新型とか、網野さんのトコトコ丸の新型が見たくて行きました。
アマテラスは残念ながら棄権されてました。 色々とお話を聞かせてもらいましたけど、それくらい(新型アマテラスの設計サイズ)のサイズになると、もう目は動かないときっとまずいんでしょうね〜。 デビューを楽しみにしています。 あ、あと100Kgサーボの具合なんかも知りたいです。
トコトコ丸はすごいマニピュレータで、新型の足構造で、ばっちりな感じだったんですけど、フロアの状態と足裏がマッチしてなかったみたいで歩行に苦労してました。 いすぜんさんの話ではロボスポではすごく安定した歩行だったとか。今後が楽しみです。
競技全体ではやっぱりカメラの視野角が狭いことが問題になってまして、皆さん苦労していました。 両手を動かしながら視線も操作するってのはちょっと大変だと思います。HMDつけて首の動きをジャイロかなんかで受けて、視線もマスタースレイブにするようにしなきゃだめでしょうかね。 ラムダでやっているようなトラッキングも、卵みたいな白いものは抽出が難しそうですから。
ラムダは操作は考えていないんだけど、視野角の問題はアイボで体験済みだったので超広角(魚眼レンズ)を積んでます。実際は、ほとんど中央部しか使ってないのだけど、結構視野は広いです。人間が操作するなら収差ひずみなんかは気にならないだろうからできるだけ広角のレンズを使うべきでしょうね。
マニピュレータの問題も、手でターゲットが隠れてしまうとか。 その辺もラムダでは体験済みで、今のマニピュレータの構造はその辺を反映して横から目標にアプローチするようにしています。 ただ、かごの中に手を入れるっていう前提だとまた違った工夫がいるでしょうね。
そういうわけで、結構親しみのある問題が次々に出てきて、ラムダでも挑戦してみたいなぁとかちょっと思ったりしました。 ただ、ロボットの大きさが問題で、一番小さく見えた作業用オートモでさえ、ラムダの1.5倍くらいありそうです。 今のラムダが2倍になるなんて想像も出来ないですねぇ。サーボもメンテも。。。
いま考えている足構造を実現させるためには、ラムダをもう少し位は大きくしなければならず、そうなったらもしかしたらちゃぶ台に手が届くかもしれません。もしかしてそうなったらトライしてみてもいいかなーと思ったりしました。 ただし、30分耐久レースは1周くらいで勘弁してもらいたいですね。 あれってサーボを消耗するだけですから。
予選終了後、みんなでゴハンを食べに行く話になったので、とーっても行きたかったのですが、センサーボードを進めなきゃならないので今日は退散しました。 行きたかったなぁ〜。(>_<)
家に帰って、センサーボードの続きをやりました。
UARTの同時使用が問題になっていたのだけど、問題は割り込み処理で使用する関数が二つのUARTで共通になっていたために片側でデータ化けが起こっていたようです。関数を使わないようにしたら、データ化け問題は解消しました。 よかった〜。
というのもつかの間。 受信テストをしていたのですが、どうもうまくいかない。 色々とたぐって行くと、送信を繰り返すとまともに送信できなくなるってことがわかりました。 これはまた、、原因がわからんなぁ〜。 1歩進んで2歩下がっちゃってます。
今週のウィークデーも作業できるかどうかわからないし、いつになったらセンサーボードは出来るんだろう。とほほ。。
今日は諦めて、全部片付けてPCも落として風呂へ入ったら、、 もしかして、、 と問題の原因に思いついた。 風呂から上がって早速PCを立ち上げて、機材を出してきて試したら、、 問題が解消しました。 まだ完全に原因を解明していないけど、デバッグ中のACDデータの格納リングバッファにバグがあったらしい。ACDを止めたらUARTはデータ化けなく送信し続けることができました。 リングバッファがあふれてUARTのFIFOバッファを壊していたらしい。 ACDを止めただけなのでACD割り込み自体が原因だったら問題だな。 多分大丈夫だとは思うが。 さて、これで安心して眠れます。(^。^)
■8月18日■
妙に忙しいぃぃ〜上に、上司が椎間板ヘルニアで本格的にダウンしてしまったりして忙しさに拍車をかけてます。 でも、寝たきりラムダを復活させるためにもがんばらねば。。
昨日、心配していたACDの割り込みもUARTには影響なし。 この辺は予定通り問題ないみたいですね。 マイコンプログラミングに慣れていない上に割り込み全開の厳しいプログラム(厳しいって言ってるのは自分のスキルに比してということで)を作ろうとしているのでいちいち引っかかってなかなか思い通りに作業が進みません。
この調子で、マイコンプログラミングに慣れた頃にはこのプログラムが完成しているんでしょうね。 そしてまたしばらくマイコンに触れない間に「慣れ」は蒸発してしまうのでしょうねぇ〜。
今日は受信の確認です。
これまたなかなかうまく行かなくてつまずきまくりました。 RPU-100に極簡単な送受信プログラムを作って、マイコンに文字を送って、それに応じて何かの文字を送り返したりして動作確認しているのですが、RS485は半二重通信のため、受信している時に送信したり、送信している時に受信したりができません。 うまく受信できないのは送受信のタイミングのせいかなぁ〜とか思ってウェイトを入れたりして色々試してみたんですが、さっぱり。。 結局はマイコン側のテストプログラムに間違いがあって、そのせいでうまく行かなかったのでした。 (>_<) いや、それがなんだかしらないんですが、プログラムが間違えていたのでまともに応答があるはずがないのに、「k」とか「i」とか「g」とか確実に送受信できる文字があったりして惑わされました。 いや、まいったまいった。
これで割り込みでADCを実行しながら、2chのRS485の送受信が同時に実行できそうなことが確認できました。
次はやっとパケットの送受信です。ふぅ〜、歩みが遅くてたまらんな。
■8月19日■
今日は沼津に出張。 早めに帰れる予定だったので帰ってプログラムの続き〜、、のはずだったんだけど、ちょっと飲んでしまったので、さっきまでへろへろしてました。
酔いが醒めてやっと動けるようになったんだけど、プログラムコーディングしてテストするって雰囲気じゃなくなってしまった。
マルチサーボコマンドで一度に送れるデータサイズが128byteだという問題がある。 一度にデータを送りたいサーボ数は20個。 操作したいレジスタ数は9レジスタ。 これはアドレスが連続していないので実際は4レジスタと6レジスタの2つに分けることになる。
サーボに送るパケットの構造は
ヘッダー(7byte) + データ(最大120byte) + サム(1byte) = 最大128byte
データの構造は
ID(1byte) + レジスタデータ + ID(1byte ・・・・・
なので、サーボ数が20だとレジスタデータサイズは最大5byteとなる。 結局、 4byte 4byte 1byte と、3回送らなければならないことになる。
足のサーボを増やしたいとも思っているので、最大4byteなら24個まで対応できるのでその方がいいかもしれない。 別案としては両足と両手を分けてそれぞれで2回ずつ送る方法も考えられるが、両手が8サーボに対して両足の方は12〜16サーボとなってあまりバランスが良くない。
実は今は、データを送るサーボ数が増えたら自動的に2回に分けるとか、更にはコンプライアンスとかトルクとか、あまり操作しないデータは、データが発生した時にだけ送るとか、結構適当にやってます。 この適当なのが問題なのか問題ないのかはちょっとわからないんですけどね。(^^ゞ
パケット長128byteは短いなぁ。256byteは欲しい。 長いとエラーを起こす可能性も高まるから良し悪しですが。
■8月21日■
放熱板もコネクタも揃ったのでSEMB1200Aの動作確認しなきゃ、と思ったのが火曜日。 でも、センサーボードを優先してほったらかしでした。 SEMB1200AのコンソールコネクタがクロスになってるのでRS232Cポートとつなぐのにクロスケーブルが必要なのですが、我が家にあるクロスケーブルは昔懐かしい25ピン仕様。 そのうえオスとかメスとか切り替えなきゃならないとかで押入れの奥からジャンクみたいな部品を掘り出してくる必要もあったので後回しにしてました。
涼しくなって腰が軽くなったせいか、今日は押入れからクロスケーブル機材一式を発掘するのに成功したのでSEMB1200Aの動作確認をしておくことにしました。
といっても、電源入れてコンソールつなぐだけですけど。
おお、電源接続間違わなかった! これだきゃぁいつも緊張します。 輪ゴムで放熱板を仮止めしてます。動作確認くらいなら放熱板なんて要らないですけどね。(多分)
ふむ。。動きましたね。
これって本当に W T V R しかコマンドないんですね。 (^_^;) メモリーダンプとかIOモニターとかできればいいのに。
SEMBについてたコンソールコネクタがD-sub9ピンのオスコンタクト。 PC側のUSB-COMアダプタと同じコネクタです。 なので、D-sub9ピンのメスーメスのクロスケーブルがあればいいのだが、、、
USB=Dsub9オス−Dsub9メス=変換=Dsub25メス−Dsub25オス=クロス=Dsub25メス−Dsub25オス=変換=Dsub9オス−Dsub9メス=ストレート=Dsub9メス−Dsub9オス=SEMB1200A
という乗り換え何回?って感じでやっと接続できたのでした。 でも、SEMBに付属のコンソールケーブルの結線をストレートに変更すればケーブル1本で接続できるんですけどね。
↓これがSEMBに実装されているコネクタのケーブル側ハウジング。 すごくちっこいのでホーザンの万能圧着工具も使えなさそう。 はんだ付けするしかないかなー。
これはJSTのホームページから買ったのだけど最小購入単位が10個。 コンタクトと合わせて送料込みで3500円くらいしました。 到着してよく見ると、秋葉原で売ってたような。。 もしかして必要個数だけ買えたかも(^_^;) (あれはJAEだったかな?)
さて〜、開発環境を整備しなきゃなー。
■8月22日■
昨日はSEMB1200Aの電源を入れただけだったが、今日はまたセンサーボード。
一昨日だったかにパケットヘッダーを解析してデータを取り出せるようになったので、データを受けて、それに応じたデータを出力できるようにした。 一昨日のうちにそこまでやるつもりだったが、まぁ色々あってできなかった。 とりあえずは、コマンドに応じて加速度センサーとジャイロセンサーのデータを送信できるようにしたので、センサーボードが壊れる前にほぼ戻った。
なので、明日はラムダのサーボケーブルの作り直しをやろうかな。 センサーボード、、、というか、ここからサーボバッファボードか、 はもうしばらくかかりそう。 いざというとき(ってどんなときだ?)にラムダを動かせないままなので、一旦は今のプログラムで動くラムダを復活させておこうかと思う。 今までと違うのはSPIに接続した無線コントローラがあるので、パソコンなしでもラムダを動かす事ができるようになる。
せっかく作ったマニピュレータはまだ動かせてないし、SEMB1200Aをシグマにつなぐってのも早くやりたい。 なんだかやりたいことがメジロ押しなのに仕事は忙しくってまだ夏休みも取れていない体たらくなのだ。 まーいったなーー。
■8月23日■
センサーボードのもう一つの役目として、いくつかのBIT出力を取り出す必要があります。 LEDを光らせたり、カメラの画角切り替えとホワイトバランスの切り替えに接続したり。 あと、ジャイロセンサーも加速度センサーも電源が3.3Vなので、AD変換の基準電圧を3.3Vにします。
これでセンサーボードのはんだ付け作業は本当に終わり。
あとはラムダ側の配線です。 サーボケーブルを作り直そう! と思ったんだけど、ラムダの足構造の変更を目論んでいるので、構造変更したらまたケーブルを作り直さなきゃならない。このサーボのコネクタって買うのが面倒なので無駄遣いしたくないなぁ〜、何よりケーブル作成めんどくさいなぁ〜、、、ってことで、ケーブルの作り直しは取りやめて、フォーミングをしなおすことにしました。
あと、マニピュレータの配線だけど、サーボバッファにつなぐ時は頭の3つと両手のマニピュレータは別回線にする予定なので、腕の配線から芋づるじゃなくて、頭サーボの電源ボードから分岐できるように延長ケーブルと二股ケーブルを作りました。 電源ボードにもコネクタ追加。 やっと手のサーボに電源が入りました。(^^ゞ
センサーボードで画角を切り替えられるようになりました〜。 ってか、いままでもセンサーボードのLEDポートをつぶして画角切り替えをやっていたんですけどねー。
ちょっと失敗なのは、センサーボードをラムダに組み込むとISPケーブルが取り付けられないこと。 今のうちにコネクタの位置を変えておこうかなぁ〜。でも、いい場所がないな。
そういえば、SEMB1200A用に買ったJSTのちっこいコネクタ。 あれは今ラムダで使っているカメラのコネクタと同じでした。どっかで見た覚えがあったんだけど、秋葉原のお店じゃぁなかったみたい。 無駄な出費じゃなくてよかった。 今回のカメラへの配線は先日買ったコネクタコンタクトを使うことができました。 思ったとおり、小さすぎて圧着工具は使えませんでした。
明日は買い物で新宿⇒秋葉原 SEMB1200A用の放熱フィンとか線材とか、色々。 買い物が終わったらソッコー帰ってマンションの理事会です。 ロボット運動会は見に行けないな。
■8月24日■
予定通り新宿⇒秋葉原へ買い物へ。 でも、秋葉原ではろくに買い物できませんでした。基本、問屋街なんで日曜日に休んでる店が多いんだよな〜。
SEMB1200Aの放熱板を買いに行ったのだけど、どれくらいのサイズの放熱板があればいいのか?
箱に「熱抵抗が8℃/W以下になるヒートシンクが必要です。」と書いてある。これ、シマフジ電機の製品紹介には載ってないんですよね。買う前に知りたかったなぁ。 8℃/W以下って結構な放熱板が要るってことです。ざっとサイズを計算してみると、、
まず、放熱板表面積で計算すると、放熱板の表面積Aは
A = -1900×θ+28000
なので、θに8を代入すると12800mm^2 平板で考えると、大体80mm角のアルミ板が必要。 ただし、理論値なので平板で放熱するのはちょっと難しいかも。アルミケースに収納して、ケースに接続するってのがいいかもしれない。
包絡体積で見ると、グラフから40000mm^3 となった。CPUのサイズが33mm角なので、35mm角だとすると高さは33mm。 ほぼ立方体だー。
周囲温度が35℃まで考えての8℃/Wらしいけど、それってまぁリーズナブル。せっかくちっこいのにこんな大きな放熱板が必要なんて、台無しですね。
とはいえ、そんなでかい放熱板つけたらシグマに載せられなくなるので、計算値を念頭に置きつつ、いい感じの放熱板を探しにいきました。
左から、38角高さ10 38角高さ20 50角高さ10
一番小さいのをつけてみた。
これで電源入れてみると、ただのコンソールで入力待ちしているだけで、放熱板は十分暖かくなりました。触れない程じゃーないけど。
ケースに入れたり、ガシガシ動かしたりすると、この放熱板じゃ足りないでしょうね。ファンつければこれで十分だと思う。
SEMBに採用されているJSTのちっこいコネクタの圧着ができなかったんだけど、こんなのが売ってたので買ってきた。
ハーフピッチサイズのコネクタ用の圧着工具。コンタクトの圧着部分の径が1ミリまで対応しているらしい。これで圧着できそう。
株式会社ENGINEERの精密圧着ペンチPA-09 株式会社EMGINEERってなんじゃい?って思ったけど、ここってネジザウルスのメーカーなんですね。
3980円もしたので目的のコンタクトが圧着できるかどうかを十分調べてから買うようにしましょう。 SHコネクタもうまくいくかどうか、まだ試してません。(^_^;)
今日、新宿のヨドバシに寄ったので、かねてから買わねばならないなと、調べなきゃならないなと、思ってたデジタル一眼レフを物色してたのですが、店員が一生懸命値引きして今買え今買えと薦めるので、つい勢いでソニーのα200を買ってしまいました。ズームレンズキット 50000円ポイント18%、 まぁ安かったみたい。
ただ、Wズームレンズキットの存在を知らなかった!! こっちの方がよかったなー。300ミリの望遠がついてあの値段なら超お得。 買い物するときはちゃんと調べなきゃね。 ですが、うちにはもらい物の古い一眼レフカメラ ミノルタα5700i という、往年の駄作( とミノルタに勤めていたカメラ小僧の友人が言っていた)が有りまして、 このレンズが使えたのでまぁいいかな。210だけど望遠も広角も揃ってるので。
きっとαシステムにもバージョンがあって、うちのはバージョンが古くて使えないんだろうなぁ〜ってはじめから諦めてたんだけど、つけてみたらちゃんと使えました。 もう10年以上前のレンズなのにすごいなぁ〜。 ソニーは本当にαを引き継いだんですねー、ソニーらしくない感じがするけど、よかった。
ちなみに私は全然まったくカメラ小僧じゃありません。もらった一眼レフを使ったら一眼レフでの撮影が気持ちよくって、デジカメ時代になってもしばらくは、そのもらった一眼レフを使ってました。 デジタル一眼レフが出回りだしたころ、買おうかと思ったんだけど、カメラに10万円出せなくてそのままにしてました。
このたび使っていたコンパクトデジカメが壊れたので次のを買いに行った時、コンパクトデジカメの、シャッターにラグがあるのが気持ち悪くて、お店で相談したら「一眼レフじゃなきゃダメですよー」ってことで、とうとうデジタル一眼レフにたどり着いたというわけです。安くなったし。
5万円なのに1000万画素ですよ。まったく。。。 CFカードは(ソニーなのにメモステじゃない!)秋葉原で4GBを2100円で買いました。 マイクロSDの方が安いな。
■8月25日■
今日も思惑と違ってたっぷり残業。。(ーー;) ま、いいんだけど。。
さて、今日は何をしなきゃならないんだっけか?あんまり時間ないからさっさと終わるお題で。
ということで、先ごろ動作確認したSPIインターフェイスでの無線コントローラのデータ受信をフル割り込み仕様に修正。
もう長いことうつ伏せだなぁ〜。。
今までは
@SS⇒Lに
A200μsのウェイト
BSPIでデータ転送×8
CSS⇒Lに
という手順だったけど、200μsのウェイトや、SPIデータ転送完了待ちをループで回していた。 これを割り込み処理にする。まぁ簡単な話なんだけど、
<SPIデータ取得開始ルーチン>
@SS⇒Lに
Aカウンターリセット 200μs分のカウントで割り込みがかかるようにセット
Bカウンタースタート
<カウンター割り込みルーチン>
@カウンターストップ
ASPI割り込みセット
BSPIデータ転送スタート
<SPI転送完了割り込みルーチン>
@データ取り込み
A8バイト転送完了なら終了。そうでなければ次のSPI転送スタート
とまぁこんな具合に大変手間がかかる記述をしなければならない。 でも、待ちループがないのでCPUの占有時間は短くなる。 はまるとイヤなのでSPIの信号をオシロで確認すると、こないだと同じような信号が見えるので多分大丈夫でしょう。
ってことで、SPI読み込みはサーボへの指令周期でデータ取り込みをして、受信バッファに最新データを書き込み続けることにする。 センサー値と違って変化は遅いのでバッファは一つ。書き込みながら読み込んでもまぁ不具合はないでしょうから。
これで、RPU-100から要求コマンドを送れば無線コントローラの値が取り込める。 ラジコンロボットにするつもりはないんだけど、コミュニケーションツールってことで。 でも、これでマノイオーと戦えるようになるかも。(^_^;)
RRC-R11のケーブル短いなぁ。 こいつをどこにつけるのかってのはまだ考えてなかったんだけど、センサーボードが腰だから延長ケーブルは必須ですね。明日はケーブル作りかな。
あ、そういやアクセスカウンターが20000越え。 進捗が全然ないので申し訳ないです。<(_ _)> もっともっとがんまりますので今後ともよろしくお願いします。
■8月26日■
今日は比較的早く帰ってこれたのに、取りためたドラマを見たり、ドラマを見たり、うだうだしてて無為に過ごしてしまった。
こないだSEMBをコンソールにつなぐのに変換に次ぐ変換で随分と苦労したのだが、SEMBについてたDsub変換ケーブルの収容を変更すればストレートケーブルでもつながると思って変換ケーブルの収容を変えてみた。
すると、なぜかつながらない??? おっかしぃなぁ〜。。 調べてみると、なんと、クロスと思っていた25ピンケーブルがストレート、ストレートと思っていた9ピンケーブル(メス-メス)がクロスであった。 結局、クロスの9ピンケーブルが一本あればつながったわけだ。(^^ゞ 無駄な作業(ってほどでもないが)をしていたわけです。 とほほ。。
センサーボードにとっかかって随分と立つ。 日誌を見てみると、7月の半ばから、サーボのファームアップから入れると7月はじめからラムダは半分解状態である。もう2ヶ月も経つのだ。 ちょっと忙しかったりしたのだが、2ヶ月は長いなぁ。
■8月27日■
今日こそは、と意を決して帰ってきました。 今日こそはセンサーボードをラムダに組み込むまで寝ないぞと。。
昨日はスタートがかからなくて、うだうだやりつつ、それでも最終的なセンサーボードとRPU-100の通信フォーマットを検討したりしていました。 その結果をプログラムすればいいだけなので比較的スタートをかけやすい状態にはなってます。
でも、ご飯食べる時は撮りためたドラマ見たり。
で、結局着手したのが23時ごろ。 昨日の準備が効いて順調にプログラムを作成。 そしてRPU-100側の受信テストプログラムも作成。 AD変換した値をセンター値を決めて0を中心とした値にしたり、チェックサムをつけたりしてラムダに組み込めるようにしました。
まだ、センサーのキャリブレーションを取るコマンドが無いとか、チェックサムは出力するけど、受信側ではチェックしていないとか、色々ありますが、とりあえずセンサーボード故障前+無線コントローラ受信までは完成しました〜。 ふぅ、、、 ほんとは故障の修理ができただけなんだけどねぇ。。
そして、ラムダに組み込んで、電源投入。 「ジュンビガデキマシタ。」 おぉ〜 久しぶりのラムダの声。 ラムダ君、ひさしぶりー(^。^) ラムダは、センサーを組み込む部分(腰)の蓋に当たる部品(お尻)にスピーカーを組み込んでいるので、センサーボードを外している間はスピーカーも外していたんです。
ラムダ君と久しぶりの対面。
さて、次はラムダのプログラムを修正してニューセンサーボードをつながなきゃ。 あと、無線コントローラのケーブル作成と受信機取り付け。 そして、マニピュレータの操作プログラムと、、、 でも、マイコンプログラミングを忘れないうちにサーボバッファも仕上げなきゃね。 それとSEMBだ、シグマだ。 忙しいなぁ。
■8月30日■
ニュースです。
今夜遅く、川崎市在住のラムダさん(3)が頭を強く打って重体となりました。
ラムダさんはニューセンサーボードの実験中に、歩行中のジャイロサーボデータを採取しようとしたところ、動作不全を起こし、豪快に転倒しました。 転倒時に後頭部を机の脚に強く打ちつけ、首の骨が折れた模様です。
家人がサーボのトルクをオフにしたところ、左膝のサーボがピクつく現象がみられ、確認したところ配線が切断していた模様です。
ということで、ラムダは重体中です。
金曜日は大阪に出張でした。午後に新横浜を出発したところ、名古屋辺りで豪雨のため、停止。 約40分遅れで新大阪に到着しました。 お陰で現地での仕事は約15分。 あっという間に解散になってしまいました。 今回の仕事はたまたま実家の近くで、 この夏は休暇が取れなかったので帰省していなかったということもあり実家に泊まりに行きました。 実家はネット環境もないし、せっかく帰ったのにネットしたりPCしたりってのもなんだなってことでPC、NET、ロボット関係はなんもなしでした。 あ、思考検討は色々やりましたけど。
今日の夜にこちらに戻ってきてラムダのプログラムにニューセンサーボードをつなぐコードを書いておりました。
ところがどうもジャイロがうまくない。 温度ドリフトがひどいという噂は聞いていたんだけど、そういうことよりノイズが乗っているのか、ふらつきが大きい。オフセットがあるのかと思ってキャリブレーションかけても全然安定しない。 シフトしていくからオフセットだと思うんだけどなぁ〜。どうもおかしいです。とにかくこのままじゃ使えないのでもうちょっと調査が必要です。
その前にラムダの首の骨とサーボケーブルを直さないと。(>_<)
累積するとこんな感じ↓ 直線じゃないんだなぁ〜。
センサー出力はこんな感じ↓ 真値があるようにはみえるんだけど、なかなか分離できない。(ーー;) ローパスフィルター要るみたいだなぁ。
24時間テレビを見ながら作業。 例年は全然見ないんだけど何かしらスイッチが入って、今年は一生懸命見てしまった。
ジャイロのノイズはAD入力部で観測したところ、こんな感じ。こいつのp-pは20mVくらい。(メモリの100分の1) 拡大していくと、70ns周期の正弦波みたいなのが見える。70nsっていうと14MHzちょい、ということはATMEGA128ボードのクロック周波数です。
ADコンバータのフルスケールは3.3Vで10bitで変換しています。 データのp-pが大体20なので、64mVってことになる。オシロでの数値とちょっと違うけどなぁ。プログラムで見てるのは取得周期が25msくらいなので、オシロでピョコピョコと見えているヒゲを見ているのかもしれない。
こいつを消したいなぁ、、ということで、ジャイロ出力とADコンバータ入力の間にLPFを入れてみました。カットオフ周波数が思い切り低いやつ。でもほとんど波形に変化なし。 定数を変えてみたけど変化が見られませんでした。 どうやらこれはアースラインのノイズのようです。
ノイズを消すのを諦めて、とりあえず、2ビットほど捨ててみました。分解能をノイズレベルより大きくして無視します。
キャリブレーションを取らないで、歩かせてみたのがこれ。↓
うーん。。 一応は動きは見えるんだけど、ちょっとしょぼいなぁ。 なんせ、このセンサーはフルスケールで500deg/sも有るらしいので、歩くくらいの動作だとコレくらいの動きにしか見えなくなってしまうんですねー。
もうちょっと工夫が必要のようです。
あ、あと、RCC-R11の延長ケーブルを作りました。純正のコネクタは手に入らないのでJSTのZHRコネクタを利用。 コンタクトの圧着にはこないだ買って来た精密圧着ペンチPA-09を使ってみました。 この工具はちょっとクリンプ部分がつぶれ気味かもしれない。 クリンプしたままだとハウジングに収まらなかったので精密ペンチで少し成形してやる必要がありました。成形する時に勢い余ってコンタクトをつぶしてしまったり。。 まぁ〜、ギリギリアウトくらいで使えました。要テクニックです。
SEMBのコネクタSHRはまだ試してません。