1. 功能说明 本文示例将实现r328a样机4自由度并联机器狗下蹲的功能。
2. 结构说明 本样机的并联驱动结构与 【r082】4自由度并联四足 类似,两款样机可以对比来看。
本样机腿部的结构如下图所示:驱动核心部分是两个5杆结构的组合。
两个五杆结构图 驱动核心部分再搭配下图的四杆结构,即可构成单侧的腿。驱动核心部分再搭配下图的四杆结构,即可构成单侧的腿。
四杆结构单侧腿部图整机 3. 电子硬件 在这个示例中,我们采用了以下硬件,请大家参考:
主控板
basra主控板(兼容arduino uno)
扩展板
bigfish2.1扩展板
电池
7.4v锂电池
电路连接:为了便于识别控制4自由度并联机器狗,我们先规定好机器狗的前方以及舵机位置编号(如下图所示):
将舵机(a1、a2 、b1、b2)连接在bigfish扩展板的d4、d7、d3、d8端口,如下图所示:
4. 功能实现 上位机:controller 1.0
下位机编程环境:arduino 1.8.19
实现思路:实现4自由度并联机器狗站立、前蹲、后蹲的动作。
4.1 调试舵机角度 利用上位机 controller软件调整4自由度并联机器狗的舵机角度,记录下机器狗站立、前蹲、后蹲时舵机的角度;然后利用arduino ide进行下位机编程,利用这些角度实现机器狗下蹲的功能。
对于如何利用controller软件进行调试机器狗的舵机角度,可参考【u002】如何驱动模拟舵机-controller 1.0b软件的使用 在本次实验中,经过调试,对于4自由度并联机器狗站立、前蹲、后蹲时的舵机角度值如下图所示:
机器狗站立时的舵机值机器狗前蹲时的舵机值机器狗后蹲时的舵机值 4.2 示例程序 下面提供一个4自由度并联机器狗下蹲的参考例程(dog_squat.ino),例程源代码详见 【https://www.robotway.com/h-col-237.html】 ,实验效果可参考演示视频。
/*------------------------------------------------------------------------------------ 版权说明:copyright 2023 robottime(beijing) technology co., ltd. all rights reserved. distributed under mit license.see file license for detail or copy at https://opensource.org/licenses/mit by 机器谱 2023-05-26 https://www.robotway.com/ ------------------------------*//* 本例程实现机器小狗站立、前蹲和后蹲*/#include#define servo_speed 60 //定义舵机转动快慢的时间#define action_delay 0 //定义所有舵机每个状态时间间隔servo myservo[4];int f = 15; //定义舵机每个状态间转动的次数,以此来确定每个舵机每次转动的角度int servo_port[4] = {3,4,7,8}; //定义舵机引脚int servo_num = sizeof(servo_port) / sizeof(servo_port[0]); //定义舵机数量float value_init[4] = {1513,1457,1074,1545}; //定义舵机初始角度void setup() { serial.begin(9600); for(int i=0;i< servo_num;i++){ servogo(i,value_init[i]); } delay(2000);}void loop() { dog_squat();}void dog_squat(){ servo_move(value_init[0],value_init[1],value_init[2],value_init[3]);//直立 servo_move(1243,1703,1278,1299);//向后蹲下 servo_move(value_init[0],value_init[1],value_init[2],value_init[3]);//直立 servo_move(1715,1255,1052,1545);//向前蹲下 servo_move(value_init[0],value_init[1],value_init[2],value_init[3]);//直立}void servostart(int which){ if(!myservo[which].attached())myservo[which].attach(servo_port[which]); pinmode(servo_port[which], output);}void servostop(int which){ myservo[which].detach(); digitalwrite(servo_port[which],low);}void servogo(int which , int where){ if(where!=200) { if(where==201) servostop(which); else { servostart(which); myservo[which].write(where); } }}void servo_move(float value0, float value1, float value2, float value3) //舵机转动{ float value_arguments[] = {value0, value1, value2, value3}; float value_delta[servo_num]; for(int i=0;i< servo_num;i++) { value_delta[i] = (value_arguments[i] - value_init[i]) / f; } for(int i=0;i< f;i++) { for(int k=0;k< servo_num;k++) { value_init[k] = value_delta[k] == 0 ? value_arguments[k] : value_init[k] + value_delta[k]; } for(int j=0;j< servo_num;j++) { servogo(j,value_init[j]); } delay(servo_speed); } delay(action_delay);} 5. 扩展样机 本样机可以做出一些扩展,如下图所示的在样机上方增加平板,此样机可用探索者零件或探索者兼容零件制作。
2009年中国集成电路市场首现衰退
sdwebimage清除缓存方法
HMDTU-OpenHarmony-Hi3861环境搭建
广和通超前布局助力行业跑出加速
波音公司将对800架波音737 MAX飞机进行重新布线设计
4自由度并联机器狗实现下蹲功能
PIN二极管驱动器及运算放大器应用
比特币需要多久的时间才可以交易一次
TS浊度传感器在洗衣机中的应用
MLX90251的热补偿如何工作及评估整个系统的TC
食用油酸价检测仪的功能
德国运营商在5G基站的耗电问题上是怎样看待的
行业数字化转型迫在眉睫 国内柔性电子龙头企业弘信电子率先启动
SiTime MEMS硅晶振在5G中的应用
base标签抓取错误:我不再用discuz程序建设门户网站[图]
DS1994L 4Kb、带有时钟的存储器iButton&re
电瓶电压缺电的保护问题
法拉第未来申请紧急救济未通过
无人驾驶地铁开通,你敢就坐吗?
马斯克现身说:守护梦想,请不要忘记职业操守