双足机器人走路模型
来源:互联网 发布:淘宝客推广哪个平台好 编辑:程序博客网 时间:2024/04/28 07:31
双足机器人行走学问很大,本人只是说一下自己的理解,以及根据理解所写的一个走路程序。
先看一下慢速效果: http://pan.baidu.com/s/1geO589H
再看下快速效果: http://pan.baidu.com/s/1miNpIDq
相关ZMP理论论文一大堆, 我就不再说理论的,可以在这里下载: http://download.csdn.net/detail/shaynerain/9804112
简单总结就是腿部舵机一直保持Y轴角度分量偏移总和等于零
/*//times 步数alpha步伐角度theta修正角度//times 一次一步//alpha //theta暂时不加*/void DuWalk(int times,int alpha, int *theta , unsigned short *speed){unsigned short Speed[17]; char flag; s16 angle[17] = {0,0, 0,0, 0,0, 0,8, 0,0,0,0,-280,280,0,0,0}; int temp_angle = alpha;//alpha 大约15° 舵机角度51//用5微分float delta = 1.0, left_up = 0, right_up = 0 , left_mid = 0,right_mid = 0; float LR = 0; char i = 0; int white_time = 1; for(i = 0; i<17;i++) Speed[i] = *speed; RobotAction(MotorZeroAngle,angle,Speed);//前后 2 4 63 5 7 while (times--){ //机器人角度 ,左脚前,右脚后 left_up = temp_angle; left_mid = temp_angle; angle[11] = -2*alpha/delta; while ((LR++) <7) //7 { angle[0] = angle[1] =-(s8)LR; angle[8] = angle[9] =(s8)LR; RobotAction(MotorZeroAngle,angle,Speed); delay_ms(8); }delay_ms(10);while (temp_angle < alpha){temp_angle += delta; angle[6] = temp_angle; angle[2] = temp_angle; angle[10]+=2; angle[11]+=2; if ((temp_angle <= -alpha/2)){ left_up += delta * 4; angle[5] += 5 * delta; left_mid -= 1* delta;}else if(temp_angle <= 0){left_up += delta * 4; angle[5] += 5 * delta; left_mid -= 1* delta;} else if(temp_angle <= alpha/2) { angle[5] -= 3* delta; left_mid += 3* delta; } else if(temp_angle <= alpha) { left_up -= 4*delta; angle[5] -= 7* delta; left_mid += 3* delta; } angle[3] = (s16)left_mid; angle[7] = (s16)left_up; RobotAction(MotorZeroAngle,angle,Speed); delay_ms(white_time);} right_up = temp_angle; right_mid = temp_angle; angle[10] = 2*alpha/delta; while ((LR--) > -7) { angle[0] = angle[1] =-(s8)LR; angle[8] = angle[9] =(s8)LR; RobotAction(MotorZeroAngle,angle,Speed); delay_ms(8); }delay_ms(10); //angle[10] = alpha;while (temp_angle > -alpha){temp_angle -= delta; angle[7] = temp_angle; angle[3] = temp_angle; angle[10]-=2; angle[11]-=2; if ((temp_angle >= alpha/2)){ right_up -= 4*delta; angle[4] -= 5*delta; right_mid += 1*delta; }else if(temp_angle >= 0){right_up -= delta * 4; angle[4] -= 5*delta; right_mid += 1*delta;} else if(temp_angle >= -alpha/2) { angle[4] += 3*delta; right_mid -= 3*delta; } else if(temp_angle >= -alpha) { right_up += 4*delta; angle[4] += 7*delta; right_mid -= 3*delta; } angle[2] = (s16)right_mid; angle[6] = (s16)right_up; RobotAction(MotorZeroAngle,angle,Speed); delay_ms(white_time);} }}
0 0
- 双足机器人走路模型
- 更新机器人走路
- 走路
- 走路
- 走路
- 走路
- 移动机器人运动模型
- 机器人D-H模型
- 双足机器人
- 机器人走路爱碰壁?Slamtec要用激光雷达让它们“识路”
- 程序员面试金典: 9.9 递归和动态规划 9.2机器人走路的方式
- 程序员面试金典: 9.9 递归和动态规划 9.2机器人走路的方式_避免禁区
- 走路call
- 四条腿走路
- 走路Call
- 怎么走路
- 机器人工具箱 V9.10(Robotics Toolbook) (1):建立机器人模型
- 利用urdf建立机器人小车模型
- 2017,SAP向云看齐
- C/C++学习路线图
- java中printf
- 浅谈JS异步编程——Promise
- Linux线程浅析[线程的同步和互斥之线程同步的条件变量pthread_cond_t]
- 双足机器人走路模型
- 详解js中的apply与call的用法
- codevs 1085 数字游戏 (环形区间dp+负数取膜)
- 【数据压缩】Exp02.BMP2YUV
- 数组的地址+1 和 指向数组的指针+1 区别
- 算法训练 6-2递归求二进制表示位数
- Java 序列化与反序列化 工具类 Demo
- MAC OS 下sourceTree总是提示输入密码的解决办法
- sublime text3实用教程