8自由度并联腿机器狗实现行走功能

1. 功能说明

 本文示例将实现R309a样机8自由度并联腿机器狗行走的功能。

2. 并联仿生机器人结构设计

      机器狗是一种典型的并联仿生四足机器人,其腿部结构主要模仿了四足哺乳动物的腿部结构,主要由腿部的节段和旋转关节组成。在设计机器狗的腿部结构时,可基于四足哺乳动物的生理结构,使用连杆代替腿部的骨骼来提高机器人的性能,机器狗腿部采用5连杆结构设计。

      五杆结构是平面连杆结构的一种,具有两个自由度的平面闭链五杆机构不仅使运动机构的刚度增加,更突出的优点在于它能够实现变轨迹的运动。

五杆结构

腿部旋转关节单元设计

       腿部的旋转关节是机器人中很重要的一部分,它是整个机器人中的关键运动单元,关节的设计往往决定了机器人的运动特性和精度。关节单元主要是负责连接相邻的两端节段,从而实现腿部的摆动。由于腿部是往复运动,因此关节单元的设计要符合循环负载的载荷规律。

关节结构如图:

旋转关节结构图

侧摆关节设计

      侧摆关节的主要作用是给机器狗提供回转方向的自由度,使机器狗的腿部能够偏离竖直平面运动,从而实现转弯、侧移、抗侧向冲击等步

组合后的机器狗的腿部结构图

       机器狗的腿部关节大体分为两类,第一类是如四足哺乳动物前腿的肘关节一样的腿部关节设计,另一类是类似四足哺乳动物后腿的膝关节的腿部关节制造。基于以上原理,科学家们设计出四类机器狗的腿部结构:全膝式、全肘式、内膝肘式、外膝肘式。

腿部结构有四种形式

腿部的空间运动区域如下图:

 各种布置结构的运动空间如下图:

      内膝式结构条件下,运动中的机器狗内部结构质心曲线最为平滑,因此该结构也是最稳定的,为两侧提供的运动空间也更大。此外,运动时机器狗腿部重合的范围也缩小了。基于以上因素,内膝式结构条件有利于机器人的稳定操作。

3. 并联仿生机器人运动算法

      在日常生活中,狗的品种、体型不尽相同,因此其运动状态也是多种多样,我们将以生活中最常见的一种运动状态进行分析。在研究中,我们可以通过对狗的行走过程进行高速摄影,抓拍到狗行走的运动全过程,如下图所示:

狗行走过程分解图

      然后我们可以对其中一条腿进行分析,将重叠其放在一个相对狗自身静止的坐标系中,如下图所示:

单条腿末端的运动轨迹

       根据图示分析,我们可以将狗的腿部运动简单分为与地面接触的支撑阶段和离开地面的跨越阶段。将足部点相连,可近似得到如上图虚线所示的“馒头”状轨迹,支撑段——足接触地面且相对于地面静止不动,身体相对于地面前移;跨越段——足在空中运动,跨越障碍物。

      要想让机器狗像真正的狗一样走路,我们就需要控制舵机,让机器狗的腿部走出类似上图中的“馒头”状轨迹。这段轨迹不能超出我们设计的机器狗腿部的运动范围,如下图所示(蓝色阴影区域为机器狗腿部结构的运动范围):

机器狗腿部结构的运动范围

       从而得到“馒头”状轨迹曲线的坐标。

坐标系下的腿部末端运动轨迹

       于是我们可以根据这个坐标为“馒头状”轨迹指定一个合适的方程,图中轨迹弧线部分可近似取为一个椭圆。

       取轨迹原点在真实坐标系中的位置\left ( x_{0},y_{0} \right )

       取椭圆两半轴长a=4,b=3

       则该椭圆方程为:y=b\sqrt{1-\frac{\left ( x-x_0 \right )^{2}}{a^2}}+y_0

       或者:\frac{(x-x_0)^2}{a^2}+\frac{(y-y_0)^2}{b^2}=1 (y\geq y_0)

       底部直线方程为:y=y_0(x_0-a\leq x\leq x_0+a)

       通过这个方程,再结合机器狗腿部机构运动公式,即可反推出舵机的一系列运动参数。

机器狗的行进步态

      机器狗是四足行走机构,由于四足动物运动的稳定性,相对于双足行走的人来说,其运动步态比较简单,大多机器狗简单的采用前后脚差90度或180度。

机器狗模型

        机器狗采用前后脚差180度时的脚部运动落地顺序图如下(注:白色为要抬起的脚,灰色不抬起的脚)

        机器狗采用前后脚差90度时的脚部运动落地顺序图如下:

        机器狗四条腿腿同时动的时候的动作效果包括整体下蹲、整体站立、身体前后俯仰、身体侧翻等,效果图如下所示:

4. 电子硬件

      本实验中采用了以下硬件:

主控板

Basra主控板(兼容Arduino Uno)‍

扩展板

Bigfish2.1扩展板‍

SH-SR舵机扩展板
电池7.4V锂电池

       电路连接说明:将8个舵机连接在SH-SR扩展板上,舵机接线顺序为:1、2、3、4、5、6、7、8

5. 功能实现

      上位机:Controller 1.0

      下位机编程环境:Arduino 1.8.19

5.1 调试舵机角度

       机器大狗可以实现站立、下蹲、前趴、后仰的功能。我们可以利用上位机 Controller软件调整大狗的舵机角度,记录下站立、下蹲、前趴、后仰 时舵机的角度;然后利用Arduino IDE进行下位机编程,利用这些角度实现大狗的预期效果。

       对于8自由度的大狗,利用Controller软件进行调试角度界面(如下图所示):

        经过调试,对大狗的下蹲、站立、前趴、后仰四个功能的舵机角度值见下表:

功能舵机角度值
下蹲1069,736,1855,2174,1746,1839,1007,850
站立1365,1163,1522,1837,1657,939,1253,1341
前趴1069,736,1855,2174,1657,939,1253,1341
后仰1365,1163,1522,1780,1746,1839,1007,850

      利用上位机测出的舵机角度,可进行下位机编程。

5.2 示例程序

      下面提供一个8自由度并联腿机器狗行走的参考例程(Dog_Walk.ino),具体实验效果可参考官网演示视频。

/*------------------------------------------------------------------------------------

  版权说明: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-17 https://www.robotway.com/

  ------------------------------*/

#include "leg.h"

#include "gait.h"

#include "sensor.h"



enum{DOGBALANCE=1,DOGWALK,DogObstacleAvoidanceWalk};


float Eular[3]; /* 欧拉角 */


void setup() {

  // put your setup code here, to run once:

  Serial.begin(115200);

  Serial.begin(115200);

  sensorSetup();

  delay(3000);

}


void loop() {

  // put your main code here, to run repeatedly:

  Dog_Walk();    //狗前进(行走)

}




void Dog_Walk()

{

   static long t_control = millis();

   static int t0 = millis();

   if(t_control){   t0 = millis();   }

    if ((millis() - t_control) > 50)

    {

      float x[4], y[4];

      long t = millis() - t0;

      gait(t, 0.5, x[0], y[0], forwardGait);

      gait(t, 0, x[1], y[1], forwardGait);

      gait(t, 0, x[2], y[2], forwardGait);

      gait(t, 0.5, x[3], y[3], forwardGait);

      leg0.footPos(x[0], y[0]);

      leg1.footPos(x[1], y[1]);

      leg2.footPos(x[2], y[2]);

      leg3.footPos(x[3], y[3]);

      t_control = millis();

    }     

}

6. 扩展样机

     本样机可以做出一些扩展,如下图所示的在样机上方增加一个平板。

 

程序源代码及样机3D文件资料内容详见 8自由度并联腿机器狗-行走

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/26706.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

echart实现地图展示

最近做的页面中需要展示省级地图精确到市级且悬浮到地区上时会显示一些信息 然后参考了网址: “绿色金融” - 江西省 - category-work,geo地理坐标,legend,series-map地图,series-scatter散点图,title标题,tooltip提示框,visualMap视觉映射 - makeapie echarts社区…

【玩转Linux操作】硬链接和软连接

🎊专栏【玩转Linux操作】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【Counting Stars 】 欢迎并且感谢大家指出小吉的问题🥰 欢迎大家访问“在下小吉.”(偷偷告诉你这个是我的大号哦&#…

yolov8seg模型转onnx转ncnn

yolov8是yolo的最新版本,可做图像分类,目标检测,实例分割,姿态估计。 主页地址 这里测试一个分割模型。 模型如下 选yolov8n-seg模型,转成onnx,再转ncnn测试。 yolov8s-seg的ncnn版可以直接用这个 如果用…

【Django 网页Web开发】07. 快捷的表单生成 Form与MoudleForm(保姆级图文)

目录 注意 正规写法是 ModelForm,下面文章我多实现效果url.py新建3个html文件数据库连接model.py 数据表1. 原始方法view.pytestOrgion.html 2. Form方法view.pytestForm.html 3. MoudleForm方法给字段设置样式面向对象的思路,批量添加样式错误信息的显示…

搜索算法(三) 回溯法

1.回溯法 回溯法可以理解成一种特殊的深度优先算法,比起普通的DFS,多了还原当前节点的一步。 修改当前节点、递归子节点、还原当前节点。 本质是一种试错的思想。 维基百科: 2.例题 1) 力扣https://leetcode.cn/problems/pe…

17_Linux根文件简介与Busybox构建文件系统

目录 根文件系统简介 文件目录简介 BusyBox简介 编译BusyBox构建根文件系统 修改Makefile添加编译器 busybox中文字符支持 配置 busybox 编译busybox 向根文件系统添加lib库 向rootfs的“usr/lib”目录添加库文件 创建其他文件夹 根文件系统初步测试 根文件系统简介…

行业应用|立仪光谱共焦位移传感器在玻璃方面的检测

项目:玻璃管管壁单边测厚 行业应用|立仪光谱共焦位移传感器在玻璃方面的检测 行业应用|立仪光谱共焦位移传感器在玻璃方面的检测 检测方案 用D35A7镜头对玻璃管管壁进行单边测厚,取三个点静态测量厚度并记录重复性。 1、采用D35A7R2S35镜头对玻璃管管…

Android Input子系统 - kernel

目录 前言 数据结构 输入子系统流程 前言 上一节有展示Android Input子系统的架构图,这里我们关心Linux kernel层 可以看到kernel层分为三层: 输入子系统设备驱动:处理与硬件相关的信息,调用input API注册输入设备,并把数据往上报 输入子系统核心层:为事件处理层和设…

Python之并发多线程操作

一、threading模块介绍 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性 二、开启线程的两种方式 方式一 #方式一 from threading import Thread import time def sayhi(name):time.sleep(2)print(%s say hello %na…

迷你版ChatGPT开源,教你怎么用nanoGPT训练一个写小说的AI机器人!

大家好,我是千与千寻,好久不见,最近太忙了,去医院拔了颗智齿,这不是刚休息一天,就立刻来给大家分享ChatGPT的新奇项目了。 ChatGPT的功能确实是好用,但是我觉得有一个小缺点,就是反应的时间比较慢,原因是GPT-3.5/GPT-4.0的模型体积较大,比较占用内存空间。 同时大模…

10.ES6模块化规范(关键字 import,from,as,export的用法)

导入其他模块成员要使用关键字 import ,导出需要使用关键字 export 我们明确一个概念,只有js与js之间需要使用import与export,如果是在html中引入js是不需要用import的,你导入的方式是直接srcxxx.js 目录 1 默认导入导出 2 …

【高危】Apache Inlong 存在JDBC反序列化漏洞

漏洞描述 Apache InLong 是可用于构建基于流式的数据分析、建模等一站式的海量数据集成框架。 在Apache Inlong受影响版本,由于未对接收的jdbcUrl参数过滤空格字符,导致可以利用空格绕过jdbcUrl中autoDeserialize参数过滤限制,通过认证的攻…

尚硅谷JUC极速版笔记

尚硅谷JUC极速版笔记 1、JUC概述1.1 进程和线程1.2 线程的状态(6个)1.3 wait和sleep1.4 并发与并行1.5 管程(锁)1.6 用户线程和守护线程 2、Lock接口2.1 复习synchronized(java内置同步锁)2.2 什么是Lock接…

设计模式详解之策略模式

作者:刘文慧 策略模式是一种应用广泛的行为型模式,核心思想是对算法进行封装,委派给不同对象来管理,本文将着眼于策略模式进行分享。 一、概述 我们在进行软件开发时要想实现可维护、可扩展,就需要尽量复用代码&#x…

LayUI前框框架普及版

LayUI 一、课程目标 1. 【了解】LayUI框架 2. 【理解】LayUI基础使用 3. 【掌握】LayUI页面元素 4. 【掌握】LayUI内置模块二、LayUI基本使用 2.1 概念 layui(谐音:类UI) 是一款采用自身模块规范编写的前端 UI 框架&#xff0…

阿里云nginx配置https踩坑(配置完后访问显示无法访问此网站)

本人小前端一枚,最近在玩服务器部署自己的东西时踩了个坑!!! server {listen 443 ssl;server_name localhost;ssl_certificate 证书.com.pem;ssl_certificate_key 证书.com.key;#后台管理静态资源存放location / { #文件目…

springboot+vue新闻稿件java在线投稿管理系统

本文介绍了新闻稿件管理系统的开发全过程。通过分析新闻稿件管理系统管理的不足,创建了一个计算机管理新闻稿件管理系统的方案。文章介绍了新闻稿件管理系统的系统分析部分,包括可行性分析等,系统设计部分主要介绍了系统功能设计和数据库设计…

微信小程序开发实战 ②②(全局数据共享)

作者 : SYFStrive 博客首页 : HomePage 📜: 微信小程序 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 &#x1f4…

基于flask的web应用开发——访问漂亮的html页面以及页面跳转

目录 0. 前言1. html基本知识2. 编写html文本3. 在Flask中设置访问html4. 实现点击跳转 0. 前言 本节学习如何在flask应用程序下让用户访问你提前制作好的html页面 操作系统:Windows10 专业版 开发环境:Pycahrm Comunity 2022.3 Python解释器版本&am…

Arcgis进阶篇(6)——如何将Arcgis Pro的离线数据发布成服务

常常因为Arcgis Server(或者GeoScene Server)昂贵的价格,而导致小项目技术选型选择开源的GIS Server(如GeoServer等)。但用完之后,发现后者实在拉跨,使用对比差异巨大。那就只能另想办法&#x…