Tag Archive for roboBASIC

roboBASIC v2.72 (roboMakerが追加されました)

(夕べは渋谷のクラブでオールでした。そのことは後ほどアップします。)
 
主要サイトは、「はてなのアンテナ」でサイトの更新チェック(余談ですが1時間周期で確認できて便利ですよ)を行ってます。そんなサイトの1つですが、久々にroboBASICが更新されましたね。(公式サイト:http://www.robobasic.com/
このことは、夢現工房さんのブログにも書かれていて、機能についてはそちらの方が詳しいと思いますので、内容についてはそちらをご覧になって頂きたいと思いますが、私は、夢現工房さんのブログに書かれていないことについて書いておこうと思います。
従来のroboBASICとの互換性も確認できていませんし、それほど安定しているとは思いませんので(ファームウェアの更新で失敗します)、早まらないほうがいいと思います。更新は、自己責任で行って下さい。
私は、MT-2ユーザで、サーボの割り当てがROBOZAKとは違うため、今回リリースされたroboMakerはコントローラをだまさなくていいので(これも以前の夢現工房さんのブログ
に書かれています)価値があるなーと思いました。首のサーボやグリッパーも拡張できそうです。
  
■roboBASIC v2.72のインストーラー関連:2008/5/9バージョンですね。
39
 
■roboBASIC v2.6の削除 さようなら〜 v2.6
35
 
■roboBASIC v2.72インストール
37
 
■プログラムは4つです。 roboMaker が新しく追加になった機能です。
            (どこかで聞いたことのある名前ですね)
40
 
■夢現工房さんのブログにもありましたが「ROKI」という謎のコントローラが・・・
41
 
■ファームウェア更新関連の情報だと思うのですが、前から無茶苦茶です。(化け化けでHTML/CSSが見えちゃってます。)
46
 
■ファームウェアの更新
43
 
■一応できそうな雰囲気ですが・・・
44
 
■見事にコケます。この後は何をやってもダメになっちゃったので、MR-C3024の電源を切って復旧させました。
45
 
■変則的ですが、roboBASIC v2.72/コントローラはv2.6で動かしてます。
 問題はなさそうですが、本当に大丈夫かはわかりません。
42
 
■roboMaker
 この機能の詳細は夢現工房さんのブログを参考にされた方がいいと思います。
48
 
■ヴイストンさんの「Robovie Maker」と名前も機能も似てますね(笑)
49
 
■RobovieMakerはもう少し機能が高度でモーションも記述できます。
 どっちがいいかというのは一概に言えないですが、私はソースいじりたい派
 なので、GUIベースのもの(全てGUIのもの)は正直嫌いです。
47
 
仕事をしなきゃならないのでこの件については今日はこの辺で・・・。

HSR-8498HBをシリアル制御で・・・HMIサーボプログラマーキット

昨日、夢現工房さんのブログに「HMIサーボプログラマーキット」(過去記事1過去記事2に機能の一覧やケーブルの外観を載せてあります)の販売の記事がアップされていました。ここでの新たな情報は”ROBOZAK版のHSR-8498HBに限りサポートしている。”というものです。
 実は前から疑問に思っていたのですが、ハイテック社の「HMIサーボプログラマーキット」の注意書きには”※現在発売中のHSR-8498HBには対応しておりませんが、今後対応する予定です。なお、リリースの時期につきましては、未定となっておりますので、併せてご了承ください。”とあり、一方、hitecrobotics.comのダウンロードサイトには早くから(何と!1年前から)日本語マニュアルがアップされていて、ここにはHSR-8498HBも記述されています。 同じハイテック社の情報ですが、果たしてどっちが本当なんだろう?・・・と。 ようやく謎が解けました。 

「HMIサーボプログラマーキット」によって何ができるか?ですが、PWMで制御する場合は、カタログやマニュアルを見る限り、ほとんどroboBASICで設定できるような内容だと思います。 一方、夢現工房さんのブログにあるように、シリアル制御が可能になるようですので、マニュアル情報しかないのであやふやですが、Servo IDを設定することによりサーボの識別を行い、HMIプロトコルに則ったコマンドでサーボの制御ができるようになるんだと思います。 デイジーチェーンで接続できるハズなので配線が随分楽になりますね。(推定ですが)MR-C3024は、シリアル制御はできないように思うので、新しくマイコンボードを作る場合には有効かも知れません。 最近、近藤科学から、シリアルのロボットコントローラKCB-1が出ましたが、(ICSとの互換性はないと思うので)ライブラリの差し替えでKCB-1が使えるかも知れませんね。 (まぁ新しくライブラリを作るなら、わざわざM16C/TinyのKCB-1を使う必要もないかも知れませんが(笑))

■HSR-8498HBシリアルインタフェース仕様
 http://robosavvy.com/site/Builders/i-Bot/HSR8498_serial.pdf
 19200bps/None/8/Stop2で通信するようです。ケーブルはプログラマーキットには
 当然付いていると思いますが、上記ダウンロードサイトのマニュアルにも載ってます。

ロボットコントローラー(KCB-1 シリアルUSBアダプター付)

12,600 円  ツクモ ロボット王国
 
※余談ですが、今回「HMIサーボプログラマーキット」を購入するのに、クレジットカードよりちょっと安心な感じのするモバイルSuicaを使ってみました。先払いですが、カードで事前にチャージしているので、実際にはクレジットカード払いと変わりません。

ROBOZAK/ROBONOVA-I(roboBASIC)でアナログ出力ジャイロを使ういくつかの方法

このブログにも何度も書いている内容ですが、ROBOZAK(roboBASIC)で使えるジャイロについてきちんとまとめたことがなかったので書いておこうと思います。(これから書く内容は、外部情報からの推定で、きちんと調べたものではありませんのでご注意下さい。正直専門外で、ど素人なので案外ウソばっかしかも(笑))
そんな状況であえて書くのは、この辺について、もしよくご存知の方がいれば何か情報が得られるかもーという期待からです。
 
● 現在使用できるジャイロについて
現在roboBASICで使用できるジャイロは、元々ラジコン(ラジコンは商標なのでRCと書いた方がいいかも)のヘリ等の姿勢制御に使うジャイロで受信機とサーボの間に挟む形のジャイロです。そのことから推定されるMR-C3024の動作は、下図の上段のようにPWM(Pulse Width Modulation:パルス幅変調)を入力しジャイロの位置変化によるPWMの変化をMR-C3024で読み取っているものと思います。あとでロジックアナライザを使って調べてみようと思ってますが恐らく入力は一定で出力のみ変化しているものと思います。もしそうであれば必ずしも入力のPWMは必須ではない様に思います。(MR-C3024の場合、いろいろセンサー類を付けていくとポートの増設をroboBASICがサポートしていないため深刻なポート不足になりますね。)
12
GWS PG-03 ハイテック Hitec HG-R01 近藤科学 kondo KRG-1 双葉 futaba G190  Micro Piezo Gyro
 
● アナログ出力のジャイロを使うには・・・
上記の通りだとするとジャイロのアナログ出力をPWMに変換してあげるだけです。(事前に上記のPWM出力がどの様に変化するのか調べておく必要ありです。)PWMの発生はそもそもMR-C3024で使われているATmega128ではサーボのコントロール等で行ってますし、同じAVRファミリーやPIC等マイコンでは標準的な機能です。またADポートについても分解能(余談ですがroboBASICで扱えるのは8ビットですが、ATmega128の本来の分解能は10ビットです。Byte型にしたかったんでしょうね。)の違いこそあれ、大抵のマイコンには内蔵されているのでこれも難しいことではありません。あとは1つ前の記事に書いたような3.3Vくらいの出力のジャイロを使う場合、OPアンプなどで出力の調整を行わなければならないかも知れません。(もしかすると10ビットの分解能があるので理論上は675まで検知でき、サーボのコントロールは1バイトで足りるので、レベル変換はいらないかも知れませんが。)
13
アナログ出力:村田製作所製のジャイロ(ENC-03R)など
 
● もっとチカラ技
上記方法の場合、アナログ/PWM変換の回路を作るのに恐らく数百円でできるのでコスト的な問題はありませんが、サイズの問題とポートの問題は残ります。IN側で使わなかったとしても、ジャイロ用の命令を使っている限り、ポートからはPWM信号が出力されてしまいます。
次に考えられる方法は、折角アナログポートがあるのだから直結してしまう方法です。この方法の問題点は、前にも書きましたがroboBASICでは、アナログ値のミキシングの様な機能がないことです。(MANOIにはあります) ミキシングというとちょっとわかりにくいですが、サーボ関係の命令に変数、あるいは定数+変数の様な記述ができれば問題ないのです。かなり省略して書きますが、例えば、MOVE G24, ・・・100+GYRO#1*100みたいな記述ができれば、ジャイロ関係の命令を使わなくても記述できます。

ではどうすればいいか?
いくつか方法がありますが、まず1つ目の方法は、MOVEをコンパイル(Pコード変換)した結果を実行時にダイナミックに書き換える方法です。記述がわかりにくくなることと元の値をどこかに控えておかなければならないので、roboBASICを使う限りはあまりいい方法ではありません。しかし、コンパイル時、この機能を盛り込んでオブジェクトを生成すれば、コーディングのみの変更でできるものと思います。 次の方法は、ゼロポイントの設定(テーブル)を書き換える方法です。ダイナミックにゼロポイント設定の値が反映されるかどうかわかりませんが、これはコーディングを変えればできそうな気がします。PEEK/POKEを使うので関係ないところを書き換えるととんでもないことが起こりそうです(笑) もう1つの方法は、roboBASIC自体にパッチを当てて、ADポート値をジャイロの関係の命令に反映させることです。つまり拡張命令を作ってしまうということです。 手順としては、(1)roboBASICを吸い上げるか、アップデート用のモジュールを入手する。・・・後者の方が楽かも。 (2)roboBASIC自体を逆アセンブルする・・・AVRはオブジェクトがわかりやすいので逆アセンブラを作るのも案外簡単かも。逆アセンブラ自体は、昔いくつも作っているので時間さえあればできます。 (3)パッチ作成・・・逆アセンブルしたコードに組み込んでアセンブルするか、文字通りパッチで外だしにするかです。(この手のリバースエンジニアリングが利用規約に照らしてどうかは別にして、前者は著作権の関係で公表できないですが、後者なら該当部分の公表はできそうです。)

14
 
※公開されている逆アセンブルソース(?)もないこともないですが・・・

 
・・・とまぁ やりたいことは沢山あるのですが、時間は有限、本業の会社経営はおろそかにできないし、なので簡単にできそうなことからやっていこうと思います。まだ詳しい案内がありませんが、来月後半には、MANOIアスリートカップもありそうなので、できれば出場し前回(12月に)ボロ負けした雪辱を果たしたいと思ってます。そうするとROBOZAKは少しお休みしなければならないので、少し先になってしまうかも知れません。
 
PS 昨日、クラリネットを購入しました。(この記事は書きかけです。) ライブ関係の記事も途中まで書いてあるのですが、きちんとまとまってないのでアップできずにいます。 時間を見てこっそりとアップしていきます。(笑)