メイン

実験 アーカイブ

2008年9月19日

ログをとる環境を作る その1

以下のURLからlnphostをダウンロードする。

lnphost
http://lnphost.sourceforge.net/index.html

続きを読む "ログをとる環境を作る その1" »

2008年9月24日

ログをとる環境を作る その2

まずは、簡単なプログラムから作ってみます。※一部全角スペースがありますので、コピペ注意!

#include <unistd.h>
#include <conio.h>
#include <dsensor.h>
#include <dmotor.h>
#define TH 40
#define NORMAL_SPEED (0.6*MAX_SPEED)
int main(int argc, char** argv)
{
 ds_active(&SENSOR_2);
 motor_a_speed(MAX_SPEED);
 motor_c_dir(fwd);
 motor_c_speed(NORMAL_SPEED);
 for(;;){
  if(TH < LIGHT_2) motor_a_dir(fwd);
  else motor_a_dir(rev);
 }
 return 0;
}

このプログラムにさらに改良を加えます。追加・変更個所は赤で表示してます。

続きを読む "ログをとる環境を作る その2" »

ログをとる環境を作る その3

プログラムを走行体へ転送
$ dll --tty=usb -p1 プログラム名.lx

PC側のcygwinでは以下のコマンド実行
$ lnpdump -d//./legotower1

あとは走行体のRunボタンを押してプログラム実行する。

約2秒程度走行した後、データがPCへ送信され画面に表示される

続きを読む "ログをとる環境を作る その3" »

2009年1月20日

nxtOSEK開発環境整備と動作確認

前回の記事で2009年走行体の写真をアップしました。走行体は頂いた副賞のNXTセットを使って作りましたが、実はこれだけでは2009走行体は出来ません。というのは走行体にはジャイロセンサが必要なのですが、NXTセットには付属していません。

この情報はじつは11/20に行われたワークショップの休憩時間に、審査員の方々と雑談したときに聞いていたので、翌日(11/21)横浜から青森に戻る前に、秋葉原によってジャイロセンサを調達してから帰るつもりでした。

しかし、ここならあるだろうと思っていたお店が行ったらこういう事態になっており、いくつかの店を回ってみましたが見つけることが出来ず、結局ジャイロセンサを調達できずに青森に戻った訳です。

その後しばらくして、NXT用のジャイロセンサを扱っているお店を見つけて、昨年12月初旬にようやく入手できました。

SANY0017.JPG

ジャイロセンサはLEGO製ではなくて、HiTechnicという会社の製作したセンサーで、LEGO社の認定製品となっているようです。ようやく入手できましたので、これを使って2009走行体と開発環境整備をします。

まず、開発環境をコチラを参考にして構築します。走行体はコチラを参考にして作ります。おおよそ以下の手順で設定と動作確認を行います。


  1. cygwinのインストール : これはbrickOSでも使うのですでにインストール済

  2. GNU ARMのインストール : C:¥cygwin¥GNUARMにインストール

  3. 拡張NXTファームウェアのインストール・設定 : C:¥cygwin¥nexttoolにNexttoolを展開し、さらに拡張NXTファームウェアもここにコピーする

  4. NXT Driverのインストール : LEGO MINDSTORMS NXT Driverをダウンロードしてsetup.exeを実行、その後NXTをUSBでPCに接続する

  5. nxtOSEKのインストール・設定 : C:¥cygwin¥nxtosekに展開、tool_gcc.makの設定はデフォルト

  6. 動作確認 : nxtosek¥samples¥nxtway_gs ディレクトリで、make all 実行し、作成されたrxeflash.shを実行しNXTにダウンロード

これで、走行体にサンプルプログラムがダウンロードされました。実行してみます。
HD画質で撮影できるカメラを入手したので、アップロードしてyoutubeでHDで表示できるかテストしてみます)

サンプルプログラムをそのまま使ってます。ちゃんとバランスしてます。ちょっと押したぐらいでは倒れません。

撮影したビデオも(リンク先のyoutubeでは)HDで表示できてます。

2009年4月24日

NXT走行体を動かす(1)

この記事は、青大ロボコン研の備忘録です。間違った情報を掲載している可能性もありますので、利用される方はご注意くださいませ。

走行体を製作し、開発環境を整え、サンプルプログラムが動かせる状態を前提にします。あとbluetoothを使った通信が可能である(ハードが対応しているなど)とします。(NXT GamePad 1.04をしばらくは使う予定)

     
  1. 実施説明会でもらった資料をもとに、NXT走行体のサンプルプログラムの3つのファイル(sample.c , balancer_param.c , sample.oil)をつくり、/nxtOSEK/sample_c/nxtway-ET に保存します。
  2.  
  3. Makefileが必要になるので、/nxtOSEK/sample_c/nxtway_gs からコピーします。
  4. Makefileの以下の個所を変更します。
  5.   
    • 2行目 TARGET = NXTway-ET
    • 16行目 sample.c
    • 19行目 TOPPERS_OSEK_OIL_SOURCE := ./sample.oil
  6. make all を実行する
  7. sh ./rxeflash.sh を実行する
  8. NXT走行体に転送したnxtway-ETを実行する(画面には何も表示しなくなります)
  9. NXT走行体の光センサがコースの黒線上に位置し、床面と垂直になる様に支えながらタッチセンサを押します。
  10. コースに沿って走行します。(ただし、各種センサの調整をしていないので、うまく走らない場合もあります。)

この手順でうまく走る・・・と良いですが、少しセンサの調整もしたいので、このプログラムを少し改良していきます。

(つづく)

NXT走行体を動かす(2)

この記事は、青大ロボコン研の備忘録です。間違った情報を掲載している可能性もありますので、利用される方はご注意くださいませ。

走行体を製作し、開発環境を整え、サンプルプログラムが動かせる状態を前提にします。あとbluetoothを使った通信が可能である(ハードが対応しているなど)とします。(NXT GamePad 1.04をしばらくは使う予定)

前回のプログラムを改良していきます。

まずは、画面にセンサの情報を表示させます。(走行中は必要ないので、タッチセンサが押される前まで表示するようにします)

sample.cの一部を修正(サンプルプログラム helloworld を参考に修正)

変更前
while(!ecrobot_get_touch_sensor(NXT_PORT_S1)); /* タッチセンサ押下待機*/

変更後
ecrobot_set_light_sensor_active(NXT_PORT_S3); /* 光センサ赤外線ON */
while (!ecrobot_get_touch_sensor(NXT_PORT_S1)) /* タッチセンサ押下待機*/
{
ecrobot_status_monitor("AodaiRoboconKen");
systick_wait_ms(500); /* 500msec wait */

}

この修正で、タッチセンサを押すまでは画面に各種の値が表示されます。
ただし、この修正でタッチセンサを押して走行開始するタイミングが変わります。

表示されている値から、ジャイロセンサと光センサの値を確認して sample.c に書き込みます。

(つづく)


2009年4月25日

NXT走行体を動かす(3)

この記事は、青大ロボコン研の備忘録です。間違った情報を掲載している可能性もありますので、利用される方はご注意くださいませ。

走行体を製作し、開発環境を整え、サンプルプログラムが動かせる状態を前提にします。あとbluetoothを使った通信が可能である(ハードが対応しているなど)とします。(NXT GamePad 1.04をしばらくは使う予定)


前回改良したプログラムを使って、センサの値を確認します。

ジャイロセンサの調整


プログラムを実行すると以下の画面になります。

SANY0003.JPG

図示した部分が光センサとジャイロセンサの値です。ジャイロセンサを完全に静止した状態で値を確認します。そのため以下のように横倒しにして値を確認しましょう。

これまでは、走行体を垂直に支えた状態でジャイロセンサの値を確認していましたが、それでは完全に静止させることは難しいです。横倒しにすることが正しいかまだ確証はありませんが、しばらくはこれでいきます。このときも確か横倒しでジャイロセンサのキャリブレーションしてたので多分いいとは思います。

SANY0007.JPG

読み取ったジャイロセンサの値をsample.cに反映します。GYRO_OFFSETを変更します。

変更前
#define GYRO_OFFSET 605 /* ジャイロセンサオフセット値(角速度0[deg/sec]時) */

変更後
#define GYRO_OFFSET ??? /* ジャイロセンサオフセット値(角速度0[deg/sec]時) */

(???の部分は各自のジャイロセンサの値を入れる)

(つづく)

NXT走行体を動かす(4)

この記事は、青大ロボコン研の備忘録です。間違った情報を掲載している可能性もありますので、利用される方はご注意くださいませ。

走行体を製作し、開発環境を整え、サンプルプログラムが動かせる状態を前提にします。あとbluetoothを使った通信が可能である(ハードが対応しているなど)とします。(NXT GamePad 1.04をしばらくは使う予定)

光センサ値の確認


プログラムを起動して、NXT走行体を垂直の状態でコースの「白」および「黒」の光センサ値を確認します。もしコースに灰色マーカがあればその値も確認します。

SANY0009.JPG

確認した値をsample.cに反映します。

変更前
#define WHITE 500 /* 白色の光センサ値*/
#define BLACK 700 /* 黒色の光センサ値*/

変更後
#define WHITE XXX /* 白色の光センサ値*/
#define BLACK ooo /* 黒色の光センサ値*/

XXXは「白」の光センサ値を入れます。oooは「黒」の値を入れます。(ただしコースに灰色マーカがある場合は、「灰」の値)

これらの調整で動作するか確認しましょう。

(つづく)

2009年4月27日

走行方法検討中

週末は、競技規約とモデル審査基準の確認と走行方法を検討しました。

備忘録にあるようなサンプルプログラムでは、あまり滑らかに走行できませんので、改善できそうなアイディアを2,3つプログラムにしてログで確認してます。

しかし、まだこれという決め手がない・・・。

でも、最初のこの走行に比べれば改善は進んでいるはず。

カーブが連続している所で、少しコースからズレてしまってます。ここを何とかしないといけません。連休中の課題です。

2009年4月29日

NXT走行体は2分で1周できるのか

競技規約によるとNXT走行体は2分以内に1周しないとリタイヤになります。サンプルプログラムで2008年のコースを難所無しで走らせてみたところ、約2分30秒で1周しました。

いやNXTはあまりスピードがないとは思ってましたが、これは遅い。RCXのときは、サンプルでも2分で2周はしてたと思いましたが・・・。少しプログラムを改良して、現時点で一番速く走れる状態でビデオを撮りました。

今のプログラムでは、1周約1分20秒ぐらいです。大会ではコース内の難所、坂道、ゴール停止を入れて2分以内に走りきらないとリタイアになるので、もう少し速く走れないとまずい気がしています。

当面の目標として1周1分以内を目指して作業していきます。

実際走ってみて、NXT走行体2台で並走できないことが分かりました。なんか変だ思ったら、今年はインコースとアウトコースの間が140mmから200mmに間隔が拡大してます。コース全体もよく見ると同じではなく、昨年と比べて全体に拡大している様に見えますね。

これが昨年2008年のコース
c2008.jpg

これが今年2009年のコース
c2009.jpg

About 実験

ブログ「青大ロボコン研(仮)参戦記」のカテゴリ「実験」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。

前のカテゴリは北海道・東北地区大会までの道程です。

次のカテゴリは雑記です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。