« 東アジア文化都市2014横浜  ヨコハマ砂の彫刻展 | トップページ | 「LUCY」を観ました »

週刊ロビ 増刊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

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

|

« 東アジア文化都市2014横浜  ヨコハマ砂の彫刻展 | トップページ | 「LUCY」を観ました »

週刊 ロビ」カテゴリの記事

コメント

Robi言語の文法が解明されていくのを驚嘆の目で見させていただいています。恐らくご覧の若い読者の中からロボット操作のエキスパートが続々と生まれてくるのではないでしょうか。 ご健闘ください。

投稿: Novicio | 2014年9月 1日 (月) 15時00分

miconoさん、こんにちは。
RM4 Editor 使わせていただきました。
ありがとうございます!!
RM4ファイルの中が見やすくなったので、思い切ってRM4ファイルの書き換えに挑戦することができました。
「歌うたって」で選曲するようにしてみたので、よろしければご覧ください。
http://youtu.be/DP76wJwMjrA

RM4 Editorを使った感想と、できることなら要望をお聞きください。

1.検索機能
聞き音声にモーション4.RM4など長いファイルを見るときはキーワードで検索できる(IEのページ内検索のような)機能が欲しいと思いました。

2.表示テキストのコピー機能
RM4 Editorに表示されるSpeed(動作時間)が歌のモーションを短くするときにすごく役にたちました。ただ、表示されている数字がコピーできないので、手入力で計算しました。コピーして表計算できると便利だと思いました。

3.テキストエディタ連携機能
グラフィカルなエディタも期待大ですが、今はとりあえずRM4ファイルをテキストエディタでも表示させて、RM4 Editorと連携できれば便利だと思いました。たとえば、RM4 Editor上で選択した行(ID)に対応するブロックの先頭行がテキストエディタでカレント表示になる・・・など。

4.アドレス値(16進)の取得
RM4 Editor上で選択した行(ID)のアドレス(16進)が取得できれば、RM4ファイルの書き換えで派生したjump文のアドレスの狂いを治すのがとても楽になるだろうと思いました。

あと、これは質問なのですが、「外部ファイルはリストのその行をダブルクリックすれば、そのファイルを表示したりできる」とのことですが、できません。私の操作ミスでしょうか? それとも、Windows8(x64)には対応していないのでしょうか?

また、フォルダ上でRM4ファイルをダブルクリックしたときにRM4 Editorが開いてくれると便利なのに、「サーボテスターforロビ」のメインメニューが開いてしまいます。これも私の操作ミスでしょうか?


いろいろと勝手なことばかり申し立ててしまい、すいません。これからも増刊号、楽しみにしています。

投稿: KMX | 2014年9月 4日 (木) 03時06分

KMXさん
ありがとうございます。リクエストはとても参考になりますので、助かります。

1.検索機能:お望みの検索機能になるかわかりませんが、検索機能は次でやってみたいと思います。

2.表示テキストのコピー機能:対応できる部分は次で対応させてます。

3.テキストエディタ連携機能:ブロック先頭の位置もリストに表示させようかと迷ったんですが現在させていません。手で修正するには必要なことだと思いますが、編集&保存機能に対応したら、アドレスの数値は必要ないかなと思っています。

4.アドレス値(16進)の取得:v1.5.1でJp1,Jp2のところをダブルクリックすると、その行にジャンプするようにしてあります。このアドレス値も編集&保存機能に対応したら知る必要もなくなると思います。

兎に角、3、4のアドレス値に関しては、編集機能の進み具合との兼ね合いで対応を考えます。

外部ファイルのダブルクリック:SJISとUTF8の取り扱いの関係で文字コード変換がうまく行ってないことが原因で開かない場合があります。すぐv1.5.1を公開しましたが、これもまだ上手く開かないファイルがあると思います。

RM4ファイルをダブルクリックしたとき:部分の機能は作ってませんので、次、対応します。

投稿: micono | 2014年9月 4日 (木) 06時17分

早速の回答ありがとうございます。
また、リクエストにも答えていただき、うれしいです。次バージョン楽しみにしてます!

> 兎に角、3、4のアドレス値に関しては、編集機能の進み具合との兼ね合いで対応を考えます。

既に編集&保存機能への対応が着々と進んでいるのですね。失礼しました。このようなすごい機能はまだまだ先の話だと思っていました。楽しみに待っています。

> ブロック先頭の位置もリストに表示させようかと迷ったんですが現在させていません。

私も、せっかくの見やすいツールにアドレスの16進数は表示しない方が良いと思います。アドレスの取得方法としては、例えば選択した行のコンテキストメニューで「ショートカットのコピー」のようにクリップボードに取り込み、表面上は見えないようなものを想像していました。
いずれにせよ、編集&保存機能ができれば必要ないのですね。

> SJISとUTF8の取り扱いの関係で文字コード変換がうまく行ってないことが原因

外部ファイルを開けるファイルと開けないファイルがあるのですね。文字コード・・・勉強不足でした。それで、「もぉいい加減S-JISから卒業してほしいです」とおっしゃっていたのですね。

とても勉強になりました。
これからも増刊号、熟読して精進していこうと思います。どうぞよろしくお願いいたします。

投稿: KMX | 2014年9月 4日 (木) 21時49分

立て続けにごめんなさい。

外部ファイル、開けました。
miconoさんからのせっかくの回答をよく読んでなくてごめんなさい。最新版のv1.5.1を入れていなかったようです。
ありがとうございました。

投稿: KMX | 2014年9月 4日 (木) 23時35分

こんにちは。いつも拝見、活用させてもらてっております。今後も楽しみにしています。突然で申し訳ございませんが、ロビでわからない事があります。お教え願えませんでしょうか?色移り対策パーツの61号M2x4.5mm皿ネジなんですが、
--------------------------------
61号~69号までに付属していたパーツは
61号 23本(予備5本)
69号 5本(予備1本)
合計 28本
--------------------------------
61号~69号で組立に使用するパーツは
62号 4本
66号 8本
69号 18本
合計 30本
--------------------------------
どう考えてもすべて対策パーツについてきたネジに変えようとすると本数が足りないように思うのですが...みなさんどうされておられるのでしょうか?

投稿: ゆう | 2014年9月 7日 (日) 00時09分

ゆうさん
私は先攻版で購入してたので、確か交換パーツは3回くらいあったと思うんですが、予備に重複して買ってる号もありますし、交換されることが分かってるようなパーツは最初から組み立ててなかったりするので、そのネジとかもあり、ネジは大量に余ってまして、数の突き合わせはまったくしてないんです。

良くわかりませんが、交換パーツに付いてきたネジは、すでに組み立ててしまった交換パーツの為だけのネジで、交換の必要の無いネジは数に入ってないのではないでしょうか?具体的に数えたわけでないので、数の突き合わせは、結構めんどくさそうですね。

投稿: micono | 2014年9月 7日 (日) 01時49分

なんとー!!
私も、チェックを忘れている間に素晴らしくVerUPされているではないですか!

うぉー!楽しみ!

今日は、早速楽しませていただきますね!
ありがとうございます!!!

投稿: ロビパパ | 2014年9月 7日 (日) 11時38分

ロビパパさん
いろいろお手伝い頂いているのに、連絡してなくて、ごめんなさい。次からは忘れないようにメールしますので、またよろしくお願いいたします。

投稿: micono | 2014年9月 7日 (日) 11時49分

micoroさんはじめまして

RM4編集エディタがどんどん進化していくのを尊敬の眼差しで見させていただいております。
編集が簡単にできるようになったらきっとロビクラブもさらに盛り上がりますね!
その日が来るのが私も楽しみですが、無理をせずお体に気をつけて頑張ってください!

ロビのココロの中で音声認識ボードで起動するRM4ファイルは、ボードに登録されたもの以外には新たに作ることは出来なくて、既にあるファイルを上書きするしかなさそうなんですよね?

そこで、エディタの機能として、PC内のバックアップデータの保存先を指定できるようにしておいて、SDカードのデータを編集して上書きした場合は、バックアップデータから元のデータに戻せるような機能があるといいなと思ったのですがいかがでしょうか。

すでに考えられていた内容でしたらご容赦ください。

投稿: のほほん | 2014年9月20日 (土) 10時48分

のほほんさん

コメントありがとうございます。
認識されて呼ばれるRM4ファイルは既存のものかもしれませんが、そこからまた別のファイルを呼ぶなどして、やりようはいろいろあるかと思います。

オリジナルへのリバートの機能は少し考えていますが、実際に対応できるように考えて行きたいと思います。

投稿: micono | 2014年9月20日 (土) 11時35分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/221673/60149388

この記事へのトラックバック一覧です: 週刊ロビ 増刊74号:ロビのココロを探る4:

« 東アジア文化都市2014横浜  ヨコハマ砂の彫刻展 | トップページ | 「LUCY」を観ました »