1. 功能说明
本文示例将实现R328a样机4自由度并联机器狗行走的功能。

2. 电子硬件
在这个示例中,我们采用了以下硬件,请大家参考:
| 主控板 | Basra主控板(兼容Arduino Uno) |
| 扩展板 | Bigfish2.1扩展板 |
| 电池 | 7.4V锂电池 |
电路连接:机器狗左侧的上下舵机连接在Bigfish扩展板的D3、D8端口;机器狗右侧的上下舵机连接在Bigfish扩展板的D4、D7端口。

3. 功能实现
上位机:Controller 1.0
下位机编程环境:Arduino 1.8.19
实现思路:实现机器狗可以灵活的自由行走。
3.1 调试舵机角度
对于如何利用Controller软件进行调试机器狗的舵机角度,可参考【U002】如何驱动模拟舵机-Controller 1.0b软件的使用【https://www.robotway.com/h-col-129.html】
在本次实验中,经过调试,对于4自由度并联机器狗行走时的舵机角度值如下图所示:
机器狗行走时的舵机值
3.2 示例程序
下面提供一个4自由度并联机器狗行走的参考例程(Dog_walk_finall.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/ ------------------------------*/ /* 本例程实现机器小狗行走 调试小狗行走的注意事项: 3、8对应着小狗左侧的上下舵机; 4、7对应着小狗右侧的上下舵机; 连接好舵机后,将调试好的小狗初始直立状态写入float value_init[4] = { };中即可; */ #include< Servo.h > #define SERVO_SPEED 20 //定义舵机转动快慢的时间 #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] = {1478,1500,1545,1478};//定义舵机初始角度 int leg_range = 180; //小狗左右两条腿摆动的幅度 float reset_init[4]={0,0,0,0}; void setup() { Serial.begin(9600); for(int i=0;i< servo_num;i++) ServoGo(i,value_init[i]); for(int i=0;i< servo_num;i++){ reset_init[i] = value_init[i]; } delay(2000); } void loop() { Dog_walk(); } void Dog_walk() { servo_move(value_init[0],value_init[1],reset_init[2]+leg_range,reset_init[3]); servo_move(value_init[0],value_init[1],reset_init[2],reset_init[3]-leg_range); } 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); } 审核编辑 黄宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
机器狗
+关注
关注
3文章
195浏览量
11069
发布评论请先 登录
相关推荐
热点推荐
运用BLDC设计新型五自由度并联机器人的方案分享
总线数据采集卡为硬件基础,利用Vc++6.0 设计机器人控制界面, 实现该机构的连续轨迹运动。1 新型五自由度并联机器人机构原理研究的并联机
发表于 06-02 08:00
反螺旋理论与五自由度并联机器人设计方法
本论文以螺旋理论为基础,提出一种系统的结构综合方法。根据各条支链对运动平台所提供的反螺旋约束的线性关系,研究了构成五自由度并联机器人机构的各条支链所有可能的运动副组合以及它们的空间几何条件。利用这一方法,设计出一组结构对称的五自由度
发表于 10-17 14:51
•6次下载
并联机器人的少自由度并联机构设计
理想的少自由度并联机构的所有分支最好具有完全相同的结构,保持结构的对称,以满足各向同性的要求。以单开链支路为单元,提出了一种新型的对称的少自由度的并联机器人机构。研究结果表明,该机构的
发表于 10-23 16:24
•15次下载
一种三自由度冗余驱动混联机器人的设计
对机器人进行相应的优化设计可以使机器人具有更好的结构性能与工作性能。以一种三自由度冗余驱动混联机器人为研究对象,对该机器人尺寸参数无量纲化并
发表于 01-05 14:24
•1次下载
二自由度冗余驱动并联机器人动态控制
为了提高冗余并联机器人的控制精度,本文针对二自由度冗余驱动并联机器人,基于并联机器人同步耦合误差控制理论,提出了一种非线性同步控制方法。首先,利用李雅普诺夫稳定性理论,对提出的控制方法
发表于 04-24 15:47
•0次下载
运用BLDC对新型五自由度并联机器人的设计
积累和放大、位置反解容易等优点, 与串联机构在应用上形成了互补关系。目前, 对并联机器人研究较多的是6 自由度( 6DOF) 并联机器人, 但在某些场合2~5 个
并联机器人市场又情况如何市场活跃度最高的并联机器人企业TOP5
1992年,我国第一台六自由度并联机器人样机研制成功,2012年,随着ABB专利技术解禁,企业开始批量进入,并联机器人商业化速度加快,6年过去,如今的并联机器人市场又如何?
如何分析新型二自由度平动并联机器人的结构和运动学
本文对一种新型的二自由度并联机器人进行分析。机器人可以放置在一个固定方向的平面刚体。首先详细介绍了机器人的运动结构,然后分析了一些运动的问题,如正向和逆向的运动学,速度,和奇异点。对工
发表于 03-26 16:27
•7次下载
H60.XYZTR5六自由度并联机构
、生物科技等微纳操作领域。 H60.XYZTR5六自由度并联机构 H60.XYZTR5系列六自由度并联机构压电纳米定位台,是X、Y、Z、θx、θy、θz六轴运动定位台,内置高可靠性压电
4自由度并联机器狗实现行走功能
评论