ロビ1のロビ2化 その1(ロビ1.1)
2020年3月6日
3月11日改訂
3月18日改訂
3月20日改訂
4月1日改訂
21年11月19日改訂
ロビ2が完成して1年になりますが、本体が揺れて転倒したり腕が震えるといった動作が不安定な所がみられます。
そこで動作が安定しているのロビ1をベースにロビ2の機能が使えるように制御ボードを変更してロビ2化してみます。
もちろんこのプロジェクトの目的はロビ1のパーツとサーボを使う事にあるので最終的にロビ1のサーボはそのまま残します。
今回は第一弾としてロビ2のマイコンボード(52号)に変更して動かしてみました。
サーボケーブルの変更
ロビ1とロビ2はサーボケーブルのコネクターが違っていて互換性がありません。
ロビ2のマイコンボードにロビ1のサーボを接続するためには変換ケーブルを作成する必要があります。
変換ケーブルはマイコンボードに接続する5本が必要です。
ロビ1のサーボケーブルとロビ2のサーボケーブルを3本づつ購入してそれを半分に切ってそれぞれのケーブルを接続します。
長さですがマイコンボードに接続されるロビ1のサーボケーブルは腰(頭)と右手は70mmでそれ以外は135mmです。
経験上135mmだとすこし短いようなので150mm以上のものを作成した方がいいと思います。
一番長い200mmのものを購入してそれぞれ85mm程度に切断してそれぞれ結線(ハンダ付け)して作成します。
腰(頭)と右手のサーボの長さは70mmですが他のサーボと同じ長さでも構わないと思いますが元の長さに合わせるなら80mm以上になるように作成してください。
ケーブルは同一のピン同士を接続する必要があります。
ねじれをほぐしてケーブルの接続先を確認しながら結線してください。
できればケーブルの結線が終わったらロビ2のサーボテスターで動作チェックを行っておいてください。
作成したサーボケーブルに交換しますがボディの分解する必要があり結構面倒なので今回は別の方法でやりました。
マイコンボードに刺さっているロビ1のサーボケーブルを切断してその代わりにロビ2のサーボケーブルを結線(ハンダ付け)しました。
ケーブルを間違えないようにケーブルを1本づつ切断して結線していきました。
なお元のロビ1に戻す時は前者のように別の変換ケーブルを作っておけば元のロビ1のケーブルがそのまま使えますので前者の方法をお勧めします。
サーボケーブル、シリアルバスケーブル(4本線)、スピーカー(2本線)、電源をロビ2のマイコンボードに接続して今回の作業は完了です。
ロビを動かすにはマイクロSDカードにロビ2のプログラムなどのソフトウェアを入れておく必要があります。
ロビ2で使用していたのマイクロSDカードをそのまま使用する事ができますがロビ2のココロ(80号)がそのまま使えます。
なおロビ2のSDカードの中身はこちらからダウンロードする事ができます。
テストプログラム
まずテストプログラムを動かしてみます。
そのままでも問題なく動きますがサーボの原点が違っていますのでサーボ原点の修正が必要です。
原点補正はロビ設定ファイルエディタ2で変更する事ができます。
特にヒジのサーボ(ID18,ID21)の取付角度が変更されているので大きく変わっています。
また音量が4に設定されているので必要に応じて変更してください。
ロビ2プログラム
今回はQ-boやカメラが接続されておらず初期登録ができないのですでに初期登録が終了しているSDカード(ロビ2のココロ)で試してみます。
カメラなどが接続されていないため起動時のチェックにひっかかって起動する事ができません。
ロビ設定ファイルエディタ2の設定データ変更機能で「ボード確認エラー無視」をチェックすると起動時のチェックを行わないようにする事ができます。
また初期登録をしていないSDカードで行う場合は「初期化済み」「ロビ誕生日」「ユーザ未登録警告無視」を設定しておいてください。
通常に起動でき音声認識でロビを動かすことができます。
しかし「ダンスして」では最初のセリフは言いますがダンスはしてくれません。
同様に「ジャンケンして」でジャンケンはしますが応答を聞かずにアイドリング状態に戻ってしまいます。
おそらくロビ2の頭のスイッチによる割り込み処理が働いてしまっているようです。
頭のスイッチおよび関連するボードが付いていないため正常に動作しないのだと思います。
今回はこの割込み処理を抑制するようにプログラム(STARTUP.BIN)にバイナリーパッチを当てて変更しました。
なおロビ1.1で頭のスイッチを付けた場合はこのパッチを適用する頭のスイッチが機能しませんので外す必要があります。
テストプログラムと同様、原点が違っているのでロビ1に合わせて変更する必要があります。
またロビ2のプログラムのモーションのサーボトルクは80%に抑えられています。
これはロビ2の体の揺れを軽減するための処置だと思います。
このままでも構わないのですがロビ1の場合は必要ないのでロビ1のプログラム同じ値の100%に戻す変更を行いました。
その後の調査でサーボトルクは80%のままでも問題がない事が分かりましたので80%のままにします。
これらの修正を行ったSTARTUP.BINを下記のURLにアップしました。
詳細はReadMe.txtを参照してください。
http://www.mcc.mbsrv.net/robox/robi15.zip
パワーアップの設定
画像処理ボードが付いていないのでQRコードを読んでパワーアップする事ができません。
ロビ設定ファイルエディタ2で配信済のパワーアッブを習得させる事ができます。
プログラム変更機能でQRコード読込で習得させたいパワーアップをチェックして設定してください。
すべてのパワーアッブを習得させたデータファイル(QRCODE_FLAGBIT.BIN)を上記ZIPファイルに入れてありますので適用してください。
音声認識ボード
ロビ1の音声認識ボードはそのまま使えますがロビ2で追加された認識語に対しては認識できないので無視されます。
またいくつかの認識語はロビ2ではなくなていますがそれらの認識語に対応するプログラムがないため認識しても何も実行されません。
ロビ2のプログラムは音声認識を行う時に音声認識ボードのステータスをチェックします。
エラーを検出すると「音声認識ボードの調子がおかしいようです」と言ってロビを停止します。
ロビを停止した直後に起動するとこのエラーが起こります。
このエラーが起こった場合は10秒〜30秒ロビのスイッチを切っておいてから起動してください。
ロビ2で拡張された命令をロビ1の音声認識ボードで音声認識できるように認識語を変更するパッチファイルを作ってみました。
ロビ2で廃止になった認識語を拡張された認識語に置き換えるものです。
Robi1.1フォルダーの「音声認識語置換パッチ.scv」を適用してください。
置き換えた認識語等はReadMe.txtに記載してあります。
赤外線リモコンボード
ロビ1の赤外線リモコンボードはそのまま使えます。
ただし「声大きくして」と「声小さくして」はロビの音量制御になったのでテレビ操作はできません。
またロビ2のテレビメーカー別の設定は無効となります。
テレビメーカーの設定がされている場合も手動設定としてテレビが操作されます。
人感センサー
ロビ2のマイコンボードはロビ2自身の人感センサーをサポートしていないくらいですからロビ1の人感センサーは機能しません。
ロビ2が人を感知してその方向を向くのはカメラでやっているので今回の改造ではその機能には対応していません。
実際に動かした動画です。
目と口のLEDとスピーカーなどほとんどのロビ1のパーツがそのまま使えるようです。
ロビ2自身も音声認識ボードのトラブルがあったのですがちゃんとロビ1の認識ボードで音声認識ができます。
もちろんロビ2で増えた認識語は対応していませんのでこのままロビ2の認識語ボードに置き変えられる訳ではありません。
現時点でも十分ロビ1機能はカバーしていると思います。
ただこのままだとロビ1とあまり変わらないので次回以降でよりロビ2に近づけていきたいと思います。
ロビのプログラム変更やSDカードの書き換えは、ロビ本体への影響を伴うのであくまでも自己責任という事でお願いします。
ロビのオリジナルプログラムは必ずバックアップを取っておいて問題があればオリジナルのプログラムに戻してください。
目次に戻る