RoboCup Junior Japan Rescue Kanto OB
2005~2013
2005~2013
明日は工場見学。
学校8時集合だそうです。
遅刻した子は置いてけぼり・・・
置いてけぼり食らうと、恐怖の課題地獄なんだとか。コワイコワイ。
明日は何人地獄を見ることになるでしょうかね(笑)
今日の記事は、またまたNBCについてです。
とりあえず一番基礎的なライントレースができるようになった。という話を以前しました。
まぁこのライントレースプログラムについてちょっと書いていこうと思います。
今回、作製したプログラムは、ほんっとにライントレースの基本だけを行ったプログラムです。
センサーの数は3つ。ギャップや直角などの対応プログラムは一切入っていません。
っていうかそんなもの入れる気力がありません。
というのも・・・プログラムがこんなに長くなってしまうんです(笑)
これは、只普通に右のセンサーが黒くなったら右回転、
左のセンサーが黒くなったら左回転というプログラムしか入っていません。
なので実質使っているセンサーは2つですね(笑)
ちゃんと楽してNXCと同じ関数を使用したのにこの長さって・・・(笑)
やっぱりNXCと比べると格段に難しくなっているのがわかります。
でも、関数はNXCと同じですし、そもそもどういった動きをするかはわかっている訳なので、
見れば、大体何がどうなっているのかはわかりますよね。NXCの経験者なら・・・。
まぁこの辺は簡単だからいいのですけど、例えば配列だったり、関数に引数を使ってみたり、戻り値・・・なんてことになると
途端に意味不明になります。(それがASMです(笑))
これで本当にレスキューのプログラムが書けるのか・・・とてつもなく不安です。
あ。このプログラムのファイル挙げときますね。
それではー。
(^・ω・)ノRadiumProduction in RoboCupJunior
学校8時集合だそうです。
遅刻した子は置いてけぼり・・・
置いてけぼり食らうと、恐怖の課題地獄なんだとか。コワイコワイ。
明日は何人地獄を見ることになるでしょうかね(笑)
今日の記事は、またまたNBCについてです。
とりあえず一番基礎的なライントレースができるようになった。という話を以前しました。
まぁこのライントレースプログラムについてちょっと書いていこうと思います。
今回、作製したプログラムは、ほんっとにライントレースの基本だけを行ったプログラムです。
センサーの数は3つ。ギャップや直角などの対応プログラムは一切入っていません。
っていうかそんなもの入れる気力がありません。
というのも・・・プログラムがこんなに長くなってしまうんです(笑)
#include "NXTDefs.h"
//sensor set
#define kurosiro1 450
#define kurosiro2 450
#define kurosiro3 380
#define sirogin1 630
#define sirogin2 670
#define sirogin3 630
//vl set
dseg segment
motorA byte 100
motorC byte 100
curveA byte 100
curveC byte 100
sensor_1vl sword
sensor_2vl sword
sensor_3vl sword
dseg ends
//fnc set
subroutine FRONT
OnFwd(OUT_A,motorA)
OnFwd(OUT_C,motorC)
return
ends
subroutine BACK
OnRev(OUT_A,motorA)
OnRev(OUT_C,motorC)
return
ends
subroutine RIGHT
OnFwd(OUT_A,curveA)
OnRev(OUT_C,curveC)
return
ends
subroutine LEFT
OnRev(OUT_A,curveA)
OnFwd(OUT_C,curveC)
return
ends
//main
thread main
dseg segment
dseg ends
SetSensorType(IN_1,IN_TYPE_REFLECTION)
SetSensorType(IN_2,IN_TYPE_REFLECTION)
SetSensorType(IN_3,IN_TYPE_REFLECTION)
Loop:
ReadSensor(IN_1,sensor_1vl)
sub sensor_1vl, kurosiro1,sensor_1vl
ReadSensor(IN_2,sensor_2vl)
sub sensor_2vl, kurosiro2,sensor_2vl
ReadSensor(IN_3,sensor_3vl)
sub sensor_3vl, kurosiro3,sensor_3vl
NumOut(1,LCD_LINE1,sensor_1vl)
NumOut(1,LCD_LINE2,sensor_2vl)
NumOut(1,LCD_LINE3,sensor_3vl)
call FRONT
brtst GT,Loop,sensor_2vl
brtst GT,curvel,sensor_1vl
brtst GT,curver,sensor_3vl
jmp Loop
curvel:
call LEFT
jmp Loop
curver:
call RIGHT
jmp Loop
endt
これは、只普通に右のセンサーが黒くなったら右回転、
左のセンサーが黒くなったら左回転というプログラムしか入っていません。
なので実質使っているセンサーは2つですね(笑)
ちゃんと楽してNXCと同じ関数を使用したのにこの長さって・・・(笑)
やっぱりNXCと比べると格段に難しくなっているのがわかります。
でも、関数はNXCと同じですし、そもそもどういった動きをするかはわかっている訳なので、
見れば、大体何がどうなっているのかはわかりますよね。NXCの経験者なら・・・。
まぁこの辺は簡単だからいいのですけど、例えば配列だったり、関数に引数を使ってみたり、戻り値・・・なんてことになると
途端に意味不明になります。(それがASMです(笑))
これで本当にレスキューのプログラムが書けるのか・・・とてつもなく不安です。
あ。このプログラムのファイル挙げときますね。
それではー。
(^・ω・)ノRadiumProduction in RoboCupJunior
やっぱりアセンブラだ・・・(汗)
Cだったら
int x[10];
で定義できる筈の配列が大変なことに・・・
初期値の入力はCと同じようにできるのですが、
まず配列そのものの定義を
x byte[]
でやって、
そのあと要素の数を
arrinit x, 0, 9
で定義しないといけないみたいです。
しかも、配列とは変数とは違ってCのように普通に呼び出せないようになっていて、
Cでいう
i=x[0];
や
x[0]=i;
なんていう風な書き方できないみたいです。
それと同じようなことをしようと思ったら、
どうにも配列専用の命令を使わないといけないらしく
i=x[0];
の場合は
index i, x, 0
で
x[0]=i;
の場合は
replace x, x, 0,i
としないといけないっぽいです。
これはめんどくさい・・・つまり配列でデータをやり取りするにはいちいちbuf変数に置換する必要があるわけですね。
あーぁ。やっぱASMかぁ(笑)
まだ道のりは長いです・・・
(^・ω・)ノRadiumProduction in RoboCupJunior
Cだったら
int x[10];
で定義できる筈の配列が大変なことに・・・
初期値の入力はCと同じようにできるのですが、
まず配列そのものの定義を
x byte[]
でやって、
そのあと要素の数を
arrinit x, 0, 9
で定義しないといけないみたいです。
しかも、配列とは変数とは違ってCのように普通に呼び出せないようになっていて、
Cでいう
i=x[0];
や
x[0]=i;
なんていう風な書き方できないみたいです。
それと同じようなことをしようと思ったら、
どうにも配列専用の命令を使わないといけないらしく
i=x[0];
の場合は
index i, x, 0
で
x[0]=i;
の場合は
replace x, x, 0,i
としないといけないっぽいです。
これはめんどくさい・・・つまり配列でデータをやり取りするにはいちいちbuf変数に置換する必要があるわけですね。
あーぁ。やっぱASMかぁ(笑)
まだ道のりは長いです・・・
(^・ω・)ノRadiumProduction in RoboCupJunior
今、NBC内で「Cでいう配列」を探すという作業に明け暮れています。
あるっぽいんだけど・・・使い方が微妙に謎。
Cと同じでいいのかなぁ。
(^・ω・)ノRadiumProduction in RoboCupJunior
P.S頭逝った状態で適当な記事を投稿した訳です、が「今、明け暮れている」って日本語的にどうなんだろう。
因みにまだ使い方わかりませーん。
あるっぽいんだけど・・・使い方が微妙に謎。
Cと同じでいいのかなぁ。
(^・ω・)ノRadiumProduction in RoboCupJunior
P.S頭逝った状態で適当な記事を投稿した訳です、が「今、明け暮れている」って日本語的にどうなんだろう。
因みにまだ使い方わかりませーん。
最近はマイコンサボってNXTで遊ぶようになりました。(若干PICに飽きたというところもあるのですが・・・)
という訳で今日はNBCで遊んでみました。
まずは単純にライントレースを・・・
と思ったら、意外とめんどくさい・・・
まだほとんどなんもやってないのでわからないんですが、さら見した感じだと、
C言語でいうif文的なにかは無論ないっぽいんですね。NBCならあると思ったのに・・・
あるのはジャンプと条件ジャンプだけ。うーん。やっぱりCとは違うんだなぁ。ASM寄りなのは間違いないですね。
という訳でプログラムもROBOLABやNXCとは全然違う考え方で作らないといけません。だって分岐もループもないし・・・
あれですね。ROBOLABでいうと、イベントとジャンプの羅列みたいなプログラムになりますね。
ASMやった時も大分死にましたが、今回もすごくそんな感じの臭いがします。
でも僕が何で、NBCを使うようになったかというと、非常に大きい理由はこれです。
「プログラムの処理速度がNXCと比べて格段に早い」
同じBricxCCなのに・・・こっちのほうが10倍以上はやいです。センサーの読み込みも3倍以上早いですし・・・
まぁ元々NXCはそこまで処理の早い言語形態ではないですから・・・仕方ないですけど。
という訳で今後もしばらくはNBCを続けていこうと考えています。
でも、どうやらNBCもI2Cのラインはできないっぽいので結局RobotCを使うことになるのかもなぁ・・・
RobotCの処理速度が馬鹿みたいに遅くない限りはRobotCを使うことになると思います。
うーん。手を出す言語が多すぎるのも困りものだなぁ・・・
(^・ω・)ノRadiumProduction in RoboCupJunior
という訳で今日はNBCで遊んでみました。
まずは単純にライントレースを・・・
と思ったら、意外とめんどくさい・・・
まだほとんどなんもやってないのでわからないんですが、さら見した感じだと、
C言語でいうif文的なにかは無論ないっぽいんですね。NBCならあると思ったのに・・・
あるのはジャンプと条件ジャンプだけ。うーん。やっぱりCとは違うんだなぁ。ASM寄りなのは間違いないですね。
という訳でプログラムもROBOLABやNXCとは全然違う考え方で作らないといけません。だって分岐もループもないし・・・
あれですね。ROBOLABでいうと、イベントとジャンプの羅列みたいなプログラムになりますね。
ASMやった時も大分死にましたが、今回もすごくそんな感じの臭いがします。
でも僕が何で、NBCを使うようになったかというと、非常に大きい理由はこれです。
「プログラムの処理速度がNXCと比べて格段に早い」
同じBricxCCなのに・・・こっちのほうが10倍以上はやいです。センサーの読み込みも3倍以上早いですし・・・
まぁ元々NXCはそこまで処理の早い言語形態ではないですから・・・仕方ないですけど。
という訳で今後もしばらくはNBCを続けていこうと考えています。
でも、どうやらNBCもI2Cのラインはできないっぽいので結局RobotCを使うことになるのかもなぁ・・・
RobotCの処理速度が馬鹿みたいに遅くない限りはRobotCを使うことになると思います。
うーん。手を出す言語が多すぎるのも困りものだなぁ・・・
(^・ω・)ノRadiumProduction in RoboCupJunior
今日、とりあえずNBCに触れてみたのですが、
なんだ・・・こりゃ・・・
只、モーターAを回転させようと思っただけなのに・・・
気が付いたらこんな長いプログラムが(笑)
・・・この先が不安すぎます><。
(^・ω・)ノRadiumProduction in RoboCupJunior
P.s:どうやら普通にOnFwd(OUT_A,100);でも動くっぽいです(笑)
なんだ・・・こりゃ・・・
#include "NXTDefs.h"
dseg segment
UF byte
pwr sbyte
OM byte OUT_MODE_MOTORON+OUT_MODE_BRAKE
RM byte OUT_REGMODE_IDLE
RS byte OUT_RUNSTATE_RUNNING
dseg ends
thread main
set UF, UF_UPDATE_MODE
setout OUT_A, OutputMode, OM, RegMode, RM, RunState, RS, UpdateFlags, UF
endless:
set pwr, 100
UpdateSpeed:
set UF, UF_UPDATE_SPEED+UF_UPDATE_MODE
setout OUT_A, Power, pwr, OutputMode, OM, UpdateFlags, UF
jmp endless
exit
endt
只、モーターAを回転させようと思っただけなのに・・・
気が付いたらこんな長いプログラムが(笑)
・・・この先が不安すぎます><。
(^・ω・)ノRadiumProduction in RoboCupJunior
P.s:どうやら普通にOnFwd(OUT_A,100);でも動くっぽいです(笑)
カレンダー
最新CM
カテゴリー
らじぷろ目次
らじぷろ検索機
最新記事
(01/01)
(01/03)
(08/27)
(04/29)
(01/01)
(11/20)
(09/06)
(09/04)
(08/09)
(08/06)
(07/27)
(05/29)
(03/15)
(01/01)
(05/07)
プロフィール
HN:
Luz
性別:
男性
アーカイブ