当前位置: 首页 > news >正文

网站智能建设系统源码seo品牌优化

网站智能建设系统源码,seo品牌优化,app开发步骤,东莞纸箱定制 技术支持 东莞网站建设实例9:四足机器人正向运动学单腿可视化 实验目的 通过动手实践,搭建mini pupper四足机器人的腿部,掌握机器人单腿结构。通过理论学习,熟悉几何法、旋转矩阵法在运动学正解(FK)中的用处。通过编程实践&…

实例9:四足机器人正向运动学单腿可视化

实验目的

  1. 通过动手实践,搭建mini pupper四足机器人的腿部,掌握机器人单腿结构。
  2. 通过理论学习,熟悉几何法、旋转矩阵法在运动学正解(FK)中的用处。
  3. 通过编程实践,熟悉可视化简化机器人单腿的方法。

实验要求

通过Python编程,在简化的mini pupper平面二连杆模型内,让用户输入关节角,根据关节角及关节的基本信息,计算出每个关节相对于基坐标系的坐标,并将其可视化输出。

实验知识

1.什么是正向运动学 Forward Kinematics ?

在mini pupper的实际运动操作中,需要考虑计算小腿末端相对身体基座标系位置和姿态关系的静态几何问题。简单来说,就是给定一组关节角的值,计算小腿末端坐标系相对于基坐标系的位姿。
正向运动学探究的问题可以看做由关节空间Joint Space (θ1,θ2,⋅⋅⋅⋅,θn)(\theta_1,\theta_2,····,\theta_n)θ1,θ2,⋅⋅⋅⋅,θn描述到 笛卡尔空间Cartesian Space (WorldP)(^{World}P)WorldP 描述的位置表示。
探究这种位置的表示关系就是正向运动学,对于机器人来说,就是以操作臂的关节变量为自变量,描述操作臂末端执行器的位姿与基坐标系之间的函数关系。

2.怎么描述机器人的一条腿?

既然要考虑计算mini pupper实际运动中小腿末端相对身体基座标系位置和姿态关系的计算,就应该有对应的定性和定量的描述及表示来使得计算能够实现。
在机器人学中,操作臂由连杆link组成,将连杆视作刚体,相邻连杆由关节joint连接,关节可以相对 转动(revolute) 或者 移动(prismatic),转动的轴被称为Axis
操作臂的这种描述对应到人体上,可以看作简化的人类的手臂,“大臂”就是一个连杆,通过“肘关节”这个关节和另一个连杆“小臂”相连,mini pupper也是相同的道理。

关节的转动和移动引出了两个数学量,对于转动关节,相邻杆件的相对角度变化被称为关节角,而对于移动关节,相邻杆件之间的相对位移变化被称为关节偏移量

对于操作臂来说,自由度的数量是具有独立的位置变量的数目,常见的工业机器人大都是开式的运动链,每个关节位置由唯一变量来定义,因此关节的数目常常等于自由度的数量。

操作臂的末端被称为末端执行器,比如夹具、焊枪等,通常用设置在末端执行器上的工具坐标系Frame_Tool与操作臂的固定底座的参考基坐标系Frame_Base的相对关系,来描述操作臂的位置与姿态。

3.怎么描述腿间部件的关系?

为了描述相邻连杆之间的关系,引入了4个变量对连杆的空间关系进行描述。

名称符号含义注释
连杆长度ai−1a_{i-1}ai1两个相邻关节轴之间公垂线的长度连杆长度是沿着X^i−1\hat X_{i-1}X^i1方向,Z^i−1\hat Z_{i-1}Z^i1Z^i\hat Z_{i}Z^i之间公垂线的长度。因为ai−1a_{i-1}ai1是距离,所以始终有ai−1≥0a_{i-1}\geq0ai10
连杆扭转角αi−1\alpha_{i-1}αi1沿着ai−1a_{i-1}ai1方向的投影平面中两关节轴线的夹角连杆扭转角是沿着X^i−1\hat X_{i-1}X^i1方向看去所形成的的二维平面内Z^i−1\hat Z_{i-1}Z^i1Z^i\hat Z_{i}Z^i的夹角,按照右手法从Z^i−1\hat Z_{i-1}Z^i1扭向Z^i\hat Z_{i}Z^i取正负。
连杆偏距did_{i}di沿两个相邻连杆公共轴线方向的距离。沿着Z^i\hat Z_{i}Z^i方向看去,对于X^i−1\hat X_{i-1}X^i1Z^i\hat Z_{i}Z^i所在直线的相交点和X^i\hat X_{i}X^iZ^i\hat Z_{i}Z^i所在直线的相交点,这两个相交点的距离。
关节角θi\theta_{i}θi两相邻连杆绕公共轴线旋转的角度。沿着Z^i\hat Z_{i}Z^i方向看,二维平面内X^i−1\hat X_{i-1}X^i1X^i\hat X_{i}X^i的夹角,方向为X^i−1\hat X_{i-1}X^i1扭向X^i\hat X_{i}X^i

连杆扭转角和连杆长度定义了同一杆件的两个关节轴之间的关系,关节角和连杆偏距定义了连杆是如何连接的。
上表注释中提及的X^i\hat X_{i}X^iY^i\hat Y_{i}Y^iZ^i\hat Z_{i}Z^i将在后文中结合连杆坐标系提及,可结合理解。

4.Denavit-Hartenberg表达法

简称为DH表达法,版本为Craig version,DH法是用四个连杆参数来描述机构运动关系的规则,两个参数用于描述连杆本身,另外两个参数用于描述连杆之间的连接关系。
这四个参数即是之前所提到的连杆扭转角αi−1\alpha_{i-1}αi1连杆长度ai−1a_{i-1}ai1关节角θi\theta_{i}θi连杆偏距did_{i}di
通常来说,对于转动关节,关节变量为关节角θi\theta_{i}θi,对于移动关节,关节变量为连杆偏距did_{i}di
对于这类关节,除了关节变量外的其他的三个连杆参数都是固定不变的硬件属性参数。

5.连杆坐标系

为了描述连杆间的关系,坐标系被引入,因此需要在每个连杆上建立连杆坐标系,对于连杆i−1{i-1}i1,其上有连杆坐标系{i−1}\{i-1\}{i1},在Craig改良DH法中,连杆坐标系的原点通常被规定在在关节轴Axis(i−1)Axis_{(i-1)}Axis(i1)上。
按照这种坐标系的规定,固定连杆坐标系的各正交轴如下:

轴或点定义
原点公垂线aia_iai与关节轴AxisiAxis_iAxisi的交点
Z^i\hat Z_iZ^i与关节轴AxisiAxis_iAxisi重合
X^i\hat X_iX^i沿着 公垂线aia_iai由关节jointijoint_ijointi指向关节jointi+1joint_{i+1}jointi+1方向。当公垂线ai=0a_i=0ai=0时,X^i\hat X_iX^i垂直于 Z^i\hat Z_iZ^iZ^i+1\hat Z_{i+1}Z^i+1形成的平面,可以有两个方向,根据方便选用
Y^i\hat Y_iY^i根据右手定则确定,已知拇指为 X^i\hat X_iX^i,食指为Y^i\hat Y_iY^i ,已知中指为Z^i\hat Z_iZ^i

连杆坐标系中的特殊存在

首端连杆

首端连杆被称为地杆,机器人的固定基座上的坐标系{0}\{0\}{0}常被用作参考坐标系。Z^0\hat Z_0Z^0方向和Z^1\hat Z_1Z^1相同,并当坐标系{1}\{1\}{1}的关节变量θi\theta_{i}θidid_{i}di为0时,使坐标系{0}\{0\}{0}和坐标系{1}\{1\}{1}重合,以简化计算。

转动关节Revolute jointα0=0a0=0d1=0θ1=?(当为0时Frame重合)\text {转动关节Revolute joint} \quad \alpha_0=0 \quad a_0=0 \quad d_1=0 \quad\theta_1=?(当为0时Frame重合) 转动关节Revolute jointα0=0a0=0d1=0θ1=?(当为0Frame重合)
移动关节Prismatic jointα0=0a0=0θ1=0d1=?(当为0时Frame重合)\text {移动关节Prismatic joint} \quad \alpha_0=0 \quad a_0=0 \quad \theta_1=0 \quad d_1=?(当为0时Frame重合) 移动关节Prismatic jointα0=0a0=0θ1=0d1=(当为0Frame重合)

末端连杆

末端杆没有下一根杆件,因此要和上一根杆件找关联。
对于转动关节,X^n\hat X_nX^n方向和X^n−1\hat X_{n-1}X^n1相同,再选取设置原点使得dn=0d_n=0dn=0
对于移动关节,选取设置X^n\hat X_nX^n方向使得θn=0\theta_n=0θn=0,当dn=0d_n=0dn=0时,原点位于关节轴nnnX^n−1\hat X_{n-1}X^n1交点处

学习完连杆坐标系中,连杆参数可以更简单地理解:

名称符号含义
连杆扭转角αi−1\alpha_{i-1}αi1连杆扭转角是绕X^i−1\hat X_{i-1}X^i1轴,Z^i−1\hat Z_{i-1}Z^i1旋转到Z^i\hat Z_{i}Z^i的夹角
连杆长度ai−1a_{i-1}ai1连杆长度是沿着X^i−1\hat X_{i-1}X^i1轴,Z^i−1\hat Z_{i-1}Z^i1移动到Z^i\hat Z_{i}Z^i的公垂线的长度
关节角θi\theta_{i}θiZ^i\hat Z_{i}Z^i轴,X^i−1\hat X_{i-1}X^i1旋转到X^i\hat X_{i}X^i的夹角
连杆偏距did_{i}di沿着Z^i\hat Z_{i}Z^i轴,X^i−1\hat X_{i-1}X^i1移动到X^i\hat X_{i}X^i的距离

建立连杆坐标系和DH表

  1. 找出关节轴
    分析运动状态,找出关节平移或转动的轴向(joint axes)
  2. 找出Z^i\hat Z_{i}Z^i
    Z^i\hat Z_{i}Z^i的正方向为转动或移动的轴axis方向
  3. 找出X^i\hat X_{i}X^i
    X^i\hat X_{i}X^i的正方向是两个关节轴之间公垂线上,指向下一个关节轴的方向
    ai=0a_i=0ai=0时,即当两关节轴相交时,XXXZiZ_iZiZi+1Z_{i+1}Zi+1的方向垂直,此时方向怎么方便怎么来)
  4. 确定原点
    原点即为Z^i\hat Z_{i}Z^iX^i\hat X_{i}X^i的交点
  5. 找出Y^i\hat Y_{i}Y^i
    根据右手定则确定,拇指为 X^i\hat X_iX^i,食指为Y^i\hat Y_iY^i ,中指为Z^i\hat Z_iZ^i
  6. 处理首端连杆
    并当Frame1Frame_1Frame1的关节变量θi\theta_{i}θidid_{i}di为0时,使Frame0Frame_0Frame0Frame1Frame_1Frame1重合,以简化计算。
  7. 处理末端连杆
    尽量使得连杆参数为0以简化计算

根据以上几步处理的结果,可以获取DH参数表

DH参数表是Frame之间的关系,每个i代表一对轴之间的关系
表中的1为基坐标系Frame0Frame_0Frame0与第一个轴坐标系Frame1Frame_1Frame1的关系
表中的3为末端连杆与最后一个可(转、平移)的轴的关系

iαi−1\alpha_{i-1}αi1ai−1a_{i-1}ai1θi\theta_iθidid_idi
100θ1\theta_1θ10
20L1L_1L1θ2\theta_2θ20
30L2L_2L2θ3\theta_3θ30

6.连杆坐标系之间的转化

对于Framei−1Frame_{i-1}Framei1,要从Axisi−1Axis_{i-1}Axisi1AxisiAxis_{i}Axisi
首先,完成从Z^i−1\hat Z_{i-1}Z^i1Z^i\hat Z_{i}Z^i的旋转αi−1\alpha_{i-1}αi1和平移ai−1a_{i-1}ai1距离。

然后,将旋转和平移后的Axisi−1Axis_{i-1}Axisi1旋转θi\theta_{i}θi,并沿着Z^i\hat Z_{i}Z^i方向平移did_{i}di距离。
总计进行四次操作,最终可得
i−1P=ii−1TiP^{i-1}P=^{i-1}_iT^{i}P i1P=ii1TiP
ii−1T^{i-1}_iTii1T中合并了这四次操作,得出该变换矩阵:
ii−1T=[Cosθi−Sinθi0ai−1SinθiCosαi−1CosθiCosαi−1−Sinαi−1−Sinαi−1diSinθiSinαi−1CosθiSinαi−1Cosαi−1Cosαi−1di0001]^{i-1}_iT= \left[ \begin{matrix} Cos\theta_i & -Sin\theta_i & 0 & a_{i-1} \\ Sin\theta_iCos\alpha_{i-1} & Cos\theta_iCos\alpha_{i-1} & -Sin\alpha_{i-1} &-Sin\alpha_{i-1}d_i\\ Sin\theta_iSin\alpha_{i-1} & Cos\theta_iSin\alpha_{i-1} & Cos\alpha_{i-1} &Cos\alpha_{i-1}d_i\ \\ 0&0&0&1 \end{matrix} \right] ii1T=CosθiSinθiCosαi1SinθiSinαi10SinθiCosθiCosαi1CosθiSinαi100Sinαi1Cosαi10ai1Sinαi1diCosαi1di 1
多次使用该变换矩阵可以得出不相邻的关节之间的转化关系

7.mini pupper的简化运动学结构

mini pupper的单条腿部可简化视作典型的三连杆非平面操作臂,三自由度的设计使得它理论上能够到达空间限位范围内的任意位置。
当我们进一步简化,不考虑横向髋关节运动时,mini pupper的腿部可以简化为平面二连杆机构RR模型,使用几何解法即可在已知θ1\theta_1θ1θ2\theta_2θ2的情况下求得0P^0P0P的坐标,完成运动学正解。
对于大臂与小臂相交处QQQ
xq=l1Cosθ1x_q=l_1Cos\theta_1 xq=l1Cosθ1
yq=l1Sinθ1y_q=l_1Sin\theta_1 yq=l1Sinθ1

对于小臂末端点:
xp=l1Cosθ1+l2Cos(θ1+θ2)x_p=l_1Cos\theta_1+l_2Cos(\theta_1+\theta_2) xp=l1Cosθ1+l2Cos(θ1+θ2)
yp=l1Sinθ1+l2Sin(θ1+θ2)y_p=l_1Sin\theta_1+l_2Sin(\theta_1+\theta_2) yp=l1Sinθ1+l2Sin(θ1+θ2)

图片:平面二连杆机构RR模型
在这里插入图片描述

实验步骤

1. 编写Python代码 rr_manipulator.py

#!/usr/bin/python
# coding:utf-8
# rr_manipulator.py
# mini pupper的简化单腿,可视作同一平面的RR类机械臂,可视化该机械臂,由给定角度计算末端点位置
import matplotlib.pyplot as plt  # 引入matplotlib
import numpy as np  # 引入numpy
from math import radians, sin, cos# 几何法:关节角转端点坐标
def theta_2_position_rr(l1, l2, theta1, theta2):"""运动学正解 将输入的关节角转化为对应的端点坐标:param l1: 大臂长:param l2: 小臂长:param theta1: 大臂关节角:param theta2: 小臂关节角:return: 端点1坐标 端点2坐标"""point_1 = [l1*cos(radians(theta1)), l1*sin(radians(theta1))]point_2 = [l1*cos(radians(theta1))+l2*cos(radians(theta1+theta2)),l1*sin(radians(theta1))+l2*sin(radians(theta1+theta2))]print(point_1)print(point_2)return point_1, point_2def preprocess_drawing_data(points):"""处理点坐标数据转化为matplotlib适应的绘图格式:param points: 点数据:return: 绘图数据x坐标list和对应的y坐标list"""xs = [0]ys = [0]xs.append(points[0][0])xs.append(points[1][0])ys.append(points[0][1])ys.append(points[1][1])return xs, ys# 关节信息
# 大臂长度:5 cm 小臂长度:6 cm
link_length = [5, 6]  # in cm# 关节角初始化
joints_angle_origin = [30, 30]
joints_angle = [0, 0]
print("关节角初始状态 theta1=%d°, theta2=%d°" % (joints_angle_origin[0], joints_angle_origin[1]))# 输入连杆参数:各关节角
for i in range(1, 3):joints_angle[i-1] = int(input("请输入腿部舵机[%d]要转动的的角度:" % i))print("腿部舵机[{0}]将转动{1}°".format(i, joints_angle[i-1]))# 计算并预处理绘图数据
points_origin = theta_2_position_rr(link_length[0], link_length[1], joints_angle_origin[0], joints_angle_origin[1])
points_after = theta_2_position_rr(link_length[0], link_length[1], joints_angle[0], joints_angle[1])
data_origin = preprocess_drawing_data(points_origin)
data_after = preprocess_drawing_data(points_after)# 绘图
fig, ax = plt.subplots()  # 建立图像
plt.plot(data_origin[0], data_origin[1], color='black', label='original')
plt.scatter(data_origin[0], data_origin[1], color='black')
plt.plot(data_after[0], data_after[1], color='red', label='after')
plt.scatter(data_after[0], data_after[1], color='blue')
ax.set(xlabel='X', ylabel='Y', title='mini pupper FK RR model')
ax.grid()
plt.legend()
plt.show()

2. 运行程序,观察效果

在rr_manipulator.py的目录下执行以下命令:

sudo python rr_manipulator.py

此时应观察到根据关节角计算出的可视化坐标。
在这里插入图片描述

实验总结

经过本知识点的学习和实验操作,你应该能达到以下水平:

知识点内容了解熟悉掌握
硬件mini pupper单腿结构的搭建
运动学平面RR类型机械臂的运动学正解
运动学非平面RRR类型机械臂
运动学几何法完成运动学正解
运动学运动学正解基础知识
可视化Python可视化运动学

版权信息:教材尚未完善,此处预留版权信息处理方式
mini pupper相关内容可访问:https://github.com/mangdangroboticsclub

http://www.qdjiajiao.com/news/12184.html

相关文章:

  • 网站建设预期周期百度怎么搜索关键词
  • 龙川网站建设疫情放开最新消息今天
  • 成都发现1例新冠本土病例seo搜索引擎优化
  • 网站建设如何跑单子市场营销一般在哪上班
  • 什么软件做美食视频网站好百度问答平台
  • 网站制作怎样做背景seo有哪些作用
  • 做网站app怎么赚钱搜索引擎调词工具
  • 专注高密做网站的360免费建站
  • 中国企业查询网官网什么是seo营销
  • 厦门网站seo百度推广销售话术
  • 中国嘉兴门户网站互联网营销策划是做什么的
  • 做网站想注册商标是哪一类南宁关键词优化软件
  • 微网站设置山西seo
  • 做淘宝优惠劵网站服务器配置电商网站建设 网站定制开发
  • 石家庄网站设计建设网络营销主要干什么
  • 宿迁市建设局投诉网站深圳做网站的公司有哪些
  • wordpress的菜单和页面外贸网站优化
  • 甘肃省工程建设信息官方网站搜索引擎营销的概念
  • 网站改版提升总结广州私人做网站
  • 如何用凡科网建立一个网站国家职业技能培训学校
  • 北京网站搭建服务怎么做
  • 网站认证值不值得做如何建网站详细步骤
  • 西部数码网站建设助手百度平台客服人工电话
  • 如何看网站几级域名南通网站快速收录
  • 如何让百度快速收录网站无锡网站推广公司
  • 做资金盘网站推广运营怎么做
  • 官网网站备案电商seo是什么意思啊
  • 做网站需要的公司西安百度网站排名优化
  • 做的网站简述seo的优化流程
  • 百度怎么建设网站网络优化app哪个好