週刊 ロビ

Robi第三版のマイコンボード

さぱり書かなくなっているブログですが、最近また少しゴニョゴニョし始めてます。先日、岐阜でロビの方とミニオフをやった時に、初版のマイコンと、第2版のマイコンでは改良されている部分があると聞いた矢先、ちょうど第3版のマイコンが出るとのことで、早速アマゾンに予約注文しました。初版の時もアマゾンで予備を買ったんですが、その時は2〜3ヶ月遅れだったんですが、今回は予定通り昨日17日にゲットできましたhappy01scissors
デアゴさんで購入できるのは昨日からだったと思うので、デアゴさんより早くゲットできたかもhappy01とは言っても、すぐに組み込んだりしてる時間がありませ〜んsweat01

| | コメント (0) | トラックバック (0)

Robiscope v1.7.0 を公開しました

Robiscope128_2 ServoTester for Robi v1.7.0を公開しましたsign01今回のバージョンから名前とアイコンが変わりましたheart04名前はRobiscope、バージョン番号はそのまま引き継ぐことにしました。

このソフトは、one週刊ロビのテストボードと同等のことをパソコンから行えるようにソフトウエアを作ってみました。USB-シリアル(TTL)変換アダプターを使って動かすことができます。またtwoロビのポーズを編集し、モーション作成する機能があります。threeロビのココロのファイルに関していくつかの機能があります

もし、ご興味があれば使ってみて下さいhappy01

このソフトのダウンロードはこちらのページからできます

Robiservotester160

●更新内容

  • (新規 FlashAirの開く(http://flashair)ボタンをRM4エディタとツールに設置しました
    Robiscopescreensnapz001
  • (新規 アイコンとアプリケーション名を変更しました。
    Voila_capture_20150621_032422_

  •  ポーズエディター関連を多数修正していますが、半年以上前のことでどこを修正したのか記憶がありませんsweat01

※今回のバージョンアップで対応できなかったリクエストが何個かあります。申し訳ありませんでした。優先順位は作れそうなところからということで、リクエストを頂いた順ではなくなる場合がありますが、ご了承下さい。これらかも、リクエスト等頂ければ幸いです。

●免責
このソフトウエアのご利用は各自の責任において行って下さい。
私は一切の責任は負いません。

----------------

にほんブログ村 科学ブログ ロボットへ

| | コメント (6) | トラックバック (0)

ServoTester for Robi v1.6.7 公開

Icn_servotester_for_robi_128 ServoTester for Robi v1.6.7を公開しました。

このソフトは、one週刊ロビのテストボードと同等のことをパソコンから行えるようにソフトウエアを作ってみました。USB-シリアル(TTL)変換アダプターを使って動かすことができます。またtwoロビのポーズを編集し、モーション作成する機能があります。threeロビのココロのファイルに関していくつかの機能があります

もし、ご興味があれば使ってみて下さいhappy01

このソフトのダウンロードはこちらのページからできます

Robiservotester160

●更新内容

  • (新規 ウインドウメニューを追加
    Servotester_for_robiscreensnapz011
  • (新規 メディアクラフトさんのデータリストを利用させて頂いて作成していた認識語プレイヤーにロビの音声に対応したデータの利用の許諾も頂いて対応。名称を「ヴォイスプレイヤー」に変更した。
    Servotester_for_robiscreensnapz010
  • (新規 ヴォイスプレイヤーで選択した音声をコピーして、RM4エディタウインドウやモーション エディタウインドウにペーストできるようにした。
  • (新規 モーションエディタでコピーした複数行のMOVEデータをRM4エディタにペースとできるようにした。
  • (改良 ペーストしたデータのIDがペースト時に選択していたIDと繋がるようにした。
  • (変更ペーストしたポーズデータやサウンドデータのペーストは新規のブロックにペーストされるように変更した。選択したブロックにペーストする場合は、OptionキーまたはALTキーを押したままペーストします。
  • (修正 ポーズウインドウやモーションウインドウとRM4エディタのサーボデータのコピーおよびペーストで、サーボの値をホームポジションからの相対値に変換するように修正した。
  • (修正 モーションエディタで「テストSD用モーションとして出力」で、スピードが遅くなってしまう不具合を修正。

といったところでしょうか。大きな機能の追加はありませんが、少しは気の利いた操作ができるようになったかもしれません。

※今回のバージョンアップで対応できなかったリクエストが何個かあります。申し訳ありませんでした。優先順位は作れそうなところからということで、リクエストを頂いた順ではなくなる場合がありますが、ご了承下さい。これらかも、リクエスト等頂ければ幸いです。

●免責
このソフトウエアのご利用は各自の責任において行って下さい。
私は一切の責任は負いません。

----------------

にほんブログ村 科学ブログ ロボットへ

| | コメント (7) | トラックバック (0)

ServoTester for Robi v1.6.6 公開

Icn_servotester_for_robi_128 ServoTester for Robi v1.6.6を公開しました。

このソフトは、one週刊ロビのテストボードと同等のことをパソコンから行えるようにソフトウエアを作ってみました。USB-シリアル(TTL)変換アダプターを使って動かすことができます。またtwoロビのポーズを編集し、モーション作成する機能があります。threeロビのココロのファイルに関していくつかの機能があります

もし、ご興味があれば使ってみて下さいhappy01

このソフトのダウンロードはこちらのページからできます

Robiservotester160

●更新内容

  • (新規 MDI化(Windows版):Windowsを使い慣れている方に取ってはMDIの方がいいのでしょうか?その辺り良くわかりませんが、MDIにしてみました。
  • (新規 復帰:ファイルメニューの「復帰」機能追加:RM4エディタで、これを選択すると保存された状態に戻します。
  • (新規 別名で保存:ファイルメニューの「別名で保存」機能追加:RM4エディタで、これを選択すると別名で保存できます
  • (新規 保存先フォルダを開く:RM4エディタで、このボタンを押すと、編集中のファイルの保存先フォルダが開きます。
    Servotester_for_robiscreensnapz007
  • (新規 自動ブロック順序並び替え:RM4エディタで、このボタンを押すと、ブロックの順番を並び変えます。
    Servotester_for_robiscreensnapz008
  • (新規 ID番号ふり直し:RM4エディタで、このボタンを押すと、並び替えたブロックの番号を順にふり直します。
    Servotester_for_robiscreensnapz009
  • (修正 RM4エディタで、ブロックタイプ1の条件分岐ブロックのFalseの場合のJump文が書かれてないとファイルが開けない(落ちてしまう)不具合を修正しました。

※今回のバージョンアップで対応できなかったリクエストが何個かあります。申し訳ありませんでした。優先順位は作れそうなところからということで、リクエストを頂いた順ではなくなる場合がありますが、ご了承下さい。これらかも、リクエスト等頂ければ幸いです。

●免責
このソフトウエアのご利用は各自の責任において行って下さい。
私は一切の責任は負いません。

----------------

にほんブログ村 科学ブログ ロボットへ

| | コメント (17) | トラックバック (0)

ServoTester for Robi の名前を変えようかと

Icn_servotester_for_robi_128 ServoTester for Robi なんですが、もともと名前の通り、サーボテスターの為のソフトとして作ってましたが、新たにアプリを作るのも面倒だったので、これにRobi関連の機能を追加したので、名前を変えてしまおうかと考えています。如何でしょうかね?

で、

  • Robi Mania
  • Robi Programmer
  • Robi Works
  • Robi Pro
  • Robi Warrior
  • Robi Utilities
  • RobiCode
  • Robitter
  • Robit
  • Robic
  • RobiX
  • Robier

とか、あれこれ考えていたんですが、ある商品名とかぶったり、Robiやってる方のハンドル名と同じだったりとかもあって、ず〜と決められずにいます。ということで、ちと名前を公募してみようかと。考えて頂いた名前とか、名前に関してのご意見とかありましたら、コメント書いて頂ければと思います。よろしくお願いいたしますhappy01

Robiservotester160

----------------

にほんブログ村 科学ブログ ロボットへ

 

| | コメント (6) | トラックバック (0)

ServoTester for Robi v1.6.0 公開

Icn_servotester_for_robi_128 ServoTester for Robi v1.6.0を公開しました。

このソフトは、one週刊ロビのテストボードと同等のことをパソコンから行えるようにソフトウエアを作ってみました。USB-シリアル(TTL)変換アダプターを使って動かすことができます。またtwoロビのポーズを編集し、モーション作成する機能があります。threeロビのココロのファイルに関していくつかの機能があります

もし、ご興味があれば使ってみて下さいhappy01

このソフトのダウンロードはこちらのページからできます

Robiservotester160

●更新内容

  • (新規 RM4ファイルの新規作成
    New RM4 Fileのボタンをクリックして下さい
    Servotester_for_robiscreensnapz001
  • (新規 RM4ファイルをドラッグ&ドロップで開く
    Open RM4 File にRM4ファイルをドラッグ&ドロップすることで開けるようになりました
    Parallels_desktopscreensnapz001
  • (新規 RM4エディタで、検索機能
    左下のフィールドに検索したいワードを入れるとその上にリストで表示されます。選択するとそのブロックと右側にはファイル全体の表示もされます
    Servotester_for_robiscreensnapz002
  • (新規 RM4エディタで、ブロック追加
    エディタ左上の「+」ボタンでブロックを新規に追加できます。ブロックのタイプと名称を入力して「Add」ボタンをクリックして下さい。リストの一番下に追加されます。
    Servotester_for_robiscreensnapz003
  • (新規 RM4エディタで、ブロック削除
    削除したいブロックを選択して、右上のゴミ箱ボタンをクリックすると、選択したブロックを削除することができます。なお、現在Undoに対応していませんので、削除の際には十分に気をつけて下さい。
    Servotester_for_robiscreensnapz005
  • (新規 RM4エディタで、ブロックの並び替え
    上下の矢印ボタンか、並び替えたいリストをドラッグ&ドロップで順番を並び替えることができます。なおSTARTのブロックとEOFのブロックは動かすことはできない仕様にしてあります。
  • (新規 RM4エディタで、ブロック編集
    編集したいブロックを選択するとエディタの右側にブロックのプロパティが表示されます。そこでデータの編集ができます。なお現在はブロックデータのコピー&ペーストに対応していませんので、地道に手入力して下さい。なお編集したデータは右上の「Apply」ボタンをクリックしないと更新されませんので、ご注意下さい。
    Parallels_desktopscreensnapz002
  • (新規 RM4ファイル保存
    ファイルの内容が更新されると左上の「保存」ボタンのアイコンの色が変わり、保存可能になります。現在キャンセルクローズの機能を組み込んでないので、未保存のままウインドウを閉じてもダイアログで保存を促すようになっていませんので、ご注意下さい。なお、保存した場合はオリジナルのファイル名に「X」という文字が付加されたバックアップファイルも作成されます
    Servotester_for_robiscreensnapz006
  • ※リクエスト等があればお申し付け下さい。できそうな機能であれば追加して行きたいと思います。

●免責
このソフトウエアのご利用は各自の責任において行って下さい。
私は一切の責任は負いません。

----------------

にほんブログ村 科学ブログ ロボットへ

| | コメント (27) | トラックバック (0)

週刊ロビ 増刊75号:ロビの頭の動きについて1

75

勝手に週刊「ロビ」増刊75号です。
今回は”ココロを探る”ではなくて、頭の動きについてちょっとだけ書いておきます。

頭の動きは表現力に繋がるので、ロビは贅沢にもサーボを3つ使っていますが、純粋に3軸方向に動くようになっていると言う訳でないので複雑な動きになりますよねbearing

one動きの用語について

ロビの組み立て等の説明の中では、それぞれ

  • 首の縦回転(うなずく方向)
  • 首の横回転(頭をかしげる方向)
  • 首の旋回(左右に捻る方向)
と書いてましたよねhappy01

では、人の動きということで、医療系で使う専門用語はどうなのかというと、それぞれ、

  • 屈曲・伸展
  • 外転・内転
  • 回旋:外旋・内旋
に対応します。
それぞれは、本来の軸から外れる方向と、本来の軸に戻す方向の2語がペアになってます。例えば肘を曲げるが屈曲で曲げた肘を伸ばす(元に戻す)のが伸展です。それでは、外転・内転は、開くのが外転、閉じるのが内転となり、例えば股を開くのが外転、閉じるのが内転になります。軸を捻る運動が回旋と言います。頭の回旋で言えば、横を見るのが外旋(右を見るのも、左を見るのも外旋)で、(横を見てる状態から)正面を見るのが内旋です。

これが基本形なんですが、いろいろな所に例外もあり、関節ごとに適した用語が使われたりします。例えば肘は反対側には曲がりませんが、手首は反対側にも曲げられますので、掌側に曲げる、手の甲側(手背と言う)に曲げるとどちらにも曲げるという感じに、掌屈(しょうくつ)と背屈(はいくつ)と言います。

ということで、頭部の動きは

  • 前屈(60)と後屈(50)
  • 側屈:左屈(50)と右屈(50)
  • 左旋(70)と右旋(70)
という感じにいいます。これならそこそこ通じる言い方ですかね。ちなみにカッコの中の数値は一般的な可動範囲の角度です。
Photo_3

さて、ヒューマノイド(人の形をしたロボット)の世界での運動の方向用語は、ロボットが人の形をしていると言っても医学用語が使われてるわけでなく、

  • ピッチ
  • ロール
  • ヨー

と言うのが一般的で、ラジコン飛行機やヘリコプターの世界からの流れで、航空機の傾きの方向用語を、ロボットの関節の動きの方向として使うようです。

Photo_2

すいません、長々とごたごた書いてしまいましたが、兎に角、ピッチとかロールとか聞き慣れないので、全然ピンとこないんですよね〜bearing

twoロビの首の回旋について

ロビの頭の動きの中で、回旋方向の13番サーボは、軸が固定されてて、サーボ自身が回旋するという動きかたですが、兎に角、垂直方向に回転運動であることに違いないので、そんなには問題ないですよねhappy01ロビの首の回旋は約-85から85度の間で動かせるかと思いますので参考にして下さい。

threeロビの首の前屈後屈について

14と15番のサーボは複雑な付き方をしているので、それぞれをどう動かすとどう動くかが非常に難しそうなんですが、前屈と後屈に関しては、14と15番の値が同じ値で変化させれば、前屈もしくは後屈します。約-22から8度の範囲で動かせるかと思います。

サーボテスターfor Robi」のポーズウインドウでは、「U/D」のボタンをクリックした後に、ボタンの右のスライダーを動かすことで、前屈後屈方向がスムーズに行えます

Servotester_for_robiscreensnapz001

fourロビの首の側屈について

さて、今回の伝えたかったメインの内容です。14と15番を単独に変化させると側屈します。が、その可動範囲は、15番サーボの角度によって、14番サーボの可動範囲が変化してしまいますので、15番の値を変動させた時は14番が範囲を超えてないか注意を払う必要があります。

ということで、14と15番の可動範囲の関係を「サーボテスターfor Robi」を使って調べてにしました(1度単位です)。画像をクリックすると拡大しますので、可動範囲を超えたポーズになってないか調べるのに、ご活用下さい。なおこの挙動はサーボテスターfor Robiで対応済みです。

Photo

ということで、今回は以上ということにしますが、ロビのココロに関して以外にも、いろいろわかったことややってみたことを増刊号で書いて行きますので、今後ともよろしくお願いしますねhappy01heart01

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ

| | コメント (2) | トラックバック (0)

ServoTester for Robi v1.5.2 公開

Icn_servotester_for_robi_128 ServoTester for Robi v1.5.2を公開しました。

このソフトは、one週刊ロビのテストボードと同等のことをパソコンから行えるようにソフトウエアを作ってみました。USB-シリアル(TTL)変換アダプターを使って動かすことができます。またtwoロビのポーズを編集し、モーション作成する機能があります。threeロビのココロのファイルに関していくつかの機能があります

もし、ご興味があれば使ってみて下さいhappy01

このソフトのダウンロードはこちらのページからできます

●更新内容

  • (新規 メモリマップを表示
    Servotester_for_robiscreensnapz017
  • (新規 認識語プレイヤー:メディアクラフトさんから許可を頂いて「ロビ認識語プレイヤー」と同等の機能を付けました。再生させる為には参照ボタンで「ロビのココロ」のフォルダを選択する必要があります。
    Servotester_for_robiscreensnapz022
  • (更新 RM4エディタでブロックを選択した時、下のフィールドにデータを表示するようにした(編集機能は現在作成中です)
    Servotester_for_robiscreensnapz018
  • (更新 RM4エディタで、計算・比較分岐ブロックで変数値およびその機能を表示するようにした
    Servotester_for_robiscreensnapz019
  • (更新 RM4エディタでポーズブロックをダブルクリックした場合、そのデータがポーズエディタに反映するようにした
    Servotester_for_robiscreensnapz020

  • (更新 RM4ファイルダブルクリックでRM4エディタを開くようにした
  • (修正 RM4エディタで、読み込みに関するバグを多数修正
  • (修正 RM4エディタで、コメントブロックの表示を修正
  • RM4エディタで、外部ファイルをダブルクリックすると、ファイルを開いたり、音楽を再生したりしますが、上手く開けない不具合があります。
    RM4エディタは、まだ編集・保存の機能はありません。開発中です。
    ※リクエスト等があればお申し付け下さい。できそうな機能であれば追加して行きたいと思います。

-------------------------------------------

●モーションの作り方

  • サーボテスターのウインドウで「接続」をクリック
    Servotester_for_robiscreensnapz002
  • 「ポーズ&モーション」ボタンをクリック
    Servotester_for_robiscreensnapz001
  • つながっているサーボのみにチェックを入れる。
  • Autoをクリック。
    Servotester_for_robiscreensnapz00_2
  • 「Torque ON」になったら。スライダーを動かす。
  • ※もし半2重回路を使っている場合は、AutoOFF/トルクはOFFの状態で、ロビを手で動かしてポーズを作り「Read Pose」ボタンをクリック
  • ポーズを作ったら「Write Pose」ボタンをクリック(これを繰り返す)。
  • モーションウインドウに書かれたポーズの最初と最後に、TorqueON,TorqueOFFの文章を入れる(ボタンをクリック)
    Servotester_for_robiscreensnapz004
  • スタートボタンで動きます。

●必要なもの

なお、サーボとコンピュータを接続し、本ソフトウエアを動かす為には、以下のものが必要になります。

oneUSB-シリアル(TTL)変換アダプターの購入
 例えば

twoRS308MDとアダプターを繋ぐケーブルを自作

three半2重回路

●さらに高機能なソフト
ServoTester for Robiは、サーボのテストとID変更しかできませんが、もう少しいろいろできるソフトも作ってますので、こちらもご興味があれば使ってみて下さい。

●免責
このソフトウエアのご利用は各自の責任において行って下さい。
私は一切の責任は負いません。

----------------

にほんブログ村 科学ブログ ロボットへ

| | コメント (0) | トラックバック (0)

週刊ロビ 増刊74号:ロビのココロを探る4

74

勝手に週刊「ロビ」増刊74号です。
先週は夏休みを頂いてたので、1週空いてしまいました。

さて、今回の「ロビのココロの中を探る」は、どれか特定のファイルというのではなくて、RM4ファイルについて、さらに分かったことをまとめたいと思いますhappy01paper

oneBLOCK文のType(タイプ)の種類

前回、Block文について少し書きましたが、そのBlock文の"type"について、ロビのココロの中のファイルを検索してみたところ、タイプは以下の0〜10の全部で11種類あるようでした。

  • 0: ポーズ
  • 1: 比較分岐
  • 2: 演算
  • 3: スタート
  • 4: エンド
  • 5: 他のRM4ファイルを実行
  • 6: WAVファイルを再生
  • 7: ファイル読み込み
  • 8: ファイル書き込み
  • 9: コメント
  • 10: 待ち

前回、CALC文ということで書いたのは、演算と分岐の2種類があるということでしたねcoldsweats01

two演算子について

タイプ1と2の比較と演算のブロックについては、まだ分からないところも多いんですが、演算子について少しまとめておきます。

まず、前回出てきた<sub/>ですが、タイプ1(比較分岐)で使われる<sub/>は、代入(substitution)のsubで、タイプ2(演算)で使われる<sub/>は引き算(subtraction)の<sub/>なんでしょうかね。ややこしいですね。

さて、タイプ1の比較分岐では、まず比較する値を変数に代入する時に理論演算できるようです。検索した限りでは以下の2種類がありました。例えば<or/>や<xor/>はまだ見つけていません。

  • <and/>:論理積
  • <or/>:論理和
  • <sub/>:単に代入

次に比較演算が出てきます。比較演算子は、以下の6種類がありました。

  • <eq/>: equal
  • <ne/>: not equal
  • <lt/>: less than
  • <le/>: less than or equal
  • <gt/>: greater than
  • <ge/>: greater than or equal

です。ということで、具体的に観てみましょうhappy01paper

以下は「000ちょっと待って待ち.RM4」ファイルの<block name="電圧が一定以下?...の中の比較分岐を書き出したところです。

<calc>
    <mem_r size="2" adr="0x0090"/>
    <const data="2000"/>
    <sub/>
    <le/>
    <jump adr="0x000020d9"/>
</calc>

<jump adr="0x00000f6b"/>

となっています。

メモリーアドレス0x90には電圧が記録されている(memmap.csvより)ので、"<mem_r size="2" adr="0x0090"/>"で電圧を読み込みます。そして比較する値は定数(constant)の2000で、比較は<le/>(以下)ということですね

ということで「もし電圧2000以下なら0x20D9へ、そうでなければ0x0F6Bへジャンプしなさい」ということを意味しているわけですねhappy01

次に、タイプ2の演算で出てくる演算子は、検索したところ、以下のものがみつかりました。

  • なし: 代入
  • <add/>: 足し算
  • <sub/>: 引き算
  • <mul/>: かけ算
  • <mod/>: 余り
  • <and/>:論理積
  • <or/>:論理和

割り算に相当する演算子が使われてないのか、今の所見つけていません。

three外部ファイルの読み書き実行について

タイプ5〜8の外部ファイルの読み書き実行についてです。それぞれの書式は以下のようになっています。

  • 5: 他のRM4ファイルを実行
    <call filename="左座方向転換.RM4"/>
  • 6: WAVファイルを再生
    <play filename="voice\604b.wav"/>
  • 7: ファイル読み込み
    <fread filename="性格.LOG" adr="0x0ff0"/>
  • 8: ファイル書き込み
    <fwrite filename="性格.LOG" adr="0x0ff0"/>

タイプ7、8の読み書きは、メモリーアドレスの0x0FF0からの値を読み書きしますが、アドレス0x1000からサーボのデータに使われているので、最大16バイト分使えそうですが、バイト数の指定がありませんし、性格.LOGファイルは8バイトなので、8バイトの読み書きしかできないのかもしれませんね

fourタイプ10:「待ち」について

ポーズなどで使われているサーボ等がBusyでなくなるまで待つ"<wait size="1" adr="0x0b43"/>"文とは別に、タイプ10で待機のためのブロックが準備されています。書式は"<wait data="100"/>"という形で、指定した時間”待つ”ということになるのでしょうか?

さて、このdataの値は20ミリ秒単位のようです。つまり240は4.8秒待ちということでしょうかね?

ただ、「認識語○○○.RM4」関連のファイルでは"<wait data="200"/>"が数多く出てきます。4秒ごとそんなに待ってたら音声認識が鈍くならないのかな?と。もしかすると20ミリ秒単位でなくミリ秒単位なのかもしれません...

fiveRM4ファイルエディターを作る

ロビに関係するソフトとして「サーボテスターforロビ」というソフトを作っています(Mac版、Win版の2種類があります)。このソフトはロビのサーボのIDを変えたり、サーボを動かしたりできるソフトとして作ってきましたが、流れとしては、このままロビのコントローラーソフトとなっていければと考えています。

ロビが完成してから、性格の編集StartUp.XMLファイルの編集の機能を付けましたが、今回v1.5.0でRM4ファイルを読み込めるようにしました※まだRM4ファイルの編集&書き込みはできません)、RM4ファイルの中がどんな風になっているか簡単に見られるようになっています。

また、タイプ5〜8で出てくる外部ファイルはリストのその行をダブルクリックすれば、そのファイルを表示したり、音声ファイルなら、再生することができます。ご興味があれば、是非ご利用下さいhappy01paper

Parallels_desktopscreensnapz041

ロビの心臓部(マイコン関連)を開発したヴィストンさんのページで例えば「RobovieMaker2」というロボットのコントローラーソフトがダウンロードできます。これがロビに対応している訳でないですが、高橋さんはこれを元に作られた非売品のコントローラーソフトがあり、それを使ってRM4ファイルを作成しているんであろうと考えられます。

RobovieMaker2を使うと、以下の図のようなフローが作れます。いちおう「歩行4S.RM4」の流れをイメージして簡略化したフローを作ってみました。

  • スタート:開始
  • 演算1:v[0]に5を入れる
  • ポーズ0:歩く
  • 演算2:v[0]から1を引く
  • 比較分岐:v[0]が0より大きければポーズ0へ、そうでなければポーズ1へ
  • エンド:終了

Parallels_desktopscreensnapz043

サーボテスターforロビは、まだ読み込みしかできませんが、できれば将来的には、編集、書き込みを、図のようなグラフィカルなインターフェイスでできるように考えていますので、よろしくお願いしますhappy01paper

さて、今回も結構長めに書きましたが、増刊号を参考にいろいろやって頂けると嬉しいんですが、何が起きるかわかりませんので、十分に気をつけてやって下さいねhappy01paper

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ

| | コメント (11) | トラックバック (0)

週刊ロビ 増刊73号:ロビのココロを探る3

73

勝手に週刊「ロビ」増刊73号です。
さて、今回の「ロビのココロの中を探る」は"歩行4S.RM4"です。

"歩行4S.RM4"は、ファイル名からなんとなく分かるように「前に進んで」に対する動作が書かれているファイルになります。

今回はこのファイルの中を少し覗いてみたいと思いますhappy01paper

oneBLOCK文(ブロック)について

"<medit>"と"</medit>"の中に"<block name=..."から始まる文があります。ブロック文ではそのブロックの名称(編集アプリのアイコンの座標やリンク)などが記述されます。

twoJUMP文(ジャンプ:跳ぶ)について

プログラムを見て行くと"<jump adr="0x00001318"/>"といった書式でプログラムの跳び先を示していることが分かります。このadr(アドレス)が示しているのはファイルの先頭から何バイト目(何文字目)に跳ぶかを示しています。

ということで、ジャンプだけをたどってみて、どんな風にプログラムが進んで行っているのかをblock名の部分で、ざっと並べてみます。

  1. 最初ブロック名なし
  2. CALCULATION ~(最初の方の)
  3. POSE 6
  4. POSE 1
  5. POSE 2
  6. POSE 3
  7. POSE 4
  8. POSE 9
  9. POSE 7
  10. POSE 10
  11. POSE 8
  12. POSE 11
  13. CALCULATION ~(後の方の)
  14. IF~ (で分岐:偽ならPOSE2へ)
  15. POSE 2~
  16. POSE 1~
  17. POSE 5
  18. END
  19. RETURN

となってますね。

結構行ったり来たりしてますので、カーソルの位置までの文字数が分かるエディタを使えば調べるのが簡単かもしれませんねhappy01

あと、ジャンプ先は文字数なので、プログラムを手作業で書き換える時は、文字数が変わって正しくジャンプできなくなるといけないので注意して下さい。だいたいmedit文ごとに2行改行があるので、もしかすると2〜3文字増えても大丈夫かも?しれませんけど...ネ。

threeポーズと角度について

各サーボの角度を指定することによって、ポーズを作ります。64個までのサーボが扱えて、block名がPOSE○○となっている部分の後に、ID1から2バイトごとで64個の値が並んでいます。

これら64個の値はメモリーアドレスの0x0a00から2バイトごと書き込むということで、"<mem_w size="2" adr="0x0a00">"という書式から始まって、128個の値が並んで、その後"</mem_w>"でくくられています。

サーボの角度の値は、16進数で書かれててぱっと見分かりにくいですが、角度は0.1度単位なので、値は10倍された値になっています。つまり0x0123は10進数で291になります。これを10で割って、29.1度ということになりますpaper

2バイト:角度で、2バイト:サーボパワーの計4バイトでひとつのサーボに対するデータです。(なお65個目からLEDの情報が入っています)

fourサーボ動作速度について

サーボの動作速度(回転速度)はthreeで書いたポーズの後に記述されています。実際にはひとつひとつの回転速度を指定してたら大変なことになるので、あるポーズを取っていたところからthreeで書いたポーズにサーボの角度が到達するまでの時間を指定するだけで、サーボごとに回転しなくてはいけない角度から回転速度を逆算して動いてくれます。

書式は"<mem_w size="2" adr="0x0b00">0x0032</mem_w>"となっています。メモリーアドレスの0x0b00に書かれた値、上記の場合は0x0032が速度になります。この値は20ms単位のようです。上記の場合は0x32は10進数で50です。50x20ms=1000ms つまり1秒ということになります。

"歩行4S.RM4"のファイル内のすべての動作速度の部分の3桁目を1に例えば0x0032だったら0x0132といった感じに書き換えて歩かせてみたのを撮ってみました。ゆっくりでも意外と安定して歩いてますよsign01

-----------------------

-----------------------

fiveWAIT文(ウエイト:待つ)について

この命令はサーボの動作等が終わるまで待つという命令になるかと思います。WAIT文の書式は"<wait size="1" adr="0x0b43"/>"になります。

先ほども書きましたが、あるポーズからあるポーズへ動く時、個々のサーボの動かなくては行けない角度はまちまちです。多く動かなくてはいけないサーボもあれば、少しでいいサーボもあります。

多く動かなくてはいけないサーボの中には、サーボの最大回転速度を超えていて、指定した時間内に目的の角度に到達できないサーボも出てくるかもしれません。動作途中で次の動作をしてしまえば、例えばまだ足が床についていないのに、反対側の床に着いている足を上げる動作を始めてしまうかもしれません。

WAIT文はこういった場合に役に立つので基本的にはポーズごとに書いておくと良いかと思いますが、動作が到達してないのに次の動作をさせる。つまり、次々と次の動作を起こさせることで、切れのいいモーションを作ることが可能になったりします。そして、さらに本来の目的の到達点より少し大きくポーズを作っておき、設定した到達点でなく、目的の到達点で次の動作をさせるといった高度な設定をすれば、もっとキレキレのモーションを作れたりします。まぁ上級過ぎて私には到底できませんけどcoldsweats01

fiveCALC文(カルク:計算)について

"<calc>"の前のcalcのblock文に関しては後日ということで、"<calc>"の中に関して、"歩行4S.RM4"では、3回出てきますが、使われている計算は、代入引き算比較の3種類になります。

まず最初のcalcについて

  • <const data="1"/>
  • <mem_w size="2" adr="0x0f00"/>

は、を変数用のメモリーアドレス0x0f00に書き込むということを意味しています。

また、2つ目のcalcについて

  • <mem_r size="2" adr="0x0f00"/>
  • <const data="1"/>
  • <sub/>
  • <mem_w size="2" adr="0x0f00"/>

変数用のメモリーアドレス0x0f00から値を読み込み、その値から1を引いて(subtraction)、また0x0f00に書き込むということを意味しています。

最後に3つ目のcalcは

  • <mem_r size="2" adr="0x0f00"/>
  • <const data="0"/>
  • <sub/>
  • <eq/>
  • <jump adr="0x000032bb"/>

となってます。0x0f00の値を読み込み、その値から0を引いて??、その値が0と同じ(equal)なら0x32bbにジャンプするという意味になるかと思います。

ということで、最初のcalcで歩数を書き込んで、ループごとに2つ目のcalcで1ずつ引いて、3つ目のcalcで0ならループを抜けるといった感じになっています。

ポーズは右脚、左脚の2歩分のループになっているので、従って、最初のcalcの<const data="1"/>を<const data="5"/>とすれば10歩あるくことになりますねpaper

sixその他

ファイルのコードですが、

  • 改行コード:CR+LF
  • 文字コード:ShiftJIS

です。ま、改行コードはいいんですが、文字コードはねぇ〜、もぉいい加減S-JISから卒業してほしいですと思います。 Unicode対応できない文字とか使ってたりするし困る

さて、今回は結構長めに書きましたが、アレンジできるようなところがあれば(自己責任でということで)あれこれやってみて下さいhappy01paper

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ

| | コメント (9) | トラックバック (0)

より以前の記事一覧