まじかる☆マリオネット: 開発日誌 (201208)

2012/08/31
22:32 (進捗) 1週間前の状態まで復帰

※18:00頃の話

昇天したuart1のかわりにuart2を1wireシリアル化し、5.5V DC-DCのGNDが浮いているのを直し、uart0のプルアップを5kΩに変更して、4ポートUSBハブを茉莉花の頭に入るように分解してコネクタを交換して…

何度も外部接続でのテストを繰り返した後に組み直してみたら、いつの間にかuart2が「データは送信できるけど受信できない」状態に… orz
もういちどバラしてTX/RXをループバックしてオシロで各所の波形をみたものの、基板のピン手前でも波形は取れてる。でも受信できない…

1時間ほど調べたけど原因が判らないので、データ受信をあきらめて KRS-2552は位置指定だけで使うようにモーションコントローラのコードを修正。

ようやく1週間前に作った「左右体重移動モーション」の再生ができるようになって、身体をふよふよ揺らしながらにじり歩きする茉莉花を見てニヤけているところ。

これからもう一度組み直して、歩行モーションの作成。
ちょっとでも歩けるようになったら、ワイヤレスゲームパッドのデータ受信処理を作らないと。

大会(予選受付終了)まであと20時間

※これを書いたのは4時間前なので、実際はあと16時間


[☆コメント] [△先頭へ]


2012/08/30
20:21 Futaba RS303 の過負荷時の通信エラー解決

昼の日記に書いた「Futaba RS30xがサーボの過負荷時に通信エラーになる」という謎現象、浜杏さまのアドバイスに従ってビットレートを57600bpsに落としたところ通信エラーが出なくなりました。
これで、USBシリアル変換器を慌てて調達せずに済みそうです。

※気になってもう一度オシロで波形をみたら、115200bpsの時はHighの立ち上がりが遅くて 2.5〜2.7V程度にしかなっていませんでした。57600bps では3V辺りまで出ているので、過負荷時のエラー原因はこっち(プルアップ抵抗(10kΩ)が大きすぎる)かもしれません。

随分と作業が手戻ってしまったけど、モーション作成に戻るまでに必要な作業は

  • uart2の1wireシリアル化
  • 壊れた(?) 5.5V 6A DC-DC SWレギュレータの入替え(または故障箇所修理)
  • μPX-1を本体に組み付けて、Futaba RS303過負荷時の通信状況チェック

今日中にこれだけでも終わらせて、明日はろぼとまで歩行モーションの作成やりたい。

Logicoolのワイヤレスゲームパッドでの操作と、ステータス表示用のLED取り付けと先送りかな…

バッテリーの電圧監視どうするかな…。「BluetoothのSPPでAndroid携帯に送って表示」が手軽そうだけど今から作れるだろうか…。(Bluetooth自体は開発環境のネット接続用に使っている)


大会(予選受付終了)まであと1日と18時間


[☆コメント] [△先頭へ]


10:05 (進捗) 一週間の手戻りのはずが半年以上の手戻りに…

1週間前の日記に書いた「インタプリタの処理が追いつかない…」は、結局「モニタリング用のメッセージ出力の負荷のせい」で決着。
ゴーレムくんの時は100baseTのネットワークでモニタリングしていたのが、茉莉花ではBluetooth上のPPP経由になったので、PPPのプロセスにCPUを食われてました。

原因に早く気づいていれば、先週の練習会に行けたのに…と思っていたら、また新たな問題が…

「Futaba RS30xがサーボの過負荷時に通信エラーになる」という謎現象発生。
負荷が軽いときは問題がでないのに、サーボに負荷がかかると、そのサーボだけコマンドを受けとらなくなって、目標位置変更もトルクOFFもできない状態に。
そして、負荷を減らすと何事もなかったかのように通信エラーが解消してサーボが動作する。

サーボの電源周りや、1wireシリアルのプルアップの電源容量を疑って、オシロで波形を見たり、外部から電源供給してみたりしたけど原因わからないまま。
そうこうするうちに、何かをやらかして、μPX-1のシリアルポートが一つ昇天…org
(やぱりホトアイソレータとか入れておいた方がいいのかな…)

状況をFacebookに書いたところで、浜杏さまから「シリアル通信のクロックによるビットレートの誤差のせいかも」とコメントがあったので、シリアルポートの復旧(上半身に使う予定だったシリアルポートの転用)が終わり次第、ビットレートを落としても再現するかどうかのテストを実施する予定。
ビットレートを落としてもNGだった場合は、USBシリアル変換器を使うことになるのだけど、なぜかμPX-1にはFTDIのカーネルモジュールが入っていないので、それを作るところから始めないと…

3月の天保山のときよりも前の状態に戻ってしまいました。

腰ピッチ軸や肘ピッチ軸の追加とか、足のカバーや靴の作り直しとか、プロテクターっぽいのを服に付けるとか、いろいろやりたかったけど全部先送り。

大会(予選受付終了)まであと2日と4時間


[☆コメント] [△先頭へ]


2012/08/24
11:54 第21回 ROBO-ONE エントリーしました

「茉莉花が歩行できるようになったらエントリーする」と言っていたのに、またしても歩けないうちにエントリー…orz

PC上の仮想環境でのテストが終わって、実機テストをしてみたら、通信処理のスレッドがCPUを明け渡さなくて、メインスレッドのインタプリタの処理が全然追いつかない…。という結果に…
いろいろと思い当たる箇所を手直し中。

大会まであと7日と21時間


[☆コメント] [△先頭へ]


2012/08/19
14:51 (進捗) 3.3VDC-DC作成、Futabaシリアル通信ロングパケット、ヘッドギア作成

また日記の間隔が空いてしまったのでTwitterのログを見ながら記憶を再生

---
8/9〜8/11あたり

Futaba RS30xとのシリアル通信の不安定さがプログラム側を色々と変えてみても直らないので、オシロを繋いでチェック。
デジタルで見るとそれなりの波形に見えるのだけど、アナログで見るとノコギリ状になっていました。1Wireシリアルのプルアップの容量が足りない感じ。
USB用の5Vを抵抗で分圧して3.3V作ってるのが良くないのだと推測。
※よくよく考えると、4月頃にオシロで波形見てダメダメなのは確認していたような…

ということで、uart2ppmモジュール用に買っておいた 3.3V出力のDC-DCレギュレータを使って3.3VDC-DCモジュールを作成。
これをμPX-1の60pin拡張ボードの裏側に貼り付けて、USB用の5Vから電気をとって、1Wireシリアルのプルアップに接続。
無事に通信が安定するようになったので、Futaba RS30xとの通信をロングパケットに変更する作業へ


---
☆ 8/11〜8/13あたり

ROBO-ONE公式サイトの更新があって、追加された情報の解釈や、不足する情報の確認やらで作業せず。
※そんなことほっといて開発作業に専念すればいいのに…

---
8/14〜8/17あたり

Futaba RS30xとのシリアル通信、物理要因での通信エラーが解消したので、通信のロングパケット化に着手。
「6個あるRS303のうち6番目のサーボだけロングパケットに反応しない」という謎現象に悩まされ、受信データ(1WireシリアルなのでTXDとRXDが繋がっている)を確認したり、並び順を変えたり、3つずつに分けたりしてもダメなので、「6番目だけもう一度ショートパケットを送る」という方法で暫定対処。
その後「7番目にダミーデータを加えたら?」と気づき、試してみると、6番目のサーボもちゃんと動きました。
サーボ側の問題ではなく、送信プログラム(ロボマガ連載に出ていたショートパケット用コードを流用)の問題だろうと推測。

---
8/17〜8/19あたり

ロングパケットのテスト中に何度も転んで顔をぶつけそうになったので、ROBO-ONEエントリー後にやるつもりだったヘッドギアの作成を前倒しすることに。
仮なんだから単純な形にしようと思いつつ、いまいち気に入った形にならなくて画用紙で型紙作って試行錯誤。発泡塩ビで最終版作るまでに2日も使ってしまった… orz

エンジェリックレイヤーとかプラレスラーをイメージしたのだけどどうでしょう。
フェイスガードは発泡塩ビ、ヘッドバンドとヘッドガードは暫定で画用紙、透明部分はゴーレムくんのヘルメットと同じくマイクロソフトマウスのパッケージを使っています。


---
これで転んでも大丈夫になったから歩行モーション作成に入れるかな…

でも、その前にロボマガ連載のコードを流用しているサーボ通信部分を書き換えたい気も…
3月の天保山ロボフェスに参加するとき、時間がなくてロボマガのコードをそのまま流用したのがそのままになってます。
そのコードのシリアル通信処理部が、ttySをNON_BLOCKモードで開いて、read()をbusyループにしているのと、write()で一気に書き込んでいるあたりが気になるのでselect()で書き直そうかな…と…(マルチスレッド化した意味ないじゃん!)


[☆コメント] [△先頭へ]


2012/08/08
22:19 ROBO-ONE事務局(ロボエンタ)に出した質問のその後

質問の一覧は8/2の日記

質問(1)の回答は「8/2に公式ページで公開します」とのことでした。
…が、改訂された「競技規則」からは「委員会推薦枠」の一文が消えて、「模倣形状禁止」の「サンライズ例外枠」までも消えてしまいました。
なにがどうなっているのでしょう…。
「委員会推薦枠」は消えてしまったので、これ以上問い合わせはしませんが…。

質問(2-5)への返事は、8/7 22:40 に届いていました。

小出しになりますので、ご質問の件は週内に取りまとまります。 その後サイトにて公開いたします。
とのこと。
つまり「来週まで待って」ということですね。

今日までに拾った電波(TwitterとかFBとかに流れた情報)から推測すると、

  • 締切は、おそらく参加費振込期限の8/25よりも前(8/19くらい?)
  • 控え室には机と椅子が用意されるらしい。 (FBでの質問へのコメントから:事務局の回答ではありません)
  • 控え室の利用時間は返事待ち。
    (会議室を3つ使ってLightと予選の参加者がギリギリ入りそうというところ:科学未来館施設貸出情報参照)
  • 調整用リングは90cm^2が二枚くらいは用意されそう。
    (「前回も用意されていた」とのFBでのコメントから:事務局の回答ではありません)
というところでしょうか。

---
肝心の「茉莉花」の開発は、サーボとのシリアル通信でよく判らないエラーが出ていて、オシロ繋いで解析中。春にも同じことやって解決させたはずだったのに…


[☆コメント] [△先頭へ]


2012/08/06
02:19 2ヶ月ぶりに「茉莉花」を起こしました

※2012/08/06 12:40 補足追記

放置したままだったモーションコントローラの実装を再開

ゴーレムくんの時は pselect で全部を廻していたけど、サーボモータがKO-ICSとFutabaシリアルと独自uart2pwmの3系統に増えて面倒になった(w)ので、スケジューラと操縦系はそのままに、サーボ種類ごとの通信処理をそれぞれ別スレッド化。

「これで20msec周期で回せるかな…」と思ったけど、PC上の仮想環境ではFutabaサーボの通信スレッドの処理時間が50msecに収まらない
カーネルにRTパッチが当たっていないのが原因かと考えて、2ヶ月ぶりに「茉莉花」を起こして実機上で試してみたけど、50msecがギリギリ。

「なんで?」と思ってソースを眺めてみると、「トルクのON/OFF」と「目標位置指示」と「現在位置取得」のコマンドパケットを6個のサーボに順に送ってました
送信データ 162byte、受信データ 234byte (1wireシリアルなのでサーボからの返信+送信データのエコーを受信する)。ビットレート115kbpsにしているんだから無茶だって気づけよ… > わたし

RS30xのメモリマップによると、「指示位置」から「トルクON」までは7byteなので、ロングパケットを使えば、サーボ6個分のトルクON/OFFと目標位置指示を 56byteの送信データと 57byteの受信データで実現できそう。
これなら「現在位置取得」コマンドの送信データ 48byte と受信データ 108byte を加えても20msec内に収まるかも…
…ということで、「通信処理部分をまた作り直さなきゃいけない」という結論がでたところ。

ついでに、送信と受信のスレッドも分けて、ビットレートも 230kbpsに変更したほうがいいかな

※補足 (2012/08/06 12:40 追記)
Futaba RS30xのシリアルコマンドの仕様としては、「トルクON/OFF」を毎回送る必要はありません。(ON/OFFを切り替えるときだけ送ればいい)
また、「トルクオフの状態から、トルクオンと目標位置を同時指定した場合、目標位置指定は無視される」という仕様(取扱説明書P34)なので、同時に送る意味もありません。
「茉莉花」のモーションコントローラでは、「毎周期の送受信データ量を一定にしたい」&「モーションスクリプト側でON/OFF指定してから反映されるまでの時間(遅延時間)を一定にしたい」という考えのもとに、このような処理になっています。

他にも

  • 両肩4軸の駆動(制御基板は作ったけど未テスト)
  • 腰ピッチ軸の追加(これがないと起き上がりができない)
  • リセットスイッチ、操作ボタン追加
  • ジャイロ、加速度センサの追加
  • せめて、肘のピッチ軸くらい欲しい…
…と、まだまだやること山積み。
なぜもっと早くからコツコツ作業できないですか?あなたは…

[☆コメント] [△先頭へ]


2012/08/02
22:43 ROBO-ONE事務局に送った質問一覧

TwitterとFacebookに書いて、自分の日記に書くのを忘れていました。
1つ目の質問は7/28に出したもので、その日のうちに「8月2日に公式サイトで発表するのでお待ちください」との返事をいただきました。
2つ目以降は8/1の昼に出したものです。

  1. 第21回ROBO-ONE競技規則にある「委員会推薦枠」は、「模倣形状の例外枠」なのか「模倣例外枠+認定枠」で予選免除なのかどちらでしょうか。
  2. エントリーの締め切り日はいつですか。
  3. 予選日の選手控え室には机は用意されますか。
  4. 出走順がくるまで選手控え室で作業できますか。
  5. 選手控え室には調整用リングが用意されますか。

まあ、「そんな質問はロボットができてから言え!」という話もありますけどね…。


[☆コメント] [△先頭へ]


2012/08/01
23:51 「葉月」 あ、まだ暑中見舞い出してない

年賀状も暑中見舞いも2年くらい出していないので、今年はちゃんと出さないと。

それはそうと
チキチキロボマッチミニ! 2012 5回目 まで17日、第21回 ROBO-ONEまで30日、船場ロボットファッションコンテストまで73日です。

※7月はちょっとだけ進捗ありました。


[☆コメント] [△先頭へ]



  • このサイトは「人形つかい」が提供しております。
  • リンクはご自由に。(そんな人いないだろうけど…)ただし、トップページ以外のURLは変更になる可能性があります。
  • このサイト内のコンテンツ(ドキュメント、画像、プログラムなど)は特に明記しない限り、「人形つかい」が著作権を保持しています。転載する場合は御連絡ください。引用は常識の範囲でどうぞ。

開設日: 2002/12/10
管理者: 人形つかい/魔女みならい
連絡先: witch-marionette at mtlab.jp (" at " は "@" に置き換えてください。)