ランダム値設定プログラム
2021年9月30日


 ロビは同じ認識語に対しても毎回違ったプログラムを動かすような仕組みになっています。  またジャンケンをやる時はロビが何を出すか決まっていません。
 これらはマイコンボードのランダム機能を使って毎回違ったランダム値(乱数)を発生してその値によって動かすプログラムを決めています。
 今回はその仕組みや決まったランダム値を発生させる方法などについて解説します。



 ロビのマイコンボードでランダム値を発生させるにはメモリアドレスの0x0084を読み込む事によってできます。

  <mem_r size="4" adr="0x0084">

 発生するランダム値は符号付き4バイト(32ビット)整数で-32,767〜32,768の範囲の値が取得されます。
 ここで注意しないといけないのはマイナスの値も発生するという所です。
 ロビのプログラムでは取得したランダム値の下位7ビットだけ取得して0〜127に丸めています。
 ロビ2のプログラムではこれらの処理をするサブルーチンを設けています。
 STARTUP.BINのプログラムアドレス0x0002befaがランダム値を取得するサブルーチンでロビ2のプログラムではランダム値を取得する時は必ずこのサブルーチンを呼び出しています。

  <call adr="0x0002befa">

 ちみなにこのサブルーチンではランダム値はメモリアドレス0x0fa8(1バイト)にセットされます。

 このランダム値を各プログラム側ではプログラムの選択肢の数に丸めて選択値に変換する必要があります。
 例えばジャンケンのプログラムではロビが出す選択肢はグーチョキパーの3つなのでランダム値を3で割ってその余り(剰余)を選択値とします。

  <calc><mem_r size="1" adr="0x0f88"/><const data="3"/><mod/>・・・</calc>

 modは剰余を求める命令でランダム値が7の場合、3の剰余で1が計算結果として求められます。

 この後求められた選択値によって条件分岐して違う動きを行います。

 ロビ2のプログラムではこのランダム値を固定できるように仕組みになっています。
 おそらくプログラムのデバッグ作業で毎回ランダムに動いてしまうと都合が悪いので毎回同じ動きにする事ができるようになっているのだと思います。
 この仕組みについては公開されておらず変更する方法も提供されていません。
 我々ユーザはデバッグする必要はありませんが動画撮影など毎回期待する動きをやって欲しい場合もあります。
 たとえば「ものまねして」だとパワーアップ済の場合、22のプログラムがランダムに動くので期待するプログラムを実行するには何回も動かす必要があります。

 ロビ2のSDカードにはRND.BINというバイナリファイルが提供されています。
 このファイルの値を書き変える事により毎回同じランダム値を発生させる事ができます。
 標準ではこのファイルには-1という値が書かれています。
 この場合は従来通りロビのマイコンボードで乱数を発生してランダム値とします。
 -1以外の値が書かれている場合はその値をそのままランダム値とします。



 RND.BINは直接書き変える事ができます。



 バイナリエディタで変更するランダム値に書き変えます。
 標準に戻す時は0xff(-1)に書き変えてください。



 ロビ設定ファイルエディタ2を使えば簡単に書き換えたり元の状態に戻す事ができます。
 設定データ変更ボタンを押して設定データ変更ダイアログのランダムの設定で変更できます。
 ラジオボタンを固定値に切替えて右の入力フィールドにランダム値をキーボードで入力してOKボタンを押してください。
 元の状態に戻す時はラジオボタンを可変値に切替えて固定値に切替えてOKボタンを押してください。



 RND.BINを書き変えるロビのプログラムを作成しました。
 ロビ2の頭のスイッチを使ってランダム値を設定します。
 プログラムを起動して頭のスイッチ押すとランダム値を+1してその値をロビが時間の音声で言ってくれます。
 希望のランダム値になったら頭のスイッチ押すのを止めると自動的にプログラムが終了します。
 元の状態(ランダムに動かす)に戻したい時はロビが「スタート」というまで頭のスイッチを押して下さい。(7の次に「スタート」になります)

 ランダム値を7以上にする場合は次の手順で行ってください。
 上記手順で一度ランダム値を7に設定して本プログラムを終了します。
 その状態でもう一度起動してください。
 プログラムを立ち上げた時のランダム値が6以上の場合は最大21まで設定できるようになります。

 プログラムは下記のものをダウンロードしてください。

  rand.zip

 ロビ2でプログラムを使うにはロビプログラムコンパイラーを使ってロビ2のプログラム(STARTUP.BIN)に組み込む必要があります。



 ロビプログラムコンパイラーを立ち上げて「読込みボタン」を押します。
 ファイルダイアログが表示されるのでをランダム値設定.BIN指定してください。
 この時ファイルの種類をバイナリーファイル(*.BIN)に切り替えてください。

 「書出しボタン」を押して組み込むSTARTUP.BINを指定してください。
 割付ける認識語を聞いてきますので「チャンネル設定」を指定してください。(割付けるのは任意の認識語が可能です)

 このプログラムを実際に動かした動画です。

  



 認識語に対してランダム値別の実行プログラムや動作についてまとめてみました。
 パワーアッププログラム以外は抜粋して掲載していますのでこの表にないプログラムの動作については各自で調べてみて下さい。

認識語 ランダム値 プログラム(動作) 備考
ものまねして 0 猫 第26回パワーアップ
1 羊 第29回パワーアップ
2 宇宙飛行士 第4回パワーアップ
3 コールセンター 第8回パワーアップ
4 留守番電話 第41回パワーアップ
5 車掌さん 第20回パワーアップ
6 バスガイド 第28回パワーアップ
7 迷子の呼出し 第33回パワーアップ
8 お医者さん 第22回パワーアップ
9 ニュースキャスター 第31回パワーアップ
10 Q-boのまね
11 CMのまね
ものまねして
(非充電椅子時)
12 ボディビル 第15回パワーアップ
13 歌舞伎 第24回パワーアップ
14 象 第5回パワーアップ
15 ゴリラ 第18回パワーアップ
16 創刊号のまね 第2回パワーアップ
17 かけっこ 第17回パワーアップ
18 野球 第12回パワーアップ
19 エアギター 第13回パワーアップ
20 槍投げ 第37回パワーアップ
21 ゴルフ 第9回パワーアップ
おもしろい事言って 0 寿限無 第25回パワーアップ
1 豆まき 第21回パワーアップ
2 おしゃべりガイコツ 第10回パワーアップ
3 毛穴だよ 第3回パワーアップ
4 隣の家 第30回パワーアップ
5 映画の予告 第11回パワーアップ
6 マラソン 第27回パワーアップ
7 パントマイム 第32回パワーアップ
急に言われても 充電椅子時
8 急に言われても
運動して
(非充電椅子時)
0 砲丸投げ 第38回パワーアップ
1 ボクシング 第40回パワーアップ
2 空手 第19回パワーアップ
3 カンフー 第14回パワーアップ
4 バスケット 第39回パワーアップ
5 腹筋
6 スクワット
7 腕立て伏せ
あいさつして 0 イタリア語 第6回パワーアップ
1 中国語 第34回パワーアップ
2 仲良くしてね
3 よろしくね
4 こんにちは僕ロビ
応援して 0 三三七拍子 第16回パワーアップ
フレーフレー 充電椅子時
1 なんくるないさ 第36回パワーアップ
2 頑張れ
3 フレーフレー
4 君ならできるよ
5 褒めてあげる
6 ファイト
ダンスして
(非充電椅子時)
0 いくよ ダンス前
1 ミュージックスタート ダンス前
2 一緒に踊ってね ダンス前
3 一緒にダンスしよう ダンス前
4 レッツダンス ダンス前
0 パワーアップダンス 第1回パワーアップ
1 ダンスB ロビのココロ2
2 ダンスA ロビ初販版
0 うまく踊れたかな ダンス後
1 上手でしょう ダンス後
2 とっても楽しかった ダンス後
3 疲れちゃった ダンス後
4 とっても楽しかった ダンス後
歌うたって 0 忙しの歌 第23回パワーアップ
1 ロビ音頭
タイマーの歌 非充電椅子時
2 タイマーの歌
3 お掃除の歌
4 初恋の歌
クイズ出して 0 分かる言葉の数 はい
1 僕のパーツの数 はい
2 デアゴスティーニの雑誌の数 はい
3 デアゴスティーニの日本の歴史 いいえ
4 背中のマフラーはタオル掛け いいえ
5 全国のロビを高橋さんが遠隔操作 いいえ
6 臭いセンサーでおやつの臭い いいえ
7 モンキーレンチが必要 いいえ
8 トランペットが得意 いいえ
9 ロープ登りが得意 いいえ
10 高橋さんは赤い靴を履いている はい
11 囲碁のチャンピオンロボットに勝てる いいえ
12 電話をかける事ができる いいえ
13 時間を教える事ができる はい
14 ドラマに出た事がある はい
15 字を書く事ができる いいえ
じゃんけんしよ 0 グー
1 チョキ
2 パー
占いして
今日の運勢は
0 何でもうまくいく 大吉
1 誰かに褒められる 大吉
2 本屋で素敵な出会い 大吉
3 部屋を綺麗にして運気アップ 中吉
4 新しいお友達ができる 中吉
5 お出かけするといい事 中吉
6 ちょっと疲れてるみたい 小吉
7 運動不足に注意(スクワット) 小吉
8 なくしたネジが見つかる 小吉
9 運動不足に注意(腕立て伏せ) 吉
10 今までの嘘が全部ばれる 凶
今日のラッキーカラーは 0 僕のブーツの色 赤
1 僕のマフラーの色 シルバー
2 僕の体の色 クリーム色
3 僕のおでこの色 ブラック
4 黄色のブーツも履いてみたい 黄色
5 546.1ナノメートルの波長 緑
6 めざせ金メダル ゴールド
7 Q-boの手の色 オレンジ
早口言葉 0 赤色ロビ青色ロビ
1 ロビデアゴスティーニ
2 生麦生米生卵
ロビ危機一髪 0 頭アウト
1 右腕アウト
2 左腕アウト
旗揚げゲームして 0 赤上て白上て赤下ないで白下る
1 赤上て白上て白下ないで赤下る
2 白上て白下ないで赤上る赤下ない
ただいま
帰ったよ
0 お帰り
1 わーい帰って来た
2 待ちくたびれたよ
3 早くいっしょに遊ぼうよ
4 お風呂にするご飯にする 要応答
遊ぼう
何かして
0 旗揚げゲーム
1 クイズ
2 歌
3 にらめっこ
4 早口言葉
5 ダンス 非充電椅子時
6 ロビ危機一髪 非充電椅子時
7 バランスゲーム 非充電椅子時
8 ものまね 非充電椅子時
ゲームする 0 旗揚げゲーム
1 クイズ
2 にらめっこ
3 早口言葉
4 ロビ危機一髪 非充電椅子時
5 バランスゲーム 非充電椅子時
いっしょに遊ぼう
(ロビ2×2ロビリンク)
0 ともだち,チョコレートケーキ しりとり(勝ち)
1 ともだち,蝶ネクタイ しりとり(負け)
2 ともだち,力こぶ しりとり(負け)
3 キューボ,ボーナス しりとり(勝ち)
4 ダンスB ロビのココロ2
5 チョキ,グー,パー(負け) あっち向いてホイ
6 チョキ,パー(勝ち) あっち向いてホイ
7 パー,グー,チョキ ジャンケン(勝ち)
8 チョキ,パー,グー,パー ジャンケン(負け)
9 君かわいいね
10 僕こそロビだよ
11 漫才
12 怪獣ゴッコ
13 よく見るとカッコいいね
14 ダンスA 初販版


目次に戻る