找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2697|回复: 1
收起左侧

四自由度并联四足机器狗

[复制链接]
ID:358090 发表于 2018-6-25 00:38 | 显示全部楼层 |阅读模式
(分享资料)内含机械自搭的机器小狗的3D模型样本,还附带了arduino的驱动程。这个机器小狗只含四个舵机,通过修改舵机的参数来实现机器狗的前进和后退。
四自由度并联四足.jpg
  1. #include <Servo.h>

  2. #define servo_speed 20   //servo_speed
  3. #define servo_speed2 45
  4. #define action_delay 350 //action_delay
  5. Servo myServo[4];
  6. int num = 10;
  7. int servo_port[4]={4,11,3,12};   //servo_pin
  8. int servo_num = sizeof(servo_port)/sizeof(servo_port[0]);  //servo_pin length
  9. float value_init[4]={90, 90, 90, 90}; //各个舵机的初始位置  



  10. void setup() {
  11.   // put your setup code here, to run once:
  12.   Serial.begin(9600);
  13.   for(int i=0; i<servo_num; i++)
  14.   {
  15.     ServoGo(i, value_init[i]);
  16.   }
  17. }

  18. void loop() {
  19.   // put your main code here, to run repeatedly:
  20. for(int i=0;i<1;i++)
  21. {
  22.   left_right_bias();
  23.   delay(100);
  24.   forward_back_lie_down();
  25.   delay(100);
  26. }
  27. //while(1)
  28. //{
  29. // walk();
  30. //}
  31. while(1)
  32. {
  33. test();
  34. }
  35. }


  36. void test()
  37. {
  38.   servo_move(90,60,90,90);
  39.   servo_move(120,60,120,90);
  40.   servo_move(120,60,120,120);
  41.   servo_move(90,90,90,120);
  42. }


  43. void walk()
  44. {
  45.   servo_move(90,60,90,90);
  46.   servo_move(110,60,114,90);
  47.   servo_move(110,60,114,130);
  48.   servo_move(60,90,90,130);   
  49. }

  50. void forward_back_lie_down()
  51. {
  52.   servo_move2(90, 90, 90, 90);
  53.   servo_move2(103,29,75,165);
  54.   servo_move2(90, 90, 90, 90);
  55.   servo_move2(90,156,90,20);
  56.   servo_move2(90, 90, 90, 90);  
  57. }

  58. void left_right_bias()
  59. {
  60.   servo_move2(90, 90, 90, 90);
  61.   servo_move2(47,136,57,119);
  62.   servo_move2(90, 90, 90, 90);
  63.   servo_move2(116,54,147,74);
  64.   servo_move2(90, 90, 90, 90);
  65. }

  66. void ServoStart(int which)
  67. {
  68.   if(!myServo[which].attached())myServo[which].attach(servo_port[which]);
  69.   pinMode(servo_port[which], OUTPUT);
  70. }


  71. void ServoStop(int which)
  72. {
  73.   myServo[which].detach();
  74.   digitalWrite(servo_port[which],LOW);
  75. }

  76. void ServoGo(int which , int where)
  77. {
  78.   if(where!=200)
  79.   {
  80.     if(where==201) ServoStop(which);
  81.     else
  82.     {
  83.       ServoStart(which);
  84.       myServo[which].write(where);
  85.     }
  86.   }
  87. }

  88. void servo_move(float value0, float value1, float value2, float value3)
  89. {
  90.   
  91.   float value_arguments[] = {value0, value1, value2, value3};
  92.   float value_delta[servo_num];
  93.   
  94.   for(int i=0;i<servo_num;i++)
  95.   {
  96.     value_delta[i] = (value_arguments[i] - value_init[i]) / num;
  97.   }
  98.   
  99.   for(int i=0;i<num;i++)
  100.   {
  101.     for(int k=0;k<servo_num;k++)
  102.     {
  103.       value_init[k] = value_delta[k] == 0 ? value_arguments[k] : value_init[k] + value_delta[k];
  104.     }
  105.    
  106.     for(int j=0;j<servo_num;j++)
  107.     {
  108.       ServoGo(j,value_init[j]);
  109.     }
  110.     delay(servo_speed);
  111.   }
  112. }

  113. void servo_move2(float value0, float value1, float value2, float value3)
  114. {
  115.   
  116.   float value_arguments[] = {value0, value1, value2, value3};
  117.   float value_delta[servo_num];
  118.   
  119.   for(int i=0;i<servo_num;i++)
  120.   {
  121.     value_delta[i] = (value_arguments[i] - value_init[i]) / num;
  122.   }
  123.   
  124.   for(int i=0;i<num;i++)
  125.   {
  126.     for(int k=0;k<servo_num;k++)
  127.     {
  128.       value_init[k] = value_delta[k] == 0 ? value_arguments[k] : value_init[k] + value_delta[k];
  129.     }
  130.    
  131.     for(int j=0;j<servo_num;j++)
  132.     {
  133.       ServoGo(j,value_init[j]);
  134.     }
  135.     delay(servo_speed2);
  136.   }
  137. }
复制代码


四自由度并联四足.rar

581.56 KB, 下载次数: 18, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:423300 发表于 2019-5-7 09:37 | 显示全部楼层
收藏了好东西
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表