主頁 > Human Robot, Robot Programming, Robot TK01, TK01, 機械人, 機械人製作, 二足機械人 > 介於靜步行及Leg Shift 之間 ?!

介於靜步行及Leg Shift 之間 ?!

今次的 Shift Program 是重新 Programming 過的,同之前的 Shift Program 不同之處是今次將所有
Servo 的速度全分開,即是現在用的 12隻 Servo ( 腳 ) 及 1隻 ( 腰 ) 的 Servo 全可調不同的速度,
雖然現在還是將所有調到 Speed 1,但可以當係一個 Speed Control 的練習。
現在已把腳板加大,腰部亦找了一件每個人用完即棄的廢物固定,但係呢件物料我覺得非常好用,
有機會下次話你知 …… 哈哈 …
下一步的 Program 會首先進行 Location Store 練習先,因現在的 Program 容量非常大,
已到 1290 Words , 而且如果要 debug 非常唔方便 ……
P.S.  Victor 及 R
請問以下 Program 除了 Location Store 有沒有什麽可改進呢?個寫法又對不對呢?
另P.S. Victor , 上次跟你提及在 Program 時,比一個時間等所有轉向不同角度的 Servo 能在同一時間完成,
有沒有機會做到呢?Thank You 先
Example: 5秒內同時完成
Servo 1 轉 20 degree
Servo 2 轉 40 degree
Servo 3 轉 60 degree
// Shift test with speed control
// Action: Standup than Shift centre to left & Right
// by Blood Keith 21 Mar 2007
#define SERVO_START 0  // first servo pin
#define SERVO_END 20  // last servo pin
int rone,rtwo,rthr,rfour,rfive,rsix,lone,ltwo,lthr,lfour,lfive,lsix,speed;     // Varibles
//int Pos[21];
main()
{
writes(“9600″, 500);
// sys(0, 0);                               // select COM port 0
sys(0, 1);                                  // select COM port 1
setcomm(9600);
delay(2000);
set_servo_one_speed(1);
set_servo_two_speed(1);
set_servo_three_speed(1);
set_servo_four_speed(1);
set_servo_five_speed(1);
set_servo_six_speed(1);
set_servo_twenty_speed(1);
set_servo_ninteen_speed(1);
set_servo_eighteen_speed(1);
set_servo_seventeen_speed(1);
set_servo_sixteen_speed(1);
set_servo_fifteen_speed(1);
loop
{
servo_func1();
delay(5000);
servo_func2();
delay(5000);
servo_func3();
delay(5000);
servo_func4();
delay(5000);
}
}
set_servo_one_speed(speed)
{
for(rone=1; rone <= 1; rone++)
{
writec(232, 250, 0);
writec(232, rone, 0);
writec(232, speed, 0);
}
}
set_servo_two_speed(speed)
{
for(rtwo=2; rtwo <= 2; rtwo++)
{
writec(232, 250, 0);
writec(232, rtwo, 0);
writec(232, speed, 0);
}
}
set_servo_three_speed(speed)
{
for(rthr=3; rthr <= 3; rthr++)
{
writec(232, 250, 0);
writec(232, rthr, 0);
writec(232, speed, 0);
}
}
set_servo_four_speed(speed)
{
for(rfour=4; rfour <= 4; rfour++)
{
writec(232, 250, 0);
writec(232, rfour, 0);
writec(232, speed, 0);
}
}
set_servo_five_speed(speed)
{
for(rfive=5; rfive <= 5; rfive++)
{
writec(232, 250, 0);
writec(232, rtwo, 0);
writec(232, speed, 0);
}
}
set_servo_six_speed(speed)
{
for(rsix=6; rsix <= 6; rsix++)
{
writec(232, 250, 0);
writec(232, rsix, 0);
writec(232, speed, 0);
}
}
set_servo_twenty_speed(speed)
{
for(lone=20; lone <= 20; lone++)
{
writec(232, 250, 0);
writec(232, lone, 0);
writec(232, speed, 0);
}
}
set_servo_ninteen_speed(speed)
{
for(ltwo=19; ltwo <= 19; ltwo++)
{
writec(232, 250, 0);
writec(232, ltwo, 0);
writec(232, speed, 0);
}
}
set_servo_eighteen_speed(speed)
{
for(lthr=18; lthr <= 18; lthr++)
{
writec(232, 250, 0);
writec(232, lthr, 0);
writec(232, speed, 0);
}
}
set_servo_seventeen_speed(speed)
{
for(lfour=17; lfour <= 17; lfour++)
{
writec(232, 250, 0);
writec(232, lfour, 0);
writec(232, speed, 0);
}
}
set_servo_sixteen_speed(speed)
{
for(lfive=16; lfive <= 16; lfive++)
{
writec(232, 250, 0);
writec(232, lfive, 0);
writec(232, speed, 0);
}
}
set_servo_fifteen_speed(speed)
{
for(lsix=15; lsix <= 15; lsix++)
{
writec(232, 250, 0);
writec(232, lsix, 0);
writec(232, speed, 0);
}
}
servo_func1()   //Stand
{
writec(232, 1,  0); writec(232, 98, 0); // Servo 1
writec(232, 2,  0); writec(232, 92, 0); // Servo 2
writec(232, 3,  0); writec(232, 90, 0); // Servo 3
writec(232, 4,  0); writec(232, 83, 0); // Servo 4
writec(232, 5,  0); writec(232, 132, 0); // Servo 5
writec(232, 6,  0); writec(232, 84, 0); // Servo 6
writec(232, 7,  0); writec(232, 90, 0); // Servo 7
writec(232, 15,  0); writec(232, 96, 0); // Servo 15
writec(232, 16,  0); writec(232, 44, 0); // Servo 16
writec(232, 17,  0); writec(232, 92, 0); // Servo 17
writec(232, 18,  0); writec(232, 81, 0); // Servo 18
writec(232, 19,  0); writec(232, 95, 0); // Servo 19
writec(232, 20,  0); writec(232, 84, 0); // Servo 20
}
servo_func2() //shift Left
{
writec(232, 2,  0); writec(232, 97, 0); // Servo 2
writec(232, 6,  0); writec(232, 78, 0); // Servo 6
writec(232, 15,  0); writec(232, 75, 0); // Servo 15
writec(232, 16,  0); writec(232, 51, 0); // Servo 16
writec(232, 17,  0); writec(232, 93, 0); // Servo 17
writec(232, 18,  0); writec(232, 74, 0); // Servo 18
writec(232, 19,  0); writec(232, 114, 0); // Servo 19
}
servo_func3()   //Stand
{
writec(232, 1,  0); writec(232, 98, 0); // Servo 1
writec(232, 2,  0); writec(232, 92, 0); // Servo 2
writec(232, 3,  0); writec(232, 90, 0); // Servo 3
writec(232, 4,  0); writec(232, 83, 0); // Servo 4
writec(232, 5,  0); writec(232, 132, 0); // Servo 5
writec(232, 6,  0); writec(232, 84, 0); // Servo 6
writec(232, 7,  0); writec(232, 90, 0); // Servo 7
writec(232, 15,  0); writec(232, 96, 0); // Servo 15
writec(232, 16,  0); writec(232, 44, 0); // Servo 16
writec(232, 17,  0); writec(232, 92, 0); // Servo 17
writec(232, 18,  0); writec(232, 81, 0); // Servo 18
writec(232, 19,  0); writec(232, 95, 0); // Servo 19
writec(232, 20,  0); writec(232, 84, 0); // Servo 20
}
servo_func4()   //Shift Right
{
writec(232, 2,  0); writec(232, 73, 0); // Servo 2
writec(232, 3,  0); writec(232, 97, 0); // Servo 3
writec(232, 4,  0); writec(232, 84, 0); // Servo 4
writec(232, 5,  0); writec(232, 125, 0); // Servo 5
writec(232, 6,  0); writec(232, 105, 0); // Servo 6
writec(232, 15,  0); writec(232, 102, 0); // Servo 15
writec(232, 19,  0); writec(232, 80, 0); // Servo 19
}
廣告
  1. Victor
    三月 21, 2007 at 4:57 下午

    Keith,Here is a simplified version of your code, which doesn’t use the memory storage feature of the controller chip.Your question of getting all the servos to arrive at the same time, despite that they are all moving at different speeds. This feature is not available yet, but I will investigate how to do it.Cheers!Victor==========================================================================// Shift test with speed control// Action: Standup than Shift centre to left & Right// by Blood Keith 21 Mar 2007//Simplified & beautified by Victor LEE, 21st Mar, 2007 main(){    int   i;        sys(0, 1);     // select COM port 1    setcomm(9600);    delay(2000);    for(i=1;  i<=6;  i++) set_servo_speed(i, 1);    for(i=15; i<=20; i++) set_servo_speed(i, 1);    loop {      stand_still();  delay(5000);      shift_left();   delay(5000);      stand_still();  delay(5000);      shift_right();  delay(5000);    }}set_servo_speed(svr, spd){    writec(232, 250, 0);    writec(232, svr, 0);    writec(232, spd, 0);}stand_still()   //Stand{   writec(232,  1,  0); writec(232, 98, 0); // Servo 1   writec(232,  2,  0); writec(232, 92, 0); // Servo 2   writec(232,  3,  0); writec(232, 90, 0); // Servo 3   writec(232,  4,  0); writec(232, 83, 0); // Servo 4   writec(232,  5,  0); writec(232, 132,0); // Servo 5   writec(232,  6,  0); writec(232, 84, 0); // Servo 6   writec(232,  7,  0); writec(232, 90, 0); // Servo 7   writec(232, 15,  0); writec(232, 96, 0); // Servo 15   writec(232, 16,  0); writec(232, 44, 0); // Servo 16   writec(232, 17,  0); writec(232, 92, 0); // Servo 17   writec(232, 18,  0); writec(232, 81, 0); // Servo 18   writec(232, 19,  0); writec(232, 95, 0); // Servo 19   writec(232, 20,  0); writec(232, 84, 0); // Servo 20}shift_left() //shift Left{   writec(232,  2,  0); writec(232, 97, 0); // Servo 2   writec(232,  6,  0); writec(232, 78, 0); // Servo 6   writec(232, 15,  0); writec(232, 75, 0); // Servo 15   writec(232, 16,  0); writec(232, 51, 0); // Servo 16   writec(232, 17,  0); writec(232, 93, 0); // Servo 17   writec(232, 18,  0); writec(232, 74, 0); // Servo 18   writec(232, 19,  0); writec(232, 114,0); // Servo 19}shift_right()   //Shift Right{   writec(232,  2,  0); writec(232, 73, 0); // Servo 2   writec(232,  3,  0); writec(232, 97, 0); // Servo 3   writec(232,  4,  0); writec(232, 84, 0); // Servo 4   writec(232,  5,  0); writec(232, 125,0); // Servo 5   writec(232,  6,  0); writec(232, 105,0); // Servo 6   writec(232, 15,  0); writec(232, 102,0); // Servo 15   writec(232, 19,  0); writec(232, 80, 0); // Servo 19}

  2. BloodKeith
    三月 21, 2007 at 5:50 下午

    Thanks , Victor , Iwill try it .

  1. No trackbacks yet.

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: