8自由度并联腿机器狗实现姿态平衡

news2024/10/6 8:35:32

1. 功能说明

      本文示例将实现8自由度并联腿机器狗保持姿态平衡的功能,当机器狗在一个平台上原地站立,平台发生倾斜时,机器狗能够自动调整姿态,保证背部水平。

2. 机器狗的稳定性分析

      稳定性是机器狗运动中很重要的一部分,对于足式机器人的稳定性判定,研究人员提出了很多不同的方法,如ZMP(零力矩点)、FASM(力角稳定裕度)、ESM(能量稳定裕度)等。

      机器狗运动时,惯性力、腿部与地面的接触力是其主要扰动来源。机器狗的着地腿会受到地面对其的支持力和摩擦力,而其它外力可等效为机器狗重心处的惯性力,受力分析如下图所示:

机器狗的受力分析示意图

(F1、F2、F3是地面对机器狗的支持力;表示等效惯性力和等效重力的合力)

      在四足机器人中,由于运动步态中支撑脚通常只有两条或更少,无法在地面上寻找到有效的支撑多边形,因此四足机器人只好将机器人的质心偏离初始位置的距离作为稳定性的参考量。一般来说,竖直方向的偏置距离对稳定性的影响不大。

3. 电子硬件

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

主控板

Basra主控板(兼容Arduino Uno)‍

扩展板

Bigfish2.1扩展板‍

SH-SR舵机扩展板
传感器六轴陀螺仪
电池7.4V锂电池

电路连接说明:

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

      ② 将六轴陀螺仪传感器连接在Bigfish扩展板的A0端口。

4. 功能实现

      上位机:Controller 1.0

      下位机编程环境:Arduino 1.8.19

      实现思路:当机器狗在一个平台上原地站立,平台发生倾斜时,机器狗能够自动调整姿态,保证背部水平。

4.1 调试舵机角度

      对于机器狗利用Controller软件进行调试舵机角度,可参考上文 8自由度并联腿机器狗-行走

4.2 示例程序

     下面提供一个8自由度并联腿机器狗保持姿态平衡的参考例程(Dog_Balance.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-18 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_Balance(); //狗保持平衡

}




void Dog_Balance()

{

   static long t_control = millis();

   float f = readFront();

   float b = readBack();

   readPose();

    if ((millis() - t_control) > 40) {

      if (f && !b) {

        leg0.back();

        leg1.back();

        leg2.back();

        leg3.back();

      } else if (b && !f) {

        leg0.front();

        leg1.front();

        leg2.front();

        leg3.front();

      }

      if (Eular[0] > 3) {

        leg0.down();

        leg1.down();

        leg2.up();

        leg3.up();

      }

      if (Eular[0] < -3) {

        leg0.up();

        leg1.up();

        leg2.down();

        leg3.down();

      }

      if (Eular[1] < 0 && Eular[1] > -176) {

        leg0.up();

        leg1.down();

        leg2.up();

        leg3.down();

      }

      if (Eular[1] > 0 && Eular[1] < 176) {

        leg0.down();

        leg1.up();

        leg2.down();

        leg3.up();

      }

      leg0.updatePos();

      leg1.updatePos();

      leg2.updatePos();

      leg3.updatePos();

      // SerialUSB.println();

      t_control = millis();

    }  

}

程序源代码资料内容详见 8自由度并联腿机器狗-姿态平衡

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode | 35 搜索插入位置

35 搜索插入位置 文章目录 35 搜索插入位置题目我的思路[官方题解](https://leetcode.cn/problems/search-insert-position/solutions/333632/sou-suo-cha-ru-wei-zhi-by-leetcode-solution/ "官方题解")欢迎关注公众号【三戒纪元】 题目 给定一个排序数组和一个目标…

Rocky linux 9.0系统安装MySQL5.7

前言 本文将带你在Rocky linux 9.0上折腾一个MySQL5.7&#xff0c; 说干就干。 文章目录 前言安装环境下载mysql 包开始安装启动测试总结 安装环境 删除系统中可能存在的包&#xff1a; [rootmufeng ~]# rpm -qa |grep mysql [rootmufeng ~]# rpm -qa |grep mariadb [rootmu…

Ansible概述和模块解释

Ansible概述 Ansible介绍 Ansible是一个基于Python开发的配置管理和应用部署工具&#xff0c;现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点&#xff0c;Pubbet和Saltstack能实现的功能&#xff0c;Ansible基本上都可以实现。 Ansible能做什么 Ansible能…

Linux---详细讲解linux计算机体系结构

前言 Linux是一种开源的操作系统&#xff0c;它的核心思想是基于冯诺依曼体系结构。在本文中&#xff0c;我们将深入探讨Linux的基本原理和操作系统的概念。 Linux是一款基于Unix操作系统的开源软件&#xff0c;它的核心是由Linus Torvalds在1991年开发的。Linux的出现&#x…

认识 Vue.js

node版本管理工具 nvm - 简书 Vue介绍 Vue.js(简称Vue) 是一套用于构建用户界面的渐进式前端框架。&#xff08;其实就是使用js开发的一个框架&#xff09; Vue.js 核心实现 : 响应式的数据绑定&#xff1a;当数据发生改变&#xff0c;视图可以自动更新&#xff0c;不用关心D…

「有问必答」Go如何优雅的对时间进行格式化?

昨天 交流群 关于「Go如何优雅的对时间进行格式化?」展开了讨论&#xff1a; 咋搞捏&#xff1f; 如何在不循环的情况下&#xff0c;把列表数据结构体的时间修改为咱们习惯的格式&#xff0c;而不是UTC模式 我们要实现的效果如下: created_at 是go语言原生的方式&#xff0…

Android Framework分析Zygote进程的启动过程

Zygote进程是Android系统中的一个重要进程&#xff0c;其主要作用是预热Java虚拟机和启动应用进程。本文将着重分析Zygote进程的启动过程&#xff0c;结合代码注释和示例代码&#xff0c;让读者更好地理解Zygote的内部工作原理。 Zygote进程的启动过程 Zygote进程的启动过程包…

Python3 里面的四舍五入

目录 1.一般的四舍五入 : 使用内置的round函数 1.1官方文档&#xff1a; 1.2 举例说明&#xff1a; 2.python3里的格式化输出 format 2.1 记忆法则 &#xff1a;填齐宽 逗精类 2.2 format实质就是通过设置精度间接使用了等效round函数&#xff0c;但是不要把格式化输出和四…

chatgpt赋能python:Python是如何帮助确定location的?

Python是如何帮助确定location的&#xff1f; 什么是location&#xff1f; 在SEO中&#xff0c;location指的是特定页面、文章或者商铺在搜索结果中的排名位置。通常来说&#xff0c;更高的location意味着更多的点击率和流量&#xff0c;因此在SEO中&#xff0c;确定location…

独立站思考:Facebook选品测品

导语&#xff1a;对于独立站而言&#xff0c;获取稳定的流量是至关重要的。本文将探讨如何利用Facebook的选品测品功能&#xff0c;精准找到用户并提高点击率&#xff0c;以及如何通过数据分析优化&#xff0c;提高转化率并快速产生订单。 第一部分&#xff1a;精准定位用户的方…

Nodejs五、Express

零、文章目录 Nodejs五、Express 1、初识 Express &#xff08;1&#xff09;Express 简介 Express是什么 官方给出的概念&#xff1a;Express 是基于 Node.js 平台&#xff0c;快速、开放、极简的 Web 开发框架。 通俗的理解&#xff1a;Express 的作用和 Node.js 内置的 …

Swift 5.9 有哪些新特性(一)

文章目录 前言if 和 switch 表达式Value 和 Type 参数包 前言 虽然 Swift 6 已经在地平线上浮现&#xff0c;但 5.x 版本仍然有很多新功能-更简单的 if 和 switch 用法、宏、非可复制类型、自定义 actor 执行器等等都将在 Swift 5.9 中推出&#xff0c;再次带来了一个巨大的更…

矩阵补全文献汇总

[1] Nguyen L T , Kim J , Shim B .Low-Rank Matrix Completion: A Contemporary Survey[J].IEEE Access, 2019, PP(99):1-1.DOI:10.1109/ACCESS.2019.2928130. 几根棒子的一篇工作。基本结构可以借鉴。 适用于秩未知的矩阵补全文献汇总 [1] Fornasier M , Rauhut H , Ward…

报表岗位如何快速升职加薪?卷的心态要放平,工具要选对!

最近下班时一直看到做报表的部门每个人埋头苦干&#xff0c;不用说&#xff0c;这是又在忙半年度报告了。 现在&#xff0c;报表内卷现象十分严重&#xff0c;大家可能用的是一样的数据集&#xff0c;虽说每个人输出的报告可能结果差异不大&#xff0c;但懂得怎么利用工具&…

在HR眼里,IE证书早就不值钱了

大家好&#xff0c;我是老杨。 最近项目实在是忙&#xff0c;内容都写的少了一些&#xff0c;真的是有点力不从心的意思&#xff0c;人年纪大了&#xff0c;比不起当初年轻的自己了 和同事领导在一块儿的时间越多&#xff0c;就免不了聊到今年的就业环境。 我不提&#xff0…

Vue中如何进行代码编辑器与实时预览?

Vue中如何进行代码编辑器与实时预览&#xff1f; 在现代Web应用程序中&#xff0c;代码编辑器和实时预览已经成为了必不可少的一部分。Vue作为一款流行的JavaScript框架&#xff0c;也提供了一些工具和库&#xff0c;方便开发者在Vue中集成代码编辑器和实时预览功能。本文将介…

基于Eclipse+Java+Swing+Mysql实现超市销存管理系统

基于EclipseJavaSwingMysql实现超市销存管理系统 一、系统介绍二、功能展示1.登陆2.整体页面3.进货4.售货5.查询6、退出系统 三、数据库四、其它1.其他系统实现五.获取源码 一、系统介绍 系统实现了&#xff1a;商品进货、商品销售、库存查询 、进货查询、 售货查询、退出系统…

Date类(Java)

文章目录 1. 介绍2. 分析3. 方法3.1 Constructor()3.2 getTime()3.3 compareTo()3.4 equals() 1. 介绍 A. 类介绍&#xff1a;类Data表示特定的瞬间&#xff0c;可以精确到毫秒  Date类 有两个其他的函数。它允许把日期解释为年、月、日、小时、分钟和秒值  从 JDK 1.1 开始&…

Python自动化测试的配置层实现方式对标与落地 | 京东云技术团队

Python中什么是配置文件&#xff0c;配置文件如何使用&#xff0c;有哪些支持的配置文件等内容&#xff0c;话不多说&#xff0c;让我们一起看看吧~ 1 什么是配置文件&#xff1f; 配置文件是用于配置计算机程序的参数和初始化设置的文件&#xff0c;如果没有这些配置程序可能…

Vue中如何进行数据可视化关系图展示(如关系图谱)

Vue中如何进行数据可视化关系图展示&#xff08;如关系图谱&#xff09; 随着数据分析和可视化技术的发展&#xff0c;越来越多的应用开始使用关系图谱来展示数据之间的关系。在Vue中&#xff0c;我们可以使用第三方库Vis.js来实现关系图谱的展示&#xff0c;并通过Vue组件来进…