- 履歴一覧
- ソース を表示
- 2004/C5/腕 は削除されています。
- 1 (2005-02-14 (月) 08:44:59)
- 追加された行はこの色です。
- 削除された行はこの色です。
[[2004/C5/ロボコンプログラム]]
本当はタッチセンサー・光センサーを搭載していたのですが、本番直前まで、うまく機能しなかったため、センサーを外し、秒数のみで勝負することにしました。
本当に急だったため、センサー搭載型のプログラムは残っていません。
秒単位で細かく動作させるため、subパーツを細かくして時間調整をやりやすくしています。
本来REPEATの後は、箱を光で感知したら、下半身に停止を通信し、クレーンを下げ、箱を捕らえたということをタッチで認識したら、通信で下半身が箱置場に動くように組んでいました。
/*udeDX*/
#define RUN_TIME 500//トレースする時間(単位 1/10 秒)
sub tukami1() //箱を掴む前に手首の状態を整えるプログラム
{
Off(OUT_A+OUT_C);
SetPower(OUT_A,6);
SetPower(OUT_C,3);
OnRev(OUT_C);
}
sub tukami2() //箱を掴むプログラム
{
Off(OUT_A+OUT_C);
SetPower(OUT_A,6);
SetPower(OUT_C,4);
OnRev(OUT_C);
}
sub motiage() //最初に腕の持ち上げを行うプログラム
{
Off(OUT_A+OUT_C);
SetPower(OUT_A,4);
SetPower(OUT_C,3);
OnFwd(OUT_A);
}
sub motiage4() //箱を掴んでから重力で下がらないために、引き上げるプログラム
{
Off(OUT_A+OUT_C);
SetPower(OUT_A,0);
SetPower(OUT_C,0);
OnFwd(OUT_A);OnRev(OUT_C);
}
sub motiage3() //箱を掴んでから引き上げる時のプログラム
{
Off(OUT_A+OUT_C);
SetPower(OUT_A,6);
SetPower(OUT_C,2);
OnFwd(OUT_A);OnRev(OUT_C);
}
sub hazusi() //箱を置く・手のスタート時の状態を維持するプログラム
{
Off(OUT_A+OUT_C);
SetPower(OUT_A,6);
SetPower(OUT_C,7);
OnFwd(OUT_C);
}
sub motisage() //腕を下げるプログラム
{
Off(OUT_A+OUT_C);
SetPower(OUT_A,6);
SetPower(OUT_C,6);
OnRev(OUT_A);
}
task main()
{
SetSensor(SENSOR_1,SENSOR_TOUCH);
SetSensor(SENSOR_2,SENSOR_LIGHT);//箱掴み確認用
hazusi();Wait(608); //スタート時に手が下がらないように押えておきます
motiage();//腕を持ち上げるように受信
Wait(310);
Off(OUT_A+OUT_C); //腕手、上方で停止
Wait(190); //スタンバイ完了、
repeat(10) //着地後の行動指令です
{
motisage();Wait(100); //腕を下げる
tukami2();Wait(100); //手をげる
motiage3();Wait(180); //腕を持ち上げる
Off(OUT_A+OUT_C);Wait(700); //箱置場まで待機
hazusi();Wait(208); //箱を置く
Off(OUT_A+OUT_C);Wait(558);
motisage();Wait(200); //腕を下げて着地直後の状態に戻す
Off(OUT_A+OUT_C);Wait(50);
hazusi();Wait(200); //地面に引っかからないように手を固定
motiage();Wait(330); //腕を持ち上げるように受信
Off(OUT_A+OUT_C);Wait(190); //腕手、上方で停止
//再スタンバイ完了
}
}