ETロボットにおける制御-まいまい式-
照明の当たりかたなどによって、光センサから取得される
黒線の明るさや白の明るさが、コース上で大きく異なることもよくあります。
さらに、コース上にできるロボット自身の影によっても光センサから取得される値が
ライントレースを行う際には閾値を利用してライン上の黒線と白地を認識しているのですが、
外乱光によって取得される光センサの値が変わってしまうと、
この白と黒の認識がうまく行えなくなります。
外乱光に対応するために、まいまい式というのが提案されています。
まいまい式に関しては以下のブログが詳しいです。
すねいる ETロボコン日記
http://www.chihayafuru.jp/etrobo/?p=1349
さらに、まいまい式のサンプルコードも公開されています。
http://www.chihayafuru.jp/etrobo/?p=1326
このサンプルコードを参考に、TECS上でまいまい式を実装しました。
20ms周期で光センサに搭載されているLEDのon/offを繰り返して、LEDオン時の光センサの値とLEDオフ時の光センサの差分を利用しています。
今回、10ms周期で動く、ライントレースを行うタスク(tLinetracerTaskBody.c)上に実装しました。
以下がそのサンプルコードです。
if(count%4==0){
//LEDon時の光センサの値を取得
cLightSensor_getValue(&lightUpperd);
cLightSensorControl_off();
}else if(count%4==2){
//LEDoff時の光センサの値を取得
cLightSensor_getValue(&lightDowned);
cLightSensorControl_on();
}
if(lightUpperd != 0 && lightDowned != 0){
light = VAR_lightThreshold;
if(lightDowned - lightUpperd > 0){
lightDiff = lightDowned - lightUpperd;
}else{
lightDiff = 0;
}
k = (1.0382e-3 * lightDowned - 6.3295e-1) * lightDowned + 1.1024e+2;
//LEDon時を基準に補正
brightness = (float32_t)200 + (float32_t)(lightUpperd - lightDiff * 450 / k);
light=(uint16_t)(brightness);
}
count++;
TECS上で光センサのLEDをオン/オフ操作は、
cLightSensorControl_off();
cLightSensorControl_on();
で出来ます。
タスクが一度立ち上がるたびにcountを加算し、その値を4で割ったあまりを使って
補正係数kはサンプルコードの値を利用させていただきました。
サンプルコードでは、コース明度の計算をlightDiff / kとされていましたが、
LEDon時に取得される光センサの値を基準に、扱い易くするため適当な値(200, 450)を用いて補正しています。
まいまい式を利用したことで、コースの一部にライトを当てても、
ETロボットにおける制御
ロボットの動作、特に速度を競うようなロボコンにおいて、制御はとても重要です。
制御として、最も有名なPID制御について今回説明します。
PID制御とは
[wiki]PID制御(ピーアイディーせいぎょ = Proportional Integral Derivative Controller)は、フィードバック制御の一種であり、入力値の制御を出力値と目標値との偏差、その積分、および微分の3つの要素によって行う方法のことである。制御理論の一分野をなす古典制御論の枠組みで体系化されたもので長い歴史を持っている。フィードバック制御の基礎ともなっており、様々な制御手法が開発・提案され続けている今に至っても、過去の実績や技術者の経験則の蓄積により調整を行いやすいため、産業界では主力の制御手法であると言われている。
となっています。
ちなみに、
です。
PID制御ですが、一言で言うと、現在と過去の状態と未来の状態を予測して制御量を決める制御です。
詳しくは、以下のページに書いてあります。
参考にしたページ
@IT MONOist [滑らかで安定したライントレースを実現する (1/2)]http://monoist.atmarkit.co.jp/mn/articles/1007/26/news083.html
TECS講座2
周期タスク(複合セルタイプ(複合コンポーネント))について。
TECSでは、利用者が周期タスクを生成するだけで勝手に周期的に動作してくれるタスクが存在する。
周期タスクを使う上で必要なのが組み上げ記述です。
以下にコードを示す。
cell tCyclicTask CounterTask{
/* 周期タスクの属性の設定:カーネル起動時の周期タスクの状態
* TA_STA:起動, TA_NULL(デフォルト):休止状態
*/
cyclicAttribute = C_EXP(“TA_STA”);
/* 起動周期(ミリ秒) */
cyclicTime = 1000;
/* 起動位相 */
cyclicPhase = 1;
/* タスクの優先度 */
priority = 5;
/* スタックサイズ */
stackSize = 1024;
/* タスク処理本体と結合 */
cBody = CounterTaskBody.eBody;
};
ETロボコンでは、ライントレースを行う上で周期的にセンサ値を取得し、動作に結び付けなければいけない。
そのような際に、周期タスクが便利である。
TECS講座
まずはじめに、TECSの基礎から。
以下の図で示すものが、TECSコンポーネントである。
TECSを利用する上で絶対に必要な知識なので覚えておこう。
セル(コンポーネント インスタンス)は
– 呼び口、受け口を持つ
– 属性、内部変数を持つ(図示しない)
– セルタイプに属する(セルタイプコードとして振舞いを記述)
– 名前が付けられる
– (イベント、メッセージを扱うようなものはない.時間制約等もない)
次に重要なのが、シグニチャ記述と呼ばれるもので、これはいわゆるインタフェース記述である。
(例)
signature sSoundController{
void soundOn([in] int32_t type);
};
引数の入出力方向の指定は次の様に書きます。
– in ...関数への入力
– out ... 関数からの出力
– inout ... 関数の入力/出力
例のコードでは、関数へint32_t型の引数を入力している。
このシグニチャを使ってセルタイプつまりコンポーネントの定義を行います。
イメージとしては、コンポーネント間を繋いでくれる橋みたいなもの!
(例)
celltype tApp{
call sFile cCallPort;
}
celltype tFile{
entry sFile eEntryPort
}
VirtualBoxでMac標準搭載のBluetoothをホストのWindows7で使う方法
TECS環境構築-ERROR編part2-
前の記事で書いていたERRORの回避策を示す。
回避策は、2つある。
1つ目は、Cygwinのバージョンを1.71にする。
2つ目は以下の通りである。
-----------------------------------------------------------
回避方法としては、以下の環境変数を設定してください。 % export TECS_CPP="arm-none-eabi-gcc -E -D TECS" デフォルトでは C pre-processor として gcc が使われます。 この結果、システムのヘッダファイルとして gcc のレジデント用のものが使用 されてしまいます。 arch/gcc/tool_stddef.h から include している /usr/include/limits.h をた どっていくと stdint.h が include されていました。 一方、arm-2009q1/arm-none-eabi/include/limits.h からは stdint.h は include されていないようです。 環境変数を設定することで、ヘッダのサーチパスが変わり arm 用の limits.h が取り込まれます。 なお、古い環境でビルドする場合も、上記の環境変数を設定するほうが、より正 確なビルドができると言えそうです。 回避策としては、 -I で arm のものを指定することも考えられます。
-----------------------------------------------------------
TECS環境構築-ERROR編-
cygwinの最新版でTECS環境を構築するとエラーが起きる。
ERRORの内容としては、以下のように表示される。
$ make tecsgen version 1.1.0.2 copyright(c) 2008-2012, TOPPERS project In file included from ../../target/mindstorms_nxt_gcc/target_stddef.h:62:0, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: ../../arch/gcc/tool_stddef.h:159:0: warning: "INT8_MAX" redefined [enabled by default] In file included from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include/stdint.h:3:0, from /usr/include/sys/cdefs.h:45, from /usr/include/features.h:14, from /usr/include/limits.h:14, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:169, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/syslimits.h:7, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:34, from ../../arch/gcc/tool_stddef.h:81, from ../../target/mindstorms_nxt_gcc/target_stddef.h:62, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: /usr/include/stdint.h:132:0: note: this is the location of the previous definition In file included from ../../target/mindstorms_nxt_gcc/target_stddef.h:62:0, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: ../../arch/gcc/tool_stddef.h:160:0: warning: "INT8_MIN" redefined [enabled by default] In file included from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include/stdint.h:3:0, from /usr/include/sys/cdefs.h:45, from /usr/include/features.h:14, from /usr/include/limits.h:14, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:169, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/syslimits.h:7, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:34, from ../../arch/gcc/tool_stddef.h:81, from ../../target/mindstorms_nxt_gcc/target_stddef.h:62, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: /usr/include/stdint.h:127:0: note: this is the location of the previous definition In file included from ../../target/mindstorms_nxt_gcc/target_stddef.h:62:0, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: ../../arch/gcc/tool_stddef.h:161:0: warning: "UINT8_MAX" redefined [enabled by default] In file included from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include/stdint.h:3:0, from /usr/include/sys/cdefs.h:45, from /usr/include/features.h:14, from /usr/include/limits.h:14, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:169, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/syslimits.h:7, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:34, from ../../arch/gcc/tool_stddef.h:81, from ../../target/mindstorms_nxt_gcc/target_stddef.h:62, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: /usr/include/stdint.h:137:0: note: this is the location of the previous definition In file included from ../../target/mindstorms_nxt_gcc/target_stddef.h:62:0, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: ../../arch/gcc/tool_stddef.h:163:0: warning: "INT16_MAX" redefined [enabled by default] In file included from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include/stdint.h:3:0, from /usr/include/sys/cdefs.h:45, from /usr/include/features.h:14, from /usr/include/limits.h:14, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:169, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/syslimits.h:7, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:34, from ../../arch/gcc/tool_stddef.h:81, from ../../target/mindstorms_nxt_gcc/target_stddef.h:62, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: /usr/include/stdint.h:133:0: note: this is the location of the previous definition In file included from ../../target/mindstorms_nxt_gcc/target_stddef.h:62:0, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: ../../arch/gcc/tool_stddef.h:164:0: warning: "INT16_MIN" redefined [enabled by default] In file included from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include/stdint.h:3:0, from /usr/include/sys/cdefs.h:45, from /usr/include/features.h:14, from /usr/include/limits.h:14, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:169, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/syslimits.h:7, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:34, from ../../arch/gcc/tool_stddef.h:81, from ../../target/mindstorms_nxt_gcc/target_stddef.h:62, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: /usr/include/stdint.h:128:0: note: this is the location of the previous definition In file included from ../../target/mindstorms_nxt_gcc/target_stddef.h:62:0, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: ../../arch/gcc/tool_stddef.h:165:0: warning: "UINT16_MAX" redefined [enabled by default] In file included from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include/stdint.h:3:0, from /usr/include/sys/cdefs.h:45, from /usr/include/features.h:14, from /usr/include/limits.h:14, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:169, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/syslimits.h:7, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:34, from ../../arch/gcc/tool_stddef.h:81, from ../../target/mindstorms_nxt_gcc/target_stddef.h:62, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: /usr/include/stdint.h:138:0: note: this is the location of the previous definition In file included from ../../target/mindstorms_nxt_gcc/target_stddef.h:62:0, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: ../../arch/gcc/tool_stddef.h:167:0: warning: "INT32_MAX" redefined [enabled by default] In file included from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include/stdint.h:3:0, from /usr/include/sys/cdefs.h:45, from /usr/include/features.h:14, from /usr/include/limits.h:14, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:169, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/syslimits.h:7, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:34, from ../../arch/gcc/tool_stddef.h:81, from ../../target/mindstorms_nxt_gcc/target_stddef.h:62, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: /usr/include/stdint.h:134:0: note: this is the location of the previous definition In file included from ../../target/mindstorms_nxt_gcc/target_stddef.h:62:0, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: ../../arch/gcc/tool_stddef.h:168:0: warning: "INT32_MIN" redefined [enabled by default] In file included from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include/stdint.h:3:0, from /usr/include/sys/cdefs.h:45, from /usr/include/features.h:14, from /usr/include/limits.h:14, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:169, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/syslimits.h:7, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:34, from ../../arch/gcc/tool_stddef.h:81, from ../../target/mindstorms_nxt_gcc/target_stddef.h:62, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: /usr/include/stdint.h:129:0: note: this is the location of the previous definition In file included from ../../target/mindstorms_nxt_gcc/target_stddef.h:62:0, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: ../../arch/gcc/tool_stddef.h:169:0: warning: "UINT32_MAX" redefined [enabled by default] In file included from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include/stdint.h:3:0, from /usr/include/sys/cdefs.h:45, from /usr/include/features.h:14, from /usr/include/limits.h:14, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:169, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/syslimits.h:7, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:34, from ../../arch/gcc/tool_stddef.h:81, from ../../target/mindstorms_nxt_gcc/target_stddef.h:62, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: /usr/include/stdint.h:139:0: note: this is the location of the previous definition In file included from ../../target/mindstorms_nxt_gcc/target_stddef.h:62:0, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: ../../arch/gcc/tool_stddef.h:171:0: warning: "INT64_MAX" redefined [enabled by default] In file included from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include/stdint.h:3:0, from /usr/include/sys/cdefs.h:45, from /usr/include/features.h:14, from /usr/include/limits.h:14, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:169, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/syslimits.h:7, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:34, from ../../arch/gcc/tool_stddef.h:81, from ../../target/mindstorms_nxt_gcc/target_stddef.h:62, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: /usr/include/stdint.h:135:0: note: this is the location of the previous definition In file included from ../../target/mindstorms_nxt_gcc/target_stddef.h:62:0, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: ../../arch/gcc/tool_stddef.h:172:0: warning: "INT64_MIN" redefined [enabled by default] In file included from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include/stdint.h:3:0, from /usr/include/sys/cdefs.h:45, from /usr/include/features.h:14, from /usr/include/limits.h:14, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:169, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/syslimits.h:7, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:34, from ../../arch/gcc/tool_stddef.h:81, from ../../target/mindstorms_nxt_gcc/target_stddef.h:62, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: /usr/include/stdint.h:130:0: note: this is the location of the previous definition In file included from ../../target/mindstorms_nxt_gcc/target_stddef.h:62:0, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: ../../arch/gcc/tool_stddef.h:173:0: warning: "UINT64_MAX" redefined [enabled by default] In file included from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include/stdint.h:3:0, from /usr/include/sys/cdefs.h:45, from /usr/include/features.h:14, from /usr/include/limits.h:14, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:169, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/syslimits.h:7, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:34, from ../../arch/gcc/tool_stddef.h:81, from ../../target/mindstorms_nxt_gcc/target_stddef.h:62, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: /usr/include/stdint.h:140:0: note: this is the location of the previous definition In file included from ../../target/mindstorms_nxt_gcc/target_stddef.h:62:0, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: ../../arch/gcc/tool_stddef.h:175:0: warning: "INT_LEAST8_MAX" redefined [enabled by default] In file included from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include/stdint.h:3:0, from /usr/include/sys/cdefs.h:45, from /usr/include/features.h:14, from /usr/include/limits.h:14, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:169, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/syslimits.h:7, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:34, from ../../arch/gcc/tool_stddef.h:81, from ../../target/mindstorms_nxt_gcc/target_stddef.h:62, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: /usr/include/stdint.h:149:0: note: this is the location of the previous definition In file included from ../../target/mindstorms_nxt_gcc/target_stddef.h:62:0, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: ../../arch/gcc/tool_stddef.h:176:0: warning: "INT_LEAST8_MIN" redefined [enabled by default] In file included from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include/stdint.h:3:0, from /usr/include/sys/cdefs.h:45, from /usr/include/features.h:14, from /usr/include/limits.h:14, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:169, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/syslimits.h:7, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:34, from ../../arch/gcc/tool_stddef.h:81, from ../../target/mindstorms_nxt_gcc/target_stddef.h:62, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: /usr/include/stdint.h:144:0: note: this is the location of the previous definition In file included from ../../target/mindstorms_nxt_gcc/target_stddef.h:62:0, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: ../../arch/gcc/tool_stddef.h:177:0: warning: "UINT_LEAST8_MAX" redefined [enabled by default] In file included from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include/stdint.h:3:0, from /usr/include/sys/cdefs.h:45, from /usr/include/features.h:14, from /usr/include/limits.h:14, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:169, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/syslimits.h:7, from /usr/lib/gcc/i686-pc-cygwin/4.7.3/include-fixed/limits.h:34, from ../../arch/gcc/tool_stddef.h:81, from ../../target/mindstorms_nxt_gcc/target_stddef.h:62, from ../../include/t_stddef.h:68, from ../../include/kernel.h:67, from ../../include/tecs_kernel.h:1, from gen/tmp_C_src.c:1: /usr/include/stdint.h:154:0: note: this is the location of the previous definition make: *** [tecs.timestamp] Error 1