ラベル ETロボコン の投稿を表示しています。 すべての投稿を表示
ラベル ETロボコン の投稿を表示しています。 すべての投稿を表示

2008-06-06

lnp を使用して Cygwin と RCX の通信を行う 2

brickOS 版の lnpd は Cygwin 上でコンパイルできなかったので lnphost を使用する事にしました。
ちなみに legOS 版の lnpd は試していません。

lnphost の導入手順はこんな感じです。
$ curl -O 'http://easynews.dl.sourceforge.net/sourceforge/lnphost/lnphost-1.0a.zip'
$ unzip lnphost-1.0a.zip
$ cd lnphst
$ make
Cygwin側では
./lnpdump -d //./legotower1 > recieve.txt
のようにすれば受信待ちになり、Ctrl + C でプログラムを止めるまでの間に受信したデータを recieve.txt に保存できるはずです。

RCX 側は
int lnp_addressing_write (const unsigned char *data, unsigned char length, unsigned char dest, unsigned char srcport)
を使用してデータを送信します。
data には送信データの先頭アドレスを渡します。
length には送信データのサイズを渡します。unsigned char なので型としては 0 〜 255 ですが、実際に送信できるサイズはもう少し小さいようです。おそらくヘッダとかパリティとかを含めたパケットのサイズが255byteなのでしょう。調べるのが面倒なので私は安全に200byteに分割して送る事にしました。
dest には Cygwin 側の待ち受けアドレスを設定します。上位4bitがアドレス、下位4bitがポートのようです。
srcport には RCX 側の送信ポートを設定します。恐らく0x0〜0xF が有効な値です。

RCX 側のアドレスはどうなっているかというと brickOS の boot/config.h 内の
#define CONF_LNP_HOSTADDR 0 //!< LNP host address
で設定されているようです。

Cygwin(lnphost) 側は・・・特にソースコード内では決めていない?ようです。

さて、RCX のアドレスなんですが、コレがみんな同じだとトラブルが起きないんでしょうか?
変えておいた方がいいんでしょうかねぇ・・・

中途半端ですが時間がないのでとりあえずここまで

2008-06-05

lnp を使用して Cygwin と RCX の通信を行う 1

さて、長期にわたり放置を続けている当Blogであるが、サボってるわけではない。
単純に精神的な余裕がなくて近寄るのもイヤな状態だっただけだ。

さて、東海地区試走会を2日後に控えた今頃になってRCXからログを転送する方法を調べているわけだが、これがなかなか上手くいかない。

lnpdを使用すればよさそうだという事がわかったので早速brickOSのページからダウンロードしてコンパイルしてみた。
Cygwin上で以下のように実行した。
$ curl -O 'http://easynews.dl.sourceforge.net/sourceforge/brickos/lnpd-0.9.0.tar.gz'
$ tar -xzf lnpd-0.9.0.tar.gz
$ cd lnpd-0.9.0/
$ ./configure
$ make
ちなみにこれらのコマンドが何を意味しているのか、理解していません。
他のところでこうしてるのを見たので真似ただけです。
何かが間違ってる気がしますが…

で、結果は
$ make
make all-recursive
make[1]: Entering directory `/home/Administrator/brickos/lnpd-0.9.0'
Making all in lnpd+liblnp
make[2]: Entering directory `/home/Administrator/brickos/lnpd-0.9.0/lnpd+liblnp'

Making all in liblnp
make[3]: Entering directory `/home/Administrator/brickos/lnpd-0.9.0/lnpd+liblnp/liblnp'
/bin/sh ../../libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I../.. -D_GNU_SOURCE -g -O2 -c lnptest.c
mkdir .libs
gcc -DHAVE_CONFIG_H -I. -I. -I../.. -D_GNU_SOURCE -g -O2 -c lnptest.c -DPIC -o .libs/lnptest.o
gcc -DHAVE_CONFIG_H -I. -I. -I../.. -D_GNU_SOURCE -g -O2 -c lnptest.c -o lnptest.o >/dev/null 2>&1
/bin/sh ../../libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I../.. -D_GNU_SOURCE -g -O2 -c stub.c
gcc -DHAVE_CONFIG_H -I. -I. -I../.. -D_GNU_SOURCE -g -O2 -c stub.c -DPIC -o .libs/stub.o
stub.c: In function `lnp_init':
stub.c:381: error: `O_ASYNC' undeclared (first use in this function)
stub.c:381: error: (Each undeclared identifier is reported only once
stub.c:381: error: for each function it appears in.)
stub.c:383: error: `F_SETSIG' undeclared (first use in this function)
make[3]: *** [stub.lo] Error 1
make[3]: Leaving directory `/home/Administrator/brickos/lnpd-0.9.0/lnpd+liblnp/liblnp'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/Administrator/brickos/lnpd-0.9.0/lnpd+liblnp'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/Administrator/brickos/lnpd-0.9.0'
make: *** [all-recursive-am] Error 2
・・・見事にコンパイルできませんでした。
O_ASYNC と F_SETSIG の定義がないとの事。
どう対応したらよいのか調べてみましたが。

O_ASYNC の方は
legOS : 439
that's an OS issue - your host system should define O_ASYNC. Some older
systems define FASYNC instead, try that one.

You can work around this more elegantly, too:

#ifndef O_ASYNC
#define O_ASYNC FASYNC
#endif

And hope for the best.
O_ASYNC は古いシステムでは FASYNC を使って試してみてね。との事。

F_SETSIG の方は
legOS : 3945
・・・全く同じ現象の質問だが放置プレイ状態

legOS : 25788
こちらも全く同じ現象の質問ですが、こちらには回答が付いていました
lnphost is perfect. Thank you for the reference.
えっと、Cygwin上でlnpdは使えません。lnphostを使いましょう。
との事でした。

かなりせっぱ詰まっているので走り書き状態ですが、これで一度公開します。
試走会、何も出来ない可能性が極めて高いのです。
余裕が出来たら手直しします。


2008-05-09

EclipseでbrickOS開発環境を作る 1

ETロボコン事務局さんの配布している開発環境はCygwin上のクロスコンパイル環境で、リモートデバッグとかはなさそう

そもそもリモートデバッグ自体出来るのかわからない

関連リンク
Remote Debugging of RCX using GDB over IR

とりあえず統合開発環境は欲しいところなので Eclipse で環境を作成してみる事にした。

注意
ここから先はやった事のメモです。
手順ではありません。
コレを見ても環境は作成できませんよ〜


まず最初に Eclipse をダウンロードします。
FullバージョンにもCDTは含まれると思いますが無難にコレ
Eclipse IDE for C/C++ Developers - Windows (60 MB)
をダウンロードします。

インストールは適当なフォルダに解凍するだけらしいので、無用なトラブルを避けるため c:¥eclipse にダウンロードしたファイルを解凍します。

解凍するだけでインストールが終わるかと思ったらそうではなくて、JREを別途用意する必要があるようです。推奨されているのは
Sun Java 2 Standard Edition 5.0 Update 11 for Microsoft Windows
っぽいのですがダウンロードページにあったJRE5.0の最新版
Java Runtime Environment (JRE) 5.0 Update 15
をダウンロードしてインストールしました。
c:¥eclipse¥jre にコピーするとそのJREが優先的に使われるらしいですがこちらは未検証です。

起動するとworkspaceのパスを聞かれます。
workspaceも無用なトラブルを避けるためにc:¥に置く事にしました。

無事起動しました。

自称技術者としてどうかと思いますが、英語が苦手なので日本語化します。
Eclipse 日本語化言語パック (サードパーティ版)
をダウンロードして解凍したファイルを c:¥eclipse に上書きコピーします。
再度起動するとちゃんと日本語化されています。

ソースコードをSubversionで管理したいため、プラグインを追加します。
Subversionのプラグインには Subversive と Subclipse があるようですが、オフィシャルに取り込まれている? Subversive の方を使用します。

プラグインを追加するには更新用URLを登録してダウンロードするのが一般的なようです。
Subversive のページによると以下の3サイトのうち上2つが必須の更新用URLだそうです。
http://download.eclipse.org/technology/subversive/0.7/update-site/ - [required] Subversive plug-in
http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site/ - [required] Subversive SVN Connectors
http://www.polarion.org/projects/subversive/download/integrations/update-site/ - [optional] Subversive Integrations

ヘルプ→ソフトウェア更新→検索とインストール

「インストールする新規フィーチャーを検索」を選択して「次へ」

「新規リモート・サイト」をクリックしてサイトを登録する

Subversive plug-in を追加

Subversive SVN Connectors を追加
結局後で Subversive Integrations も追加してみました。が、こちらは未使用です。

追加した「Subversive plug-in」「Subversive SVN Connectors」と「ミラーを自動選択」を選択して「終了」

検索結果はこんな感じ

必要なもののみ選択して「次へ」
注意:「SVN Team Provider Localization」を選ぶと日本語化されるためこれも選択しましょう。

「使用条件の条項に同意します」を選択して「次へ」

特に変更する必要がないのでそのまま「次へ」

著名を確認して「インストール」
このプラグインはオフィシャルなのでちゃんと署名されている?

確認して「インストール」
こっちはサードパーティのプラグインなので署名なし?

と、こんな感じでインストールも無事に終わり Subversion が使えるようになったと思います。
何故思いますなのかと言うとまだ試してないからです。

この後、C++プロジェクトを作ってみたりクロスコンパイルの設定をしてみたりしたんですが、まだうまくいっていないので次の機会にします。
実はちゃんとメモ残していないだけなんですが^^;

明日、明後日の技術教育が終わったらまた続きをやろうかと思います。



こんなスローペースで間に合うんだろうか?

brickOSの開発環境を作成する

作成すると言ってもETロボコン2008事務局から配布されている資料の通りに行っただけです。
  1. Cygwin 1.5.14-1 をインストールして c:\cygwin\bin にパスを通す。
  2. クロスコンパイル環境を設定する
  3. brickOSをコンパイルする
  4. RCXにOSを転送する
と言う手順でした。

以下、スナップショット
最近さぼり気味なのでスナップショットもさぼり気味です

brickOS転送中のCybwin画面


brickOS転送中のRCX


デモプログラム(コンパイル済み)を転送してRunボタンを押すとHello worldが表示される。
液晶の表示能力の都合上、文字は読みにくいですね〜


2008-04-19

ETロボコン走行体を組み立て

先日、ETロボコンの参加規約、審査基準、開発環境が公開されました。
参加規約、審査基準は公開されてからずいぶん経ちますが(^^;)

さて、早速走行体のCAD図面を見てみます。
図面はMLCadで作成されていますがインストールの必要はなく、フォルダごとHDDにコピーして実行ファイルを起動するだけの状態で配布されていました。

MLCadを起動して、まずは走行体のトラクション部のファイルを開きます。
(チームチャレンジセットは何故か別ファイルになっていましたのでそちらを開きます)

手順書のアドバイス通り、不要なツールバーを全て外してControlbar、Mainbar、Modebarのみを残していよいよ組み立て開始です


どうやら4分割された画面に前、横、上、斜め上から見た図が表示されているようです。
図面は組み立て順を表しているのではなく、どこにどの部品を配置するかを表しているため、部品が宙に浮いています。


部品をこの中から探します。


一応何となく分類していたので最初の部品はすぐに見つかりました。


次は穴が9個の黒い棒を2本、最初の部品が所定の位置に納まりました。


モーター登場。


モーターの電極の所に付けるブロックがどれなのかよくわからなかったが、多分短いコードの方だろうと言う事で先に進める。


CAD図面と形状の同じ部品はグレーの物で差し込んだ状態で回転可能な物だが、図面上では黒色だった。似た形状の黒色の物は回転しないように突起があるし真ん中に穴が空いている。


これは悩んだが、使用目的が単純なブロックの連結のようなので回らない黒い部品を使った。
ギヤの部分は遊びを作った方がいいのか迷いましたが、結局遊びを作って組み立てました。
で、やっとトラクション部の出来上がりです。


ETロボコン用仮想マシンの用意からここまで2時間もかかってしまいました。
続きをどうするか迷いましたが、勢いのあるうちにって事でステアリング部に移ります。
慣れてきたのでサクサク進みます。


途中、やはり図面と色違いの部品があったものの、こちらは似た形状の部品が1種類しかなかったのであまり迷いませんでした。


さて、ここまでくみ上げたところで、どうも電極のところのブロックが逆向きだという事に気がつきました。
よく見ると図面の真ん中の黒ブロックから上向きにコードらしき物が出ています。

実際のブロックをよく見るとご丁寧にコード用の溝まであります。何で気づかなかったんだろう?


ステアリング部の電極も直します。


ここまで開始から2時間30分です。

続いて本体部の組み立てです。
本体は多少手順を考えないと組み立てられない部分もありました。
MLCadで図面を好きなアングルから見る方法がわからなかったため、陰に隠れて見にくい部品があると苦労します。
本体部分は思いの外時間がかかって結局終わったのは開始から3時間30分後でした。


センサーの出力を本体につなぐにはコードの長さが足りないため継ぎ足す必要がありそうです。
また、構造的に弱い部分などがあり、補強が必要がありそうです。
どこまで補強が許されるのか、まだ公開されていない競技規約を読めばわかるんでしょうか?

これからが大変そうです。

2008-03-04

教育用レゴ マインドストームRCX チーム・チャレンジセットが届いた

ETロボコンに参加する事になりました と書きましたが、実は申し込みをしただけで参加できると確定したわけではなかった事が発覚!!
スポンサー料を払ってまで出場はしないらしいので、申し込みが多ければ抽選で落ちる可能性もあるわけです。

さて、そんな不確実な状況ではありますが、参加申し込みと同時にLEGOは注文してしまったため、2008-02-29に届きました。

早速開封


一番上に部品表が


段ボールから出すとこんな感じ。


コースのサンプル


トレイと完成した車体をしまう箱?


部品箱


部品箱の中身。部品ギッシリ確かな満足!


てなわけで、内容物が揃ってるか確認していきます。
本体とUSB赤外線通信機。迷わずわかるのはこれくらい。


とにかく部品が細かいし似た部品も多い。
だんだん、同じ図形を探す知能テストをやってる気分になってくる。
穴の有無や細かい形状の違いをいちいち確認していかなければならない。

そうこうしているうちに

部品表と現物の色が違う(一番下の長いチューブ)


これも色が違う。図では緑だが現物は黄色


しつこいようですが細かく似た形状の部品がたくさんあるので色も重要な要素です。
それが違ってるのは困るんですけど…

さらに続けていると、これは細かい部品に多いのですが、同じ型の部品が複数の袋に別れて入っている事がわかりました。
コレのおかげでさらに確認が面倒に!!

シリコンオイル?でテカテカのタイヤ


溝の形状が部品表と違う。しつこいようですが本当に困るんです。
ちなみに現物の方はバラで入っていた物を組み立てました。


部品表に見あたらない部品


白の輪ゴムは3本のはずだが6本入っていた


棒状のパーツは部品表に数値が併記してあったが、短い順に番号がついているだけで長さを表しているわけではない。紛らわしくて困る。


ギヤです。この頃にはもうかなりクタバってます。


ここまで1時間半くらい。まだまだ細かい部品が大量に残ってます。




2時間以上かけて内容物の確認を行ったのだが、最後になって現物がない部品があった。(真ん中の縁が青くて中が白いブロック)


そして余った部品はコレ




ええ、そうです。
2時間も図形あわせの知能テストやってれば頭も麻痺してきます。


この部品だけ組み立て済みの状態で部品表に載っていたんです。
(他の部品は全部バラの状態で載っていた)

正確には覚えていませんが140分くらいかかったでしょうか?やっと確認が終わりました。


フタ、完全に閉まってないですが細かい事は気にしない!!


とにかく似た形状の部品が多くて識別が大変でした。
部品表と現物の色が違っている部品は結構多かったので全てをメモしなかったけど、ピッキングのために実際の色をメモっとくべきだったと思う。

この大会で使用するLEGOはマインドストームRCXという物らしい。既に古い機種でサポートは2009年末まで。
さて、これをどう組み立てればよいのか?
内容物に設計図らしき物はないし、開発環境のCDなども入っていない。

気がつけば東海地区の事前実施説明会は終わってるし…
と思ったら、2008-02-29に事前実施説明会の資料がダウンロードできるようになってました。

それによると走行体作成用CADモデルが後日配布されるとの事。また、開発実装環境はオープンソースのOS、brickOSLeJOS を使用するとの事。

配布すると書いてあるけど、そこにはオフィシャルサイトへのリンクが張ってあるのみ。
このリンクを以て配布とすると言う事だろうか?

困った事にAPIドキュメントも英語だし、開発環境は自分で作らなきゃいけないんだろうか?
技術教育を2回実施してくれるらしいのでその時にわかるのかもしれないが、東海地区は地区大会の日程が早いのでそれを待ってたら間に合わない気が…

これからが大変そうです。