Gainer互換機用の定義について

24 views
Skip to first unread message

Shigeru Kobayashi

unread,
May 29, 2009, 8:47:50 PM5/29/09
to funnel-dev-talk-ja
小林です

先日開催されたMTM03ではPepperを用いたワークショップを開催しました。

http://funnel.cc/Workshops/MakeTokyoMeeting03

Windows Vista搭載のPCで参加された一部の方のところで認識はされるけれども通信ができないという問題はありましたが、小型で安価(かつ全てDIPで組立てられる)というのはとても素晴らしいと改めて思いました。現在公開しているFunnel
009 (r642)では、Pepperを使用した時に発生していた細かな問題などを修正したものになっています。

・・・

現在入手できるGainer互換機にはGinger(メカロボショップで販売中)、Pepper(MTMなどで販売)、Gainer
miniがあります。それぞれ、Gainerの互換機として扱うことができるものの、入出力の数が微妙に違っていたり、独自のモードを追加していたりという相違点があります。

ちょうどGainer miniのMODE8(サーボ用出力8系統+通常の入出力)のサポートを考えているところなのですが、こうした互換機用の定義も次のような感じで利用できるよう用意した方が良いでしょうか?

pepper = new Gainer(Pepper.MODE1);
gainerMini = new Gainer(GainerMini.MODE8);

※デメリットとしては、I/O側の仕様変更があった時にライブラリが対応しないと不整合が起きてしまう、というのがあります。しかし、いずれも頻繁に仕様を変更するものではないと思いますので、実際には大きな問題はならないかなと思っています。

※同様の問題として、Arduino用のFirmataもアップロードするファームによって機能が大きく異なります。現状ではArduino.FIRMATAで済ませていますが、Arduino.STANDARD_FIRMATA、Arduino.ANALOG_FIRMATAのように分ける必要が(本格的な利用が増えると)出てくるかなとは思っています。


今のところ直接的に要望としていただいたことはないのですが、もしご意見あればリプライをお願いします。:)

kuw...@nifty.com

unread,
May 30, 2009, 8:09:13 PM5/30/09
to funnel-de...@googlegroups.com
小林さん
皆様

>pepper = new Gainer(Pepper.MODE1);
>gainerMini = new Gainer(GainerMini.MODE8);

これだと同じGainerライブラリの中で機種を判定しないといけないし、ユーザも機種を
意識する必要があります。そういう前提なら,いっそのことライブラリを別けても良い
のではないかと思います。

pp = new Pepper(Pepper.MODE1);
gm = new GainerMini(GainerMini.MODE8);

Pepper/GainerMiniのライブラリはGainerの派生クラスで実装すればコードを重複して
書かなくてすみそうです。

もう一つの課題としては、バージョンを聞かれたときにファームでどんな文字列を返す
かを決めておくのも必要だと思います。Pepperはまだベータの位置づけなので、適当な
文字のみでちゃんとバージョンとか反映していません。

くわた

Shigeru Kobayashi

unread,
May 30, 2009, 10:16:06 PM5/30/09
to funnel-de...@googlegroups.com
桑田さん

小林です

> これだと同じGainerライブラリの中で機種を判定しないといけないし、ユーザも機種を
> 意識する必要があります。そういう前提なら,いっそのことライブラリを別けても良い
> のではないかと思います。
>
> pp = new Pepper(Pepper.MODE1);
> gm = new GainerMini(GainerMini.MODE8);

確かにそうですね。この方がコードとしてもすっきりしますね。

これに関わらずですが、問題点があるとすると機種ごとに別々のサンプルが必要になる、ということでしょうか。

・Gainer互換機として共通の部分はGainerとして
・各互換機固有の機能(GingerのMODEXやGainer miniのMODE8)はそれぞれの互換機として

というのが現実的な解決方法になりますでしょうか。


> もう一つの課題としては、バージョンを聞かれたときにファームでどんな文字列を返す
> かを決めておくのも必要だと思います。Pepperはまだベータの位置づけなので、適当な
> 文字のみでちゃんとバージョンとか反映していません。

こちらは確かにそうですね。例えばですが、次のようにしてプロトコルのバージョンと、I/O固有の情報を返してもらうようにすると問題のきり分けなどにも役立ちそうですね。

{プロトコルバージョン}+{I/Oの機種}+{ファームウェアのバージョン}

例:1.0.0,Pepper,20090519

既に流通しているファームをこのために変更するのは難しいですので、今後に関して提案するという形になるかなと思います。形式などに関して何かご提案があればお願いします。


2009/5/31 <kuw...@nifty.com>:

takanori endo

unread,
Jun 19, 2009, 9:50:47 PM6/19/09
to funnel-de...@googlegroups.com
遠藤です。

バージョンを返すのは、GainerのようにCOMポートの自動設定ができるようになりますので、
ArduinoのFirmataでもできるとよいのですが、むずかしいでしょうか?

Processing版はServerが自動設定になったせいか、よく設定ファイルを確認し忘れてしまいます。
WindowsではとくにCOMの番号がころころかわるので、
自動設定があると、さらに便利になると思いました

遠藤孝則



2009/05/31 11:16 に Shigeru Kobayashi<koto...@gmail.com> さんは書きました:
--
endo takanori

kuw...@nifty.com

unread,
Jun 20, 2009, 2:35:58 AM6/20/09
to funnel-de...@googlegroups.com
遠藤さん
皆様

Pepper等について言えば、バージョンを返すようにすることは簡単です。
次回、小林さんの案の仕様で返すように変更します。

>> {プロトコルバージョン}+{I/Oの機種}+{ファームウェアのバージョン}
>>
>> 例:1.0.0,Pepper,20090519

バージョンアップしたときに、返すバージョンもちゃんと変更するように、何かMakefi
leから呼び出すスクリプトを書いておけば、間違えが減って良いと思いました。

桑田

----- Original Message -----
>Date: Sat, 20 Jun 2009 10:50:47 +0900
>Subject: Re: Gainer互換機用の定義について
>From: takanori endo <sweeta...@gmail.com>
>To: funnel-de...@googlegroups.com
>
>
>
>遠藤です。
>
>バージョンを返すのは、GainerのようにCOMポートの自動設定ができるようになります
ので、
>ArduinoのFirmataでもできるとよいのですが、むずかしいでしょうか?
>
>Processing版はServerが自動設定になったせいか、よく設定ファイルを確認し忘れて
しまいます。

>>> Pepper/GainerMiniのライブラリはGainerの派生クラスで実装すればコードを重複
して
>>> 書かなくてすみそうです。
>>>
>>> もう一つの課題としては、バージョンを聞かれたときにファームでどんな文字列を
返す
>>> かを決めておくのも必要だと思います。Pepperはまだベータの位置づけなので、適
当な


>>> 文字のみでちゃんとバージョンとか反映していません。
>>>
>>> くわた
>>>
>>>
>>> >
>>>
>>
>> >
>>
>
>
>
>--
>endo takanori
>

>--‾--‾---------‾--‾----‾------------‾-------‾--‾----‾
>このメールは次の Google グループの参加者に送られています: funnel-dev-talk-ja
> このグループにメールで投稿: funnel-de...@googlegroups.com
> このグループから退会する: funnel-dev-talk...@googlegroups.com
> その他のオプションについては、次の URL からグループにアクセスしてくださ
>い。 http://groups.google.com/group/funnel-dev-talk-ja?hl=ja
>-‾----------‾----‾----‾----‾------‾----‾------‾--‾---
>

kuw...@nifty.com

unread,
Jun 21, 2009, 5:53:30 AM6/21/09
to funnel-de...@googlegroups.com
皆様

Pepperの新しいファームウエアをリリースしました。

Vista 上でFunnelが動作するように改良しました。

・Vistaでポーリング間隔が遅くても取りこぼし無いように、連続入力のインターバル
を遅くしました。全てのプラットフォームで影響します。

・V-USBを最新のものに入れ替え

・?*コマンドで1.0.0,Pepper,20090621を返すようにしました。

 {プロトコルバージョン}+{I/Oの機種}+{ファームウェアのバージョン}

http://web.me.com/kuwatay/morecat_lab./Blog/%E3%82%A8%E3%83%B3%E3%83%88%E3%83%
AA%E3%83%BC/2009/6/21_Pepper%E3%81%AE%E3%83%95%E3%82%A1%E3%83%BC%E3%83%A0%E3%8
2%A6%E3%82%A8%E3%82%A2(20090621).html

桑田


Shigeru Kobayashi

unread,
Jun 21, 2009, 6:35:52 AM6/21/09
to funnel-de...@googlegroups.com
桑田さん

小林です

お知らせありがとうございました。

※いろいろとたて込んでいて個人宛にお知らせいただいた際にリプライできなくて申し訳ありませんでした。

手持ちのファームを入れ替えてみたいと思います。また、?*コマンドに対して機種およびバージョン情報がついていた場合、それをFunnel
Serverで表示するようにしてみます。


2009/6/21 <kuw...@nifty.com>:

Shigeru Kobayashi

unread,
Jun 21, 2009, 6:39:46 AM6/21/09
to funnel-de...@googlegroups.com
遠藤さん

小林です

> バージョンを返すのは、GainerのようにCOMポートの自動設定ができるようになりますので、
> ArduinoのFirmataでもできるとよいのですが、むずかしいでしょうか?

こちらですが、現状でもArduinoに対して送信してその結果を表示するようにしています。

しかし、Arduinoの場合にはブートローダが待機する時間が数秒あり、このために複数のシリアルポートが検出された場合には結構な待ち時間が発生してしまうことになります。

※特定のコマンドを送信することで待ち状態を解除できるという情報もあったのですが、今のところうまく行っていません。

とはいえ、自動検出はやはり便利ですので、もう少し試してみようと思います。


2009/6/20 takanori endo <sweeta...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages