专栏名称: 3D视觉工坊
1、OpenCV的技术传播; 2、3D点云与重建技术; 3、Vslam技术; 4、深度学习; 5、技术干货分享。
目录
相关文章推荐
手游那点事  ·  告别2024游戏行业:纵有遗憾,但绝不止步 ·  2 天前  
手游那点事  ·  新作上线50天吸金22亿,这是什么炸裂的存在? ·  3 天前  
太格有物  ·  文化探索|滑雪后应该怎么玩,Après ... ·  3 天前  
51好读  ›  专栏  ›  3D视觉工坊

一文了解四足机器人的步态设计!

3D视觉工坊  · 公众号  ·  · 2023-03-26 00:00

正文

点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

编辑丨古月居
点击进入—>3D视觉工坊学习交流群


0、步态规划


四足机器人控制当中,步态是至关重要的一项。我们可以简单理解成四足机器人运动过程中各腿的状态,在这套设计方案中,我们对步态的规划主要分成两大主要部分,即接触状态和周期函数。而步态规划的目的,就是创建一个关于的足端接触状态的周期函数。



1、接触状态


四足机器人行进过程中,根据足端与地面是否发生接触,我们可以规定各条腿的两种接触状态,即接触(contact)与摆动(swing)


总控制器会根据步态规划给出的状态,移交至对应的控制器去处理,即摆动腿控制器(swing leg controll),接触腿控制器(contact leg control)。


对于这两种状态,可以简单地用一个布尔类型的值s来定义,即

对于周期性的步态规划,我们可以用下标Φ来进行区分,可以写成:



2、步态周期


四足机器人的运动归根到底都是周期运动,我们无须量化机器人运动的整个过程,因此如何量化定义一个完整的步态周期显得极为重要,在此我们使用基于时间的周期函数,定义一个基准相位值,公式如下:

其中,


  • t:当前运行时间

  • t0:当前周期开始时间

  • T:一个步态周期


同样我们可以利用取余的方法来简化上述周期函数,两者并无实质的区别:

其中


  • %为取余运算

  • t为当前运行时间


对于相同类型的周期信号,我们可以利用相位差来表征周期函数之间的差别,因此有了基准相位函数之后,我们就可以利用其来定义各条腿的相位,如下式:

其中,Φi,offset为第条腿与基准相位的相位差。



3、周期函数效果演示


这里简单利用一个线性函数进行演示

取a=1,b=1,其图像随时间变化如下:


利用周期函数对时间进行调整,可以使其变成周期函数,设定周期为2s,时长为10s,其图像如下:



从图像可以看出,刚好为5个周期,一个周期为一个尖角。接下来,为更好的观察各曲线相位,我们设定该直线函数的3个周期,其相位差(offset)分别为[0,1,3,4],图像如下:



从上图可以看出,我们的“尖角”会根据相位差,向前或向后平移。此方法对所有函数均适用,以下为利用sin函数进行的测试效果:


测试用代码:


import numpy as npimport matplotlib.pyplot as plt

T = 2*np.pit = np.linspace(0, 10, 100)offset = [0, 0.5*np.pi, np.pi, 1.5*np.pi]# offset = [0]*4phi_offset = []

def linear_fun(x):    return x+1

def linear_draw():    plt.title('linear_function')    plt.plot(t, linear_fun(t))

def single_period():    plt.title('period_linear_function')    plt.plot(t, linear_fun(t % T))

def period_draw():    plt.title('period_ot')    for i in range(len(offset)):        phi_offset.append(np.sin((t+offset[i]) % T))        plt.plot(t, phi_offset[i], label='%f' % offset[i])

period_draw()plt.legend()plt.show()



4、步态规划


因为我们的四足机器人足端,是在不停地与地面接触,悬空(摆动),所以这里说的步态规划,其实指的的一个连续(离散)时间上的接触序列。


我们以一条腿为例,本质上,可以看作是一个周期性的,用于生成各腿接触状态的阶跃函数。其输入值为时间,输出值为0或1,函数可以表示成如下:

其中t=t%T为时间的周期函数,其图像如下所示。


可以看出,步态规划器给出的是一段由0-1组成的接触序列。接下来加上相位关系。以tort步态为例,其相位为[0, 0.5, 0.5, 0],步态规划随时间的图像如下所示:



测试代码:


import numpy as npimport matplotlib.pyplot as plt
T = 1t = np.linspace(0, 5, 100)states = []FR = []FL = []BR = []BL = []
phi_offset = [FR, FL, BR, BL]offset = [0, 0.5, 0.5, 0]

def step(t):    if t < 0.5*T:        state = 0    else:        state = 1    return state

def draw():    for time in t:        for i in range(len(offset)):            phi_offset[i].append(step((time+offset[i]) % T))
   plt.subplot(411)    plt.ylabel('FR')    plt.plot(t, phi_offset[0])
   plt.subplot(412)    plt.ylabel('FL')    plt.plot(t, phi_offset[1])
   plt.subplot(413)    plt.ylabel('BR')    plt.plot(t, phi_offset[2])
   plt.subplot(414)    plt.ylabel('BL')    plt.plot(t, phi_offset[3])

fig = plt.figure()draw()fig.tight_layout()plt.show()



5、总结


综上,我们利用阶跃函数得到一串由0和1组成的序列,来表示四足机器人足端与地面的接触状态。根据不同的接触状态,再交由其他运动控制器进行控制,如接触状态,就由mpc模型计算出所需要的反作用力;而摆动状态,就交由摆动控制模块计算足端的摆动轨迹


最后根据需要的不同的行走姿态,确定个条腿之间的相位差,实现各腿的协同运动。至此我们完成了对四足机器人步态的数学建模,更多内容可以点击主页查看,点点关注,后续会有更多相关内容。


本文仅做学术分享,如有侵权,请联系删文。


点击进入—>3D视觉工坊学习交流群


干货下载与学习

后台回复:巴塞罗自治大学课件,即可下载国外大学沉淀数年3D Vison精品课件

后台回复:计算机视觉书籍,即可下载3D视觉领域经典书籍pdf

后台回复:3D视觉课程,即可学习3D视觉领域精品课程

3D视觉工坊精品课程官网:3dcver.com

1.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
2.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
3.国内首个面向工业级实战的点云处理课程
4.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
5.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
6.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
7.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

8.从零搭建一套结构光3D重建系统[理论+源码+实践]

9.单目深度估计方法:算法梳理与代码实现
10.自动驾驶中的深度学习模型部署实战
11.相机模型与标定(单目+双目+鱼眼)
12.重磅!四旋翼飞行器:算法与实战
13.ROS2从入门到精通:理论与实战
14.国内首个3D缺陷检测教程:理论、源码与实战
15.基于Open3D的点云处理入门与实战教程
16.透彻理解视觉ORB-SLAM3:理论基础+代码解析+算法改进
17.机械臂抓取从入门到实战

重磅!粉丝学习交流群已成立

交流群要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、ORB-SLAM系列源码交流、深度估计、TOF、求职交流等方向。
扫描以下二维码,添加小助理微信(dddvisiona),一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿,微信号:dddvisiona

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)源码分享、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答等进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,6000+星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看,3天内无条件退款
高质量教程资料、答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~