忍者ブログ
RoboCup Junior Japan Rescue Kanto OB

             2005~2013
[81]  [82]  [83]  [84]  [85]  [86]  [87]  [88]  [89]  [90]  [91
前回のProgramの記事はコンパイラの話で終了しました。 

なので今日はそれの続きで、いよいよCnによるプログラムについての記事を書こうと思ったのですが、


よく考えたら作るにも開発環境がないことに気が付いてしまいました。

僕のPCに(笑)

という訳で急きょカテゴリーを変更して、Cプログラムを書くための環境(ソフト)を紹介しようという路線に変更しました。



とりあえずいくつか紹介しようと思います。

まずはEmacs

うちの学校では「エマックス」と呼んでいますが、正式には「イーマックス」です。

元々はテキストエディタで、うちの学校ではこれを使ってプログラムを書いています。

まぁこれは開発環境というかどうかは微妙ですが・・・

開発環境というと、プログラムを書くエディタとコンパイラとデバッカと・・・

って全部そろったものをいうような気がしますからね。

これはエディタだけですから・・・


でもユーザーを見てみると、断然プログラミングに使われている場合が殆どです。

これの場合はインストールしたら普通のメモ帳みたいにプログラムを書いて保存して、

そのあとで手動でコンパイラにファイルをぶっこんでコンパイルさせることになります。

実行も手動で、この辺のことはEmacsではサポートされていません。

非常に書きやすいですが、ちょっと初心者には難しいかも・・・

基本的にUNIX系列のものですがWinでも使えますよ。




次に学習用C言語開発環境

これはちゃんと一通りセットになっています。

これなら初心者でもわかりやすい・・・筈!

とりあえず一番これが楽です。

只、結構無名なソフトなので、何かあった時に対処ができなくなるかも知れません。

まぁその時は諦めて再起動してください。

コンパイラはGCC、(らしい)

また起動にはNET Framework Version 2.0が必要です。



最後に一番有名であろうMicrosoft Visual Studio

通称「ビス」。一部地域ではMVSだそうです。

一番ポピュラーかつ本格的な環境です。

普通にプロのプログラマーが使うようなレベルの環境ですが、初心者でも十分扱えるという優れものです。


色々と系列がありますが、C言語をやる場合はその中のVisual C++というものを使います。

これはC言語とC++という言語に対応しています。C++はよく知らないので割愛します(笑)

1年上の先輩までは授業でやってたらしいですが、僕らの代からCになったのでやってない・・・


もちろんエディタからコンパイル、エラー表示も実行、そしてデバッグもすべて行ってくれます。

しかもMSの純正なので情報もサポートもばっちり!まずこのソフトで迷うことはないでしょう。

でもこれだけ優れたビスですから・・・お高いんでしょう?


なんてことはありません。完全無料です。ちょっとMSへの登録が必要ですけど・・・

いくらスカイプを有料声明をだしたMSとはいえ、ビスは無料で使えますよ。


只、問題が一つ。

現在公開されているのは、2010版ですが、ここで重要なことが・・・


「2010版は使うな。」

危険・・・というよりバグの塊みたいなものです。うちの高専でも起動すらできない人が続出しました。

とにかく酷いです。あれだけは使い物になりません。

アップデートで直ってるかな?でもとりあえずまだ使えなはずです。

という訳でビスを使う際は2008とか2005とかの古いバージョンを探して使ってください。2003でも大丈夫です。


どうやらちゃんと動くそうです。

よくわからんっ!



とりあえずこんな感じかな。興味のある方はちょっと入れてみればいいんじゃないかなぁ(笑)


それではー。

今度こそCの記事書くぞー

(^・ω・)ノRadiumProduction in RoboCupJunior
( うちの部活の場合)、答えは「ダイオード」です。

という訳で今日はダイオードの紹介をしようと思います。

ダイオード、英語で書くとDiode。一体どんなものなのでしょう。


またこれ外観は、

こんなのだったり
ダイオードの外観その1です。結構これは一般的かも
こんなのだったり
ダイオードの外観その2です。これもかなりメジャーなダイオードです。バチバチ。
こんなのだったり
ダイオードの外観その3です。これはゴツイ・・・ブリッジダイオードと呼ばれる種類の。それもかなり定格の大きい部類のダイオードです。ロボカップでは多分使わないけどこれもメジャーです。
こんなのだったり
ダイオードの外観その4です。実はこんなダイオードもあったりします。基本的にこういうのは高周波用。他の3つと比べるとあまり見ないかもしれません。
します。


基本の回路図記号はこんな感じです。
一般的なダイオードの回路図記号です。上の写真でいう1番上と2番目のダイオードは普通のダイオードなのでまんまこの記号で表せます。
種類が変わると微妙に変わってきます。


それで、ダイオードは何ができるかといいますと、電流、電圧の方向の制限と電流量の制限の2つです。


よく「ダイオードの整流作用」等という言葉を聞く場合がありますが、これは電流、電圧の方向制限の応用です。

まず一つ目の電流、電圧の方向の制限についてですが、これは簡単に申しますと、


ダイオードの一番大きな特徴、というよりダイオードの存在意義でもある、

「電流を1方向にしか流さない」という特徴を表しています。

要するに上の回路図記号でいうと、左から右には電流を通すけど、右から左には電流を通さないということです。

つまりこれだと電気が流れて、
この場合、この回路には電流が通ります。
これだと流れないという訳です。
この場合、この回路には電流が通りません。

基本的にはそれだけです。

まぁ下の回路図でも、ある一定上の電圧をかけると急に電気が流れるようになる特性も持ってたりしますが

この辺はややこしいので今は省略します。

次の電流量の制限ですが、これは簡単に、ダイオードに流せる電流量は決まっているので、

上の回路図では、回路の電流の量がダイオードによって決まっちゃいますよ。ってことです。

ダイオードによって、10mAだったろ20mAだったり1Aだったり・・・と決められています。

この値は実際に回路を作ってみるか、ダイオードの仕様を調べるかしないとわかりません。

基本的には後者を行いますけど・・・いきなり実験だなんて勇者すぎます。


因みにダイオードにも当然、内部抵抗があるので、電圧降下が発生します。

電圧降下っていうのは以前書いたように、

上の回路でいうダイオードと抵抗の間とGND(マイナス極)の電位差(電圧の差)や、

Vcc(プラス極)とダイオードと抵抗の間のように1素子の両端の電位差のことです。

この電位差が素子内で落ちている電圧なので電圧降下と呼ばれているはずです。


ここでこの電圧降下量についての話ですが、

さっき電流量は一定だということを説明しました。内部抵抗はもちろん一定なので

オームの法則から、電流と抵抗が一定なので電圧も一定になることがわかります。

よって電圧降下量は一定。ダイオードの電圧降下は一定値になることがわかります。

この値ですが、大体0.6~0.7Vのものから2V近くのものやこれを超えるものまで結構いろいろあったりします(笑)


ダイオードを使う際にはこの値にも注意してくださいね。


まぁこんな感じのダイオード。どんな時に使うのかな;ぁ。ということは次回に回したいと思います。


ダイオードのがなんなのかがわかったところで今日はこの辺で。それではマター。

(^・ω・)ノRadiumProduction in RoboCup Junior
このタイトル、くさいと臭いが掛かって(以下略)

先程、PICがひとつお亡くなりになりました。


死因?今回の死因はですね・・・

どうやら静電気っぽいです。 


元々体質的に(?)バチバチが起こりやすい身なので度々PICを壊すんですね。

やっぱりゴム手袋をつけるべきなのか・・・悩むところです。

(^・ω・)ノRadiumProduction in RoboCupJunior
新入部員が2人増えて現在10人。まぁこれで確定でしょう。



とりあえずこれでようやく新入部員の指導も織り込んだ形での部活のスケジュールが考えられそうです。

今年も結局ノード大会がどうなるのかが分からないし・・・困ったものですね。

まぁ例年通り早い方基準で考えましょうか。その方が後々楽ですし。

という訳で11月の半ばに大会があることを想定して作業を進めよう!ということになりました。

でもロボコンの大会って10月なんですよね。大会が終わって・・・1ヶ月!?


今年も今年なりに鬼畜なスケジュールですね・・・1ヶ月っておいおい・・・。


ま。1ヶ月だろうと半年だろうと勝つときは勝つ。負けるときは負ける。というものなので、

そこらへんは考えても仕方がないことなのですけどね。

ここ数年、というより高専に入ってからは負けてばっかりだけど・・・。


まぁそれでも今年は部員もたくさん。チーム戦にもなった訳ですし、

今までと違う、新しい戦い方ができて面白いんじゃないかな。


まぁ色々考えた結果ですが、

とりあえず今年の目標は全国大会出場というペースでいこう。というより、それが限界なような・・・

まぁまだチームや参加競技も決まってないし、上級生がほとんどいない今のロボカップじゃ

ここから半年で1年生を教えきるのは無理ですから・・・ロボコンもあって活動できないし・・・


という訳でこの目標値にセットしたわけです。いきなり世界大会!なんて大きなものを出しても実感・・・

というよりどこまでやればそのレベルにまで到達できるのかという見通しが本人たちの中で立たないから

世界大会なんてものはとても目標にはできませんね。


まぁ僕自身が既に2年以上ジャパンオープンには行っていませんが・・・(やっぱ実力の問題?)


なのでやっぱりこれくらいが妥当かなぁ。という結論です。


一時期は黄金時代とも呼ばれていましたが、関東全滅の現状を見る限り、

もう産技高専のロボカップ部は遠征なんて行けるようなレベルにありませんからね。

ここらでちょっと目標を下げておかないと・・・。


といった次第です。まぁ今度の会議でどのようになるかで方針が決まるとは思いますが。

因みに、その会議は試験明けの6月の13日に予定されました。

部員の人はきっと後でメールが逝くのでその時に詳細をチェックしてください。


という訳で今日は以上です。


(^・ω・)ノRadiumProduction in RoboCupJunior

P.s:あ。目標ってのはロボカップ1年目の1年生の目標ですよー。
やっぱりアセンブラだ・・・(汗)


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
The Flow Rate Sensor 

そのままエキサイトにつっこんだらこうなりました。意味が分かりませんね。

まぁ普通に訳せば流量センサー?みたいな意味になるのかな?

そんなセンサーを発見してきました。

流量センサーです。プロペラがくっついているあたりがなんとも・・・面白い(笑)

とりあえず「流量」を測定します。なんの流量かというと・・・

水蒸気(原発!?)とか空気とかもできるみたいですが、

どうやら主には水の中に沈めて川の流れなどを測定するもののようです。

まぁ川といっても海外の川は、日本の川みたいな渓流じゃなくて、飛行機が不時着できるぐらいの大きなものですけど。

恐らく日本の川みたいなのは・・・無理なんじゃないかと勝手に推測します。



環境地球科学研究のためセンサーだそうなので、

これも使用用途的には、若干小学校の理科の実験を思い出させる物がありますね。

でもお値段はというと$176


なんかバーニアのセンサーって値段がおかしい気がするのは僕だけでしょうか?

やっぱりそれだけ精度がいいのかなぁ。それとも秋葉価格に慣れた自分がおかしいのか?


答えは闇の中ですね。きっと永遠に(笑)


という訳でまたロボカップジュニアでは使えそうもないセンサーの紹介でした。

風とか読めたら面白そうだなぁ。

(^・ω・)ノRadiumProduction in RoboCupJunior
やっぱりAtomだと限界が・・・Core2Duoのノートが欲しい。

なんて考えている今日この頃です。

でも買っちゃうと僕のノーパが5台に・・・それはちょっと多すぎる(笑) 

まぁ4台でもレポートやるにはこれくらいないときついですね。個人的には。


そんな感じで今日は以前に予告したようにコンパイラの話です。

とりま、コンパイラってなんでしょうって話は全壊前回したと思います。

詳しくはC言語基コンパイラ言語についての記事を参照して下さい。

といっても、全然詳しく書かれてないですけど(笑)

まぁここではとりあえず、「コンパイラ=翻訳機」である。といった感じのことは説明したと思います。

でもちょっと英語できる人だと疑問に思うのがこの点、

コンパイルは英語にするとcompile

これを日本語に直訳すると「編集する」という意味になるんです。


まぁ翻訳も編集のひとつかもしれませんが、そもそも翻訳するだけなら”とらんすれーしょん”でいいと思いませんか?

なんでわざわざコンパイルというんでしょうか。


まぁコンパイルの語源はともかく、結局コンパイラって、翻訳の為のものではあるけど、

「翻訳だけ」している訳じゃないんです。寧ろこっちの方が翻訳より大事かも知れないですね。

そのコンパイラが担当しているもうひとつの役目とは何か。という話ですが、その前に。

皆さん。プログラムって完璧に書けますか?

100%ミスなしでプログラム、作れます?

まぁ簡単なプログラムならできるでしょうけど、

複雑なプログラムなら大体1個や2個は気が付かない打ちミスとかがでてきます。


そのミスをそのまま放置して、機械語に翻訳させて、

ロボットに送ってその間違ったプログラム、実行させたらどうなると思います?


どうなるんでしょうね(笑)

静かにお亡くなりになるかも知れないし、いきなりロボットは真赤に輝きだすかもしれない。

頭のいいLEGOだったらFileErrorで済むかもしれませんけど・・・。ちょっと怖いですよね。

だからみんなちゃんと、プログラムは確認してからロボットに送りますが、それでも確認しているのも人間なので

やっぱり抜けが出ますよね。

でも、こういった打ちミス等の構文的なミスをした際に、

PC側でロボットに送られる前にそれがチェックできたら便利だと思いません?

そう思った先人達はそういった機能、即ちエラー発見機能を作ってしまいました。


それでそれをコンパイラに搭載してしまいました。つまり、翻訳の時に間違いがあったら

「ここおかしいぞ」と教えてくれるようなものを作ってしまったのです。

これによってコンパイラの機能は「翻訳」だけではなく、「エラー検出」も加わることになり、

文字通りプログラムの編集者として世に送り出されることになったのです。(ということらしいです)


因みに現実の翻訳家は明らかに文法とかがおかしかったりしても、

大体翻訳家の方で勝手に脳内修正して翻訳するらしいのでまだ翻訳作業に関しては現実の方が上ですね。


あ。エラーの検知といっても、明らかにやりたいことと違うプログラムを書いたり、括弧がなかったりしても

文法的にさえあっていれば、コンパイルは大体通っちゃうので

コンパイルが通ったからと言って実際に動かしたいように動くかというと、それはまた別の話だったりします。

これは現実の翻訳家でも同じですね。「これ明らかにおかしいだろー」って文章があっても、

とりあえず原文を尊重して原文のまま訳すのが翻訳家の仕事ですから。
まぁ最近は原文の著者に確認を取るケースも増えてきているらしいですが・・・


という訳でこの「翻訳」と「エラー検知」がコンパイラの2つの大きな役割です。という記事でした。

なのでコンパイルが正しく行われないと、プログラムを実行したり、ロボットに送ったり、ができないようになっています。

つまり、プログラムをロボットに送る前には必ず「コンパイル」という手順を踏まないといけません。


それを踏まないままプログラムを送信したり、実行しても、送ったプログラムは実行されません。

その場合は何も実行されないor最後にコンパイルして送信したプログラムが実行されるような仕様になっています。


因みにROBOLABNTX-GとかNQCNXCNBCの場合はプログラムの送信ボタンを押すと、

勝手にコンパイル+送信を一気にやってくれていたりします。


(^・ω・)ノRadiumProduction in RoboCupJunior
今、NBC内で「Cでいう配列」を探すという作業に明け暮れています。

あるっぽいんだけど・・・使い方が微妙に謎。

Cと同じでいいのかなぁ。

(^・ω・)ノRadiumProduction in RoboCupJunior 

P.S頭逝った状態で適当な記事を投稿した訳です、が「今、明け暮れている」って日本語的にどうなんだろう。

因みにまだ使い方わかりませーん。
最近はマイコンサボってNXTで遊ぶようになりました。(若干PICに飽きたというところもあるのですが・・・)


という訳で今日はNBCで遊んでみました。

まずは単純にライントレースを・・・

と思ったら、意外とめんどくさい・・・

まだほとんどなんもやってないのでわからないんですが、さら見した感じだと、

C言語でいうif文的なにかは無論ないっぽいんですね。NBCならあると思ったのに・・・


あるのはジャンプと条件ジャンプだけ。うーん。やっぱりCとは違うんだなぁ。ASM寄りなのは間違いないですね。


という訳でプログラムもROBOLABNXCとは全然違う考え方で作らないといけません。だって分岐もループもないし・・・

あれですね。ROBOLABでいうと、イベントとジャンプの羅列みたいなプログラムになりますね。


ASMやった時も大分死にましたが、今回もすごくそんな感じの臭いがします。


でも僕が何で、NBCを使うようになったかというと、非常に大きい理由はこれです。

「プログラムの処理速度がNXCと比べて格段に早い」

同じBricxCCなのに・・・こっちのほうが10倍以上はやいです。センサーの読み込みも3倍以上早いですし・・・

まぁ元々NXCはそこまで処理の早い言語形態ではないですから・・・仕方ないですけど。


という訳で今後もしばらくはNBCを続けていこうと考えています。

でも、どうやらNBCI2Cのラインはできないっぽいので結局RobotCを使うことになるのかもなぁ・・・

RobotCの処理速度が馬鹿みたいに遅くない限りはRobotCを使うことになると思います。

うーん。手を出す言語が多すぎるのも困りものだなぁ・・・


(^・ω・)ノRadiumProduction in RoboCupJunior



今日もひとり部員が増えてくれました。

他にも見学に一人来てくれて、明日の見学希望 もひとり出てくれています。


なんか某航空会社が仕事をしないせいで、殆ど4組になっているのが気になりますが。

まぁ何組であろうと、そんなことは問題にはなりませんから、大丈夫でしょう。

とりあえず部員の目標数には達しそうです。なんとか、といったところでしょう。

まぁ』これで部員の問題は解決。


次に浮上してくる問題は、活動場所、PC、ロボット、金、指導時間

・・・山盛りだ・・・。活動所はなんとかするとして、(部室は狭くて全員はいらないので・・・)

PCとロボット、これはまず何台必要なのかを明確にしないと詰みますね。とりあえず部員募集を締め切ってからで・・・

金、上に同じく。PICをはじめたい子がいるらしいので、それに必要な物品を買わないと。という訳です。

でも部費ってまだあるのかなぁ。


そして最後の問題が1年生の指導ですね。

とりあえず来週から1年生は試験2週間前で部活ができないので、実際の講座は、中間後になるのですが、

さて、なにをやるか。とりあえずLEGO組は最初1~2週間程度はROBOLABでプログラムの基礎を勉強させ、

そっからNXCNQCかなぁ・・・という感じになるのですが、

さて、RCXNXTどっちにしよう・・・。

数的にRCXになりそうな雰囲気がありますが、2人1組ならNXTでも・・・できるのかな?

PICの子は一人しかいないからてきとーにさっさーと教えれば何とかなりそうな感が(笑)

といった感じのことを今日話していました。が、結果は出ず(笑)

という訳でその辺りのこともしっかりしないと・・・。


まぁROBOLABなら教えられる子が1年生にも何人かいるので、そっちに任せちゃおうかな・・・


こんなに新入部員がきたのは前例がない(筈)なので大変ですが頑張っていこう。うん。

という訳でこれにて。

(^・ω・)ノRadiumProduction in RoboCupJunior


P.s結局部長になりまった。
なんか波が来ました。一年生のおかげですね。

自分ニートなもんで・・・(笑)

ってか本当は自分で勧誘したかったんだけど、今日の昼は忙しすぎて・・・orz

チラシ作って朝渡すのが精一杯でした><。



というわけで、新入部員が、5人、増えました。

そのうちサッカー経験者が一人。なんとトゥルースの子です。日吉だそうな。


という訳で既にいる二人も合わせてこれで7人。今までにない数ですね。


でも、まともに大会に出る体制を整えるには、まだ最低でも3人は必要で・・・

まだまだ勧誘祭りは続きます。

因みに今2人ほど入部したいという子が現れているので、その子たちを釣り上げられれば、あと一人となります。

なので勧誘はそこまで頑張んなくても大丈夫かな?まぁ多い分には・・・かまわ・・なくもないけど。


という訳で1年生の新入部員は当初の最低人数を超えて10人となりました。

10人も入部させて統率取れんのか・・・非常に不安ですが(笑)

恐らくうちの部活がこんなに新入部員が必要になることなんか今までなかったと思うんですよね。


あー全てはルール改定が・・・。

文句ばかりも言えませんが(笑)

とりあえず新入部員(ロボカップジュニア初心者)達には明日、明後日とLEGOに触れてもらおうということで

体験学習的な何かをしてみよう、というよりさせてみようと考えています。

んでもってその後LEGO組は、RCXを二人一組で借りて、初歩的なことを学ばせる講習を行い、

PIC組は・・・どこから話せばいいんだ(笑)

僕の時は何故か回路を学ぶ前にPICを最初にやって、

一番最初にやったことがサーボモーター制御という鬼畜っぷりだったので全く参考にもなりゃしない・・・

まぁ適当に回路のことから参りましょうか。まぁPICに関しては自己学習させてみようかな。


さて、ここでひとつ困ったことが。

LEGO組のロボット。プログラミングソフト何使わせようか。

最初ROBOLABを考えたんですけど、あんなの使っても仕方ないし・・・やっぱNQC?

でも教える余裕あるかな・・・2年前はそれで失敗してるし・・・


まぁちょっと考えてみます。


という訳で今日はこの辺で

(^・ω・)ノRadiumProduction in RoboCupJunior
カレンダー
02 2026/03 04
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
最新CM
[05/09 ONE RoboCuper]
[05/07 HDD ほしいよー]
[04/21 ブラック3辛]
[12/26 bols-blue]
[06/08 ONE RoboCuper]
かうんた
カウンター カウンター
らじぷろ目次
らじぷろ検索機
プロフィール
HN:
Luz
性別:
男性

PR

忍者ブログ 2007-2021,Powered by Radium-Luz-Lα+-Rescatar in RadiumProduction [PR]


Related Posts Plugin for WordPress, Blogger...