ブログパーツUL5

モーションを作成上での留意


 自作のハンドを搭載したこともありますが、サーボモータが1個分増えているので、手を振る動作の場合には上半身がかなり影響を受けて、重心がかなり前後に振られることになります。従って、バランスをとる必要があるポーズや連続歩行などの場合にはかなりこの影響を受けるので、モーションも大幅な見直しと再調整が必要となります。

 モーションを作成する上で重心の前後移動の考慮が必要。

 すでに、提供されているモーションや作成したモ−ションを再調整していくのも結構大変です。拡張股関節を付けた人はモーションをどうするのでしょうかね。他人事ながら、心配ですね。
0

    RZ-1の綱芸?

     RZ-1の「綱渡り」ですが、今一、手首がうまくいかずモーションの作成に苦戦しています。

     RZ-1の「綱引き」これはなんとか物になりそうです。様になっているでしょ。

     RZ-1の「綱ブランコ」。このモーションは難しそうでこれから悪戦苦闘という状況にあります。でも、ハンドや音声認識ができるようになって、RZ-1の性能が各段に上ったのでモーション作成が楽しめるようになりました。

     皆さんももっとRZ-1を楽しませてあげてください。
    0

      修正版タッチセンサープログラムを入手

       RoboZakの第60号は購入しなかったのですが、相変わらず提供されるモーションのバグが残っているので、公式サイトに修正版のモーションを提供してくれています。購入された方には申し訳ないのですが、CD-2で提供されたモーションを無償で入手することができて、得したような気分です。

       第60号付属の『RZ-1 プログラムCD-ROM2』の中に収録されている「タッチセンサー1」「タッチセンサー2」のプログラムが、うまく動作しないというケースがあり、更新プログラムを用意されていました。更新プログラム名はtouch-update.zipです。プログラム内容を見てみれば、簡単な追加でした。

      MAIN:のすぐ後に下記の行が追加されています。

      TS = IN(33)
       IF TS = 0 THEN
       TEMPO 230
       MUSIC "AB"
       GOTO k1
      ENDIF

       どちらのプログラムも同じで、33ポートのタッチセンサーのロジック信号を変数に入力して、Low(=0)の場合には、音を出力してリモコンの1の動作(k1)するようになっています。礼の動作をして待機状態になるだけですね。

       このためにだけにアナログポートを使うのは勿体ないので、デジタルポートの33番を変更すれば良いことになる。しかし、タッチセンサーは不用なので何もしません。


      0

        RZ-1の「命」モーション

         ちょっと古いですが簡単なモーションを作成してみました。ある芸人さんが形にしていた「命」をモーションにしてみました。あまり動きがないため、片脚でバランスして立つのがちょっと難しい程度で簡単にできました。
        '================================================
        inochi:
        SPEED 3
        MOVE G6A,110, 78, 145, 100, 80, 100
        WAIT
        MOVE G6D,100, 120, 88, 108, 115, 100
        WAIT
        SPEED 6
        MOVE G6A,112, 60, 143, 144, 90, 99
        MOVE G6D,106, 60, 57, 130, 111, 100
        WAIT
        MOVE G6C,165, 34, 102, 100, 100, 100
        MOVE G6B,163, 44, 102, 100, 100, 100
        DELAY 4000
        SPEED 3
        MOVE G6D,100, 120, 80, 108, 115, 100
        MOVE G6A,110, 78, 145, 100, 80, 100
        WAIT
        RETURN
        '================================================
        0

          「そんなの関係ね〜ぇ」のモーション

           花粉症が発症したようで外出を控えています。そこで、お助け掲示板で「そんなの関係ね〜ぇ」のモーションが紹介されていたのを見て、面白そうなので私も作成してみました。体のバランスをとりながら、足で床を鳴らすようにし、首も左に向けています。なかなか面白いくて笑えますね。

          そんなの関係ね〜ぇ、そんなの関係ね〜ぇ



           オッパピー

          '================================================
          kankenai:
          SPEED 7
          MOVE G24, 84, 123,140, 68, 104,120, 157, 153, 15, , , , 170, 32, 40, , , , 112, 95, 73, 163,100,
          MOVE G24, 84, 123,138, 66, 107, , 162, 12, 95, , , , 175, 13, 100, , , , 113, 112, 73, 156,100,
          WAIT
          HIGHSPEED SETON
          MOVE G24, 84, 70,136, 47, 107, 97, 162, 12, 95, , , , 175, 13, 25, , , , 116, 112, 73, 156,100,
          MOVE G24, 84, 70,136, 66, 107, , 157, 153, 15, , , , 170, 32, 40, , , , 116, 112, 73, 156,100,
          MOVE G24, 84, 70,138, 47, 107,140, 162, 12, 95, , , , 175, 13, 25, , , , 116, 112, 73, 156,100,
          MOVE G24, 84, 70,138, 66, 107, , 157, 153, 15, , , , 170, 32, 40, , , , 116, 112, 73, 156,100,
          MOVE G24, 84, 70,136, 47, 107, 97, 162, 12, 95, , , , 175, 13, 25, , , , 116, 112, 73, 156,100,
          MOVE G24, 84, 70,136, 66, 107, , 157, 153, 15, , , , 170, 32, 40, , , , 116, 112, 73, 156,100,
          MOVE G24, 84, 70,138, 47, 107,140, 162, 12, 95, , , , 175, 13, 25, , , , 116, 112, 73, 156,100,
          MOVE G24, 84, 70,138, 66, 107, , 157, 153, 15, , , , 170, 32, 40, , , , 116, 112, 73, 156,100,
          MOVE G24, 84, 70,136, 47, 107, 97, 162, 12, 95, , , , 175, 13, 25, , , , 116, 112, 73, 156,100,
          MOVE G24, 84, 70,136, 66, 107, , 157, 153, 15, , , , 170, 32, 40, , , , 116, 112, 73, 156,100,
          MOVE G24, 84, 70,138, 47, 107,140, 162, 12, 95, , , , 175, 13, 25, , , , 116, 112, 73, 156,100,
          MOVE G24, 84, 123,138, 66, 107, , 162, 12, 95, , , , 175, 13, 100, , , , 116, 112, 73, 156,100,
          HIGHSPEED SETOFF

          SPEED 7
          MOVE G24, 84, 123,140, 68, 104,120, 157, 153, 15, , , , 170, 32, 40, , , , 113, 95, 73, 163,100,
          MOVE G24, 100, 76,145, 93, 100, 97, 100, 30, 80, , , , 100, 30, 80, , , , 100, 76, 145, 93,100,
          WAIT
          MOVE G24, 116, 76,139, 95, 85, , 95, 140, 130, , , , 100, 40, 105, , , , 51, 68, 138, 118, 133,
          DELAY 3000

          RETURN
          '================================================
          0

            フローリングでやっと安定連続歩行

             連続歩行のモーションは、すでにある歩行モーションを連続すればすぐ出来ると思い、取組みましたが、意外と問題が発生して途中で倒れてしまいます。原因は、床の凸凹とサーボの動きのバラツキにより、RZ-1が揺れるため静止状態でバランスさせてモーションを調整してうまくいきません。そのため、試行錯誤して一番安定して、早くて、自然な動きにするのには苦労しました。

             参考までに、私の作成したモーションです。但し、RZ-1毎にバランスとサーボの動きが微妙に違いますから、動作を保証するものではありません。畳の上ではうまく行きません。このモーションはジャイロなしで安定して長い距離の歩行ができます。

             距離センサーを作動させる部分はコメント文にして動作させていません。5番のサーボは、首のサーボなので無視してください。

            '================================================
            forward_walk:

            SPEED 4
            MOVE24 88, 71, 152, 92, 117, 102, 100, 40, 80, , , , 100, 40, 80, , , , 114, 76, 140, 100, 90, 60,
            WAIT

            loop1:
            '-------------------------------
            'left up
            SPEED 15
            MOVE24 88, 107, 105, 107, 117, 102, 90, 40, 80, , , , 120, 40, 80, , , , 114, 76, 140, 100, 90, 60,
            'left down
            MOVE24 88, 56, 143, 122, 117, 102, 85, 40, 80, , , , 140, 40, 80, , , , 114, 80, 140, 87, 90, 60,
            MOVE24 88, 40, 163, 112, 117, 102, 85, 40, 80, , , , 140, 40, 80, , , , 114, 80, 140, 87, 90, 60,
            WAIT
            SPEED 5
            'left center
            MOVE24 98, 65, 141, 112, 102, 102, 90, 40, 80, , , , 120, 40, 80, , , , 100, 83, 154, 80, 100, 100,
            MOVE24 114, 74, 142, 104, 100, 102, 100, 40, 80, , , , 100, 40, 80, , , , 88, 100, 134, 85, 102, 60,
            WAIT
            '---------------------------------------
            'right up
            SPEED 15
            MOVE24 114, 76, 140, 100, 90, 102, 120, 40, 80, , , , 90, 40, 80, , , , 88, 107, 105, 107, 117, 60,
            'right down
            MOVE24 114, 80, 140, 87, 90, 102, 140, 40, 80, , , , 85, 40, 80, , , , 88, 56, 143, 122, 117, 60,
            MOVE24 114, 80, 140, 87, 90, 102, 140, 40, 80, , , , 85, 40, 80, , , , 88, 40, 163, 112, 117, 60,
            WAIT
            SPEED 5
            'right center
            MOVE24 100, 83, 154, 80, 100, 102, 120, 40, 80, , , , 90, 40, 80, , , , 98, 65, 141, 112, 100, 100,
            MOVE24 88, 100, 134, 85, 102, 102, 100, 40, 80, , , , 100, 40, 80, , , , 114, 74, 142, 104, 100, 100,
            WAIT
            '----- AUTO Fowrd walk ----------------------------------
            'A=AD(3)
            IF A>70 THEN
            GOSUB standard_pose
            GOSUB backward_walk
            GOSUB right_turn
            GOSUB right_turn
            GOSUB right_turn
            GOSUB right_turn
            GOSUB standard_pose
            DELAY 200
            MOVE24 88, 71, 152, 92, 117, 102, 100, 40, 80, , , , 100, 40, 80, , , , 114, 76, 145, 100, 90, 60,
            WAIT
            ENDIF

            GOTO loop1

            RETURN
            '================================================
            0

              EXTのデータ送信プログラム改

               数字のアスキーコード(0x30-0x39)にして出力できるという、らぱいどさんからの指摘で簡略サンプルプログラムを作成してみました。情報、有難う御座いました。

               テストでなく組み込むのであれば、こちらの方が小さいプログラムとなります。サブルーチン化してリモコンのあるキーで起動できるように設定しておくことのもいいでしょう。

               コネクタもDsub9ピンでなく、ステレオジャックΦ2.5にすれば、常設できそうです。

              ' ============ サンプルプログラム========
              DIM A AS BYTE
              DIM B AS BYTE

              MAIN:
              A = " "
              ETX 9600,A
              A = "A"
              ETX 9600,A
              A = "D"
              ETX 9600,A
              A = "="
              ETX 9600,A

              A = AD(0)

              B = A/100+48' 0x30 --> 48
              A = A%100
              ETX 9600,B

              B = A/10+48 ' 0x30 --> 48
              A = A%10
              ETX 9600,B

              B = A+48 ' 0x30 --> 48
              ETX 9600,B

              A = " "
              ETX 9600,A

              GOTO MAIN

              '========================================
              0

                ETXのデータ送信できる

                アナログポートの値をETXで、RS232Cでデータ転送するプログラムをテストするために組んでみました。一応、動作しているようなので、ETXの動作の概要はわかりました。それにしても、roboBASICの関数の少ないなので、サンプルのようなプログラムになってしまいました。

                '============ サンプルプログラム ============
                DIM A AS BYTE
                DIM B AS BYTE
                MAIN:
                A = " "
                ETX 9600,A
                A = "A"
                ETX 9600,A
                A = "D"
                ETX 9600,A
                A = "="
                ETX 9600,A
                ' アナログ値の検出
                A = AD(0)
                ' 数値データをASCIIコードに変換
                B = A/100
                A = A%100
                GOSUB RS232
                B = A/10
                A = A%10
                GOSUB RS232
                B = A
                GOSUB RS232
                ' カラム調整
                A = " "
                ETX 9600,A
                GOTO MAIN
                ' ASCIIコード変換サブルーチン
                RS232:
                ON B GOTO 0,1,2,3,4,5,6,7,8,9
                0:
                B = "0"
                GOTO ASCII
                1:
                B = "1"
                GOTO ASCII
                2:
                B = "2"
                GOTO ASCII
                3:
                B = "3"
                GOTO ASCII
                4:
                B = "4"
                GOTO ASCII
                5:
                B = "5"
                GOTO ASCII
                6:
                B = "6"
                GOTO ASCII
                7:
                B = "7"
                GOTO ASCII
                8:
                B = "8"
                GOTO ASCII
                9:
                B = "9"
                ASCII:
                ETX 9600,B
                RETURN
                '=========================================

                 上記のプログラムを動作させて、加速度センサーの値をAD(0)で取り込み、RZ-1からPCにデータ送信することができました。当分は、センサーを載せた時に利用するだけですから、これで十分というところでしょうか。
                 そのうち、高度な処理はV850のマイコンボードで行いとモーション命令だけを通信しながら動かすことが出来そうですね。

                0

                  データ送信(EXT)にチャレンジ

                   加速度センサーなどの測定値がいくつになっているかを調べるために、roboBASICで用意されているETXやERXを利用しようと考えてテストしてみましたが、今までうまくデータ転送できませんでした。MC-3024のプログラム転送するコネクタからETXもデータ転送できるものだとず〜と思い込んでいました。
                   データ転送について貴重な情報を頂き、なんとか原因がわかってきました。MR-C3024の回路図がなかったので原因がわからなかったのですが、海外にMR-C3024の回路図あることがわかり、早速、RC232Cを辿ってみるがどの端子に出ているのかまでは特定できませんでした。でもLCDモジュールを接続するポートがあるらしく、それと同様にETX用の出力ポートがあるようです。多分、その隣がERXの入力ポートではと推測しています。

                   しかし、ETXやERXはRS232C規格によるデータ転送のため、そのまま接続してもダメで、RS232Cに変換する回路を付けなければなりません。RS232Cの変換回路はADM3202で検索すればすぐに見つかります。AnalogDevicesの「ADM3202」はチャージポンプ回路を内蔵しているので、+3.3V〜+5Vで動作するMAX232互換ドライバを使います。電源は出力ポートから取ります。データ送信だけであれば、信号線は1本だけでいいので簡単です(GND、VCC、Signalだけ)。

                  テストプログラムを次のように組んで動かします。
                  DIM A as BYTE
                  main:
                   A = "A"
                   ETX 9600,A
                  GOTO main

                   実は、ETXの出力ポートがどれなのかマニュアルがないので、差してデータ送信するかどうか確認してみると写真の↓のところでデータ送信をするようになりました。製作した回路基板の部品構成は次の通り。
                  ADM3202×1
                  0.1µF×5
                  100Ω×4(送信だけなら×2)
                  Dsub9ピン×1
                  基板小片×1

                   上のテストプログラムを走らせて、PCのターミナルで転送されたデータを表示したものです。どうもLCD出力とETX出力のポートは違うようなので注意してください。今回は正式なマニュアルがなく、実験でテストして推測しているので、同じことをする場合には自己責任にてお願いします。 
                   まだ、ETXがアスキーコード転送なので、アナログ出力値の数値がうまく表示できていません。そこら辺の情報があれば、提供してもらえると助かります。


                  【追加】

                   ケーブルに隠れていましたが、MR-C3024のマイコンボードをよく見れば、基板に、LCD、TX、RXと書いてあるではありませんか。このTXとRXがETXとERXの専用ポートだと思われます。それにしてもMR-C3024の回路図を含めた正式なマニュアルがほしいですね。

                  0

                    低電圧検出プログラムについて

                     現在、使用しているプログラムを見ていたら、GOSUB robot_voltage がコメントで動作を止めていました。その低電圧検出のサブルーチンを見てみると下記のようになっています。

                    '================================================
                    robot_voltage:
                     ' 10 x Value / 256 = Voltage ← こちらは正しい
                     DIM v AS BYTE
                     A = AD(6)
                     IF A < 148 THEN ' 5.8v
                     ' LEDの点滅
                     FOR v = 0 TO 2
                      OUT 52,1
                      DELAY 200
                      OUT 52,0
                      DELAY 200
                     NEXT v
                     ENDIF
                    RETURN
                    '==============================================

                    しかし、低電圧検出プログラムは次のようになっている。どちらの検出電圧
                    が正しいのだろうか。計算式は上の式の方が正しい。

                    '================================================
                    robot_voltage:
                     ' Value * 25.6 = Voltage ← 計算が合わないのでウソ
                     A = AD(6)
                     TEMPO 230
                     IF A < 160 THEN MUSIC "G" ' 6.25 Volt
                     ' A = 151 as 5.00V
                    RETURN
                    '================================================

                     プログラムを見てわかることは、アナログポート6番の信号入力に電源から保護用抵抗を介して接続すれば、電圧降下を上のプログラムではLEDが点滅し、下のプログラムでは音がなります。これを改良して、座り込むモーションでもつけるとバッテリーがなくなったことがすぐにわかります。しかし、メインルーチンに割込みが入るので、リモコンに対する反応が悪くなったようになりそうです。roboBASICでなく、この程度はアセブラで記述できるといいのですが。。。当分、見合わせですね。
                    0


                      カレンダ

                         1234
                      567891011
                      12131415161718
                      19202122232425
                      262728293031 
                      << August 2018 >>