2008a/A5/課題2右
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2008a/MemberOnly/進行状況A]]&br;
[[2008a/A5]]
&br;
&br;
*目次 [#o49434bf]
#contents
*課題2:黒い線に沿って動くロボット [#u31cdd57]
**課題の内容 [#kd883136]
・速さと正確さを追求すること
・交差点で優先側を走っていない場合には、一時停止すること
・前方にあるもう一台のロボットに接触した場合には停止して相手のロボットが行き過ぎる、あるいは距離が離れるのを待つこと
・コースを3周したら自動的に止まること
*作成したロボット [#i66eb931]
タッチセンサーと光センサーをロボットの前方に組みんで、光センサーは黒い線を挟み込むように2個用いた。
#ref(http://yakushi.shinshu-u.ac.jp/robotics-photo/2008a/2008-06-19/cimg0786_Medium.jpg)
モーターには車輪をつなげ、正確に走ることができるようにした。
#ref(http://yakushi.shinshu-u.ac.jp/robotics-photo/2008a/2008-06-19/cimg0787_Medium.jpg)
*走らせたコース [#n8cf61ae]
#ref(http://yakushi.shinshu-u.ac.jp/robotics-photo/2008a/2008-06-19/cimg0784_Medium.jpg)
交差点を3つつくった。
*プログラム [#neb0b733]
#define THRESHOLD 40 //閾値を32に設定
#define go OUT_A+OUT_C
#define RUN_TIME 1400
task main()
{
start line_trace; //ライントレーススタート
start check_touch; //衝突の感知のスタート
}
task line_trace()
{
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサ1に光センサを定義
SetSensor(SENSOR_3,SENSOR_LIGHT); //センサ3に光センサを定義
ClearTimer(0);
while( Timer(0) <= RUN_TIME){ {
if(SENSOR_1 > THRESHOLD){
if(SENSOR_3 > THRESHOLD){ //両方のセンサが白を感知
OnFwd(go); //前進する
} else{ //左が白、右が黒を感知
OnFwd(OUT_A);OnRev(OUT_C);
//右に曲がる
}
}else{
if(SENSOR_3 > THRESHOLD){ //左が黒、右が白を感知
OnFwd(OUT_C);OnRev(OUT_A);
//左に曲がる
}else{ //両方のセンサが黒を感知
OnRev(go);Wait (80); //0.8秒間 後進
Off(go);Wait(100); //1秒間停止する
OnFwd(go);Wait (230); //2.3秒間前進
}
}
}
}
task check_touch()
{
SetSensor(SENSOR_2,SENSOR_TOUCH); //センサ2にタッチセンサを定義
while(true){
if(SENSOR_2 == 1){ //バンパーが衝撃を感知
stop line_trace; //ライントレース一時停止
OnRev(go); Wait(100);
Off(go);Wait(200); //2秒間停止する
start line_trace; //ライントレース再開
}
}
*苦労した点、がんばった点 [#pc5f08e0]
・一時停止する前に一度バックをして、優先車両が走りやすいようにした。
・光センサーが正しく作動するような位置を考えるのに苦労した。
*未解決な問題、今後の課題 [#b02dee25]
・機体にもろい部分があり、分解しないように扱わなければいけなかった。&br; &br;
・3周して止めるのに時間を使っていたので、時間を使わないで止める方法を考えたい。
*感想 [#k4fbc7a8]
・プログラムをつくるのに時間がかかった。あと面倒だった。&br; &br;
・コースの幅が少し狭かったかもしれない。
*コメントお願いします。 [#t70c9768]
#comment
終了行:
[[2008a/MemberOnly/進行状況A]]&br;
[[2008a/A5]]
&br;
&br;
*目次 [#o49434bf]
#contents
*課題2:黒い線に沿って動くロボット [#u31cdd57]
**課題の内容 [#kd883136]
・速さと正確さを追求すること
・交差点で優先側を走っていない場合には、一時停止すること
・前方にあるもう一台のロボットに接触した場合には停止して相手のロボットが行き過ぎる、あるいは距離が離れるのを待つこと
・コースを3周したら自動的に止まること
*作成したロボット [#i66eb931]
タッチセンサーと光センサーをロボットの前方に組みんで、光センサーは黒い線を挟み込むように2個用いた。
#ref(http://yakushi.shinshu-u.ac.jp/robotics-photo/2008a/2008-06-19/cimg0786_Medium.jpg)
モーターには車輪をつなげ、正確に走ることができるようにした。
#ref(http://yakushi.shinshu-u.ac.jp/robotics-photo/2008a/2008-06-19/cimg0787_Medium.jpg)
*走らせたコース [#n8cf61ae]
#ref(http://yakushi.shinshu-u.ac.jp/robotics-photo/2008a/2008-06-19/cimg0784_Medium.jpg)
交差点を3つつくった。
*プログラム [#neb0b733]
#define THRESHOLD 40 //閾値を32に設定
#define go OUT_A+OUT_C
#define RUN_TIME 1400
task main()
{
start line_trace; //ライントレーススタート
start check_touch; //衝突の感知のスタート
}
task line_trace()
{
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサ1に光センサを定義
SetSensor(SENSOR_3,SENSOR_LIGHT); //センサ3に光センサを定義
ClearTimer(0);
while( Timer(0) <= RUN_TIME){ {
if(SENSOR_1 > THRESHOLD){
if(SENSOR_3 > THRESHOLD){ //両方のセンサが白を感知
OnFwd(go); //前進する
} else{ //左が白、右が黒を感知
OnFwd(OUT_A);OnRev(OUT_C);
//右に曲がる
}
}else{
if(SENSOR_3 > THRESHOLD){ //左が黒、右が白を感知
OnFwd(OUT_C);OnRev(OUT_A);
//左に曲がる
}else{ //両方のセンサが黒を感知
OnRev(go);Wait (80); //0.8秒間 後進
Off(go);Wait(100); //1秒間停止する
OnFwd(go);Wait (230); //2.3秒間前進
}
}
}
}
task check_touch()
{
SetSensor(SENSOR_2,SENSOR_TOUCH); //センサ2にタッチセンサを定義
while(true){
if(SENSOR_2 == 1){ //バンパーが衝撃を感知
stop line_trace; //ライントレース一時停止
OnRev(go); Wait(100);
Off(go);Wait(200); //2秒間停止する
start line_trace; //ライントレース再開
}
}
*苦労した点、がんばった点 [#pc5f08e0]
・一時停止する前に一度バックをして、優先車両が走りやすいようにした。
・光センサーが正しく作動するような位置を考えるのに苦労した。
*未解決な問題、今後の課題 [#b02dee25]
・機体にもろい部分があり、分解しないように扱わなければいけなかった。&br; &br;
・3周して止めるのに時間を使っていたので、時間を使わないで止める方法を考えたい。
*感想 [#k4fbc7a8]
・プログラムをつくるのに時間がかかった。あと面倒だった。&br; &br;
・コースの幅が少し狭かったかもしれない。
*コメントお願いします。 [#t70c9768]
#comment
ページ名: