实例9:四足机器人运动学正解平面RR单腿可视化

news2024/11/25 5:01:08

实例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 ( W o r l d P ) (^{World}P) WorldP 描述的位置表示。
探究这种位置的表示关系就是正向运动学,对于机器人来说,就是以操作臂的关节变量为自变量,描述操作臂末端执行器的位姿与基坐标系之间的函数关系。

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

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

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

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

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

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

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

名称符号含义注释
连杆长度 a i − 1 a_{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之间公垂线的长度。因为 a i − 1 a_{i-1} ai1是距离,所以始终有 a i − 1 ≥ 0 a_{i-1}\geq0 ai10
连杆扭转角 α i − 1 \alpha_{i-1} αi1沿着 a i − 1 a_{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的夹角,按照右手法从 Z ^ i − 1 \hat Z_{i-1} Z^i1扭向 Z ^ i \hat Z_{i} Z^i取正负。
连杆偏距 d i d_{i} di沿两个相邻连杆公共轴线方向的距离。沿着 Z ^ i \hat Z_{i} Z^i方向看去,对于 X ^ i − 1 \hat X_{i-1} X^i1 Z ^ i \hat Z_{i} Z^i所在直线的相交点和 X ^ i \hat X_{i} X^i Z ^ 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^i1 X ^ 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^i Y ^ i \hat Y_{i} Y^i Z ^ i \hat Z_{i} Z^i将在后文中结合连杆坐标系提及,可结合理解。

4.Denavit-Hartenberg表达法

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

5.连杆坐标系

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

轴或点定义
原点公垂线 a i a_i ai与关节轴 A x i s i Axis_i Axisi的交点
Z ^ i \hat Z_i Z^i与关节轴 A x i s i Axis_i Axisi重合
X ^ i \hat X_i X^i沿着 公垂线 a i a_i ai由关节 j o i n t i joint_i jointi指向关节 j o i n t i + 1 joint_{i+1} jointi+1方向。当公垂线 a i = 0 a_i=0 ai=0时, X ^ i \hat X_i X^i垂直于 Z ^ i \hat Z_i Z^i Z ^ i + 1 \hat Z_{i+1} Z^i+1形成的平面,可以有两个方向,根据方便选用
Y ^ i \hat Y_i Y^i根据右手定则确定,已知拇指为 X ^ i \hat X_i X^i,食指为 Y ^ i \hat Y_i Y^i ,已知中指为 Z ^ i \hat Z_i Z^i

连杆坐标系中的特殊存在

首端连杆

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

转动关节Revolute joint α 0 = 0 a 0 = 0 d 1 = 0 θ 1 = ? ( 当为 0 时 F r a m e 重合 ) \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 = 0 a 0 = 0 θ 1 = 0 d 1 = ? ( 当为 0 时 F r a m e 重合 ) \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_n X^n方向和 X ^ n − 1 \hat X_{n-1} X^n1相同,再选取设置原点使得 d n = 0 d_n=0 dn=0
对于移动关节,选取设置 X ^ n \hat X_n X^n方向使得 θ n = 0 \theta_n=0 θn=0,当 d n = 0 d_n=0 dn=0时,原点位于关节轴 n n n X ^ 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的夹角
连杆长度 a i − 1 a_{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} θi Z ^ i \hat Z_{i} Z^i轴, X ^ i − 1 \hat X_{i-1} X^i1旋转到 X ^ i \hat X_{i} X^i的夹角
连杆偏距 d i d_{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的正方向是两个关节轴之间公垂线上,指向下一个关节轴的方向
    a i = 0 a_i=0 ai=0时,即当两关节轴相交时, X X X Z i Z_i Zi Z i + 1 Z_{i+1} Zi+1的方向垂直,此时方向怎么方便怎么来)
  4. 确定原点
    原点即为 Z ^ i \hat Z_{i} Z^i X ^ i \hat X_{i} X^i的交点
  5. 找出 Y ^ i \hat Y_{i} Y^i
    根据右手定则确定,拇指为 X ^ i \hat X_i X^i,食指为 Y ^ i \hat Y_i Y^i ,中指为 Z ^ i \hat Z_i Z^i
  6. 处理首端连杆
    并当 F r a m e 1 Frame_1 Frame1的关节变量 θ i \theta_{i} θi d i d_{i} di为0时,使 F r a m e 0 Frame_0 Frame0 F r a m e 1 Frame_1 Frame1重合,以简化计算。
  7. 处理末端连杆
    尽量使得连杆参数为0以简化计算

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

DH参数表是Frame之间的关系,每个i代表一对轴之间的关系
表中的1为基坐标系 F r a m e 0 Frame_0 Frame0与第一个轴坐标系 F r a m e 1 Frame_1 Frame1的关系
表中的3为末端连杆与最后一个可(转、平移)的轴的关系

i α i − 1 \alpha_{i-1} αi1 a i − 1 a_{i-1} ai1 θ i \theta_i θi d i d_i di
100 θ 1 \theta_1 θ10
20 L 1 L_1 L1 θ 2 \theta_2 θ20
30 L 2 L_2 L2 θ 3 \theta_3 θ30

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

对于 F r a m e i − 1 Frame_{i-1} Framei1,要从 A x i s i − 1 Axis_{i-1} Axisi1 A x i s i Axis_{i} Axisi
首先,完成从 Z ^ i − 1 \hat Z_{i-1} Z^i1 Z ^ i \hat Z_{i} Z^i的旋转 α i − 1 \alpha_{i-1} αi1和平移 a i − 1 a_{i-1} ai1距离。

然后,将旋转和平移后的 A x i s i − 1 Axis_{i-1} Axisi1旋转 θ i \theta_{i} θi,并沿着 Z ^ i \hat Z_{i} Z^i方向平移 d i d_{i} di距离。
总计进行四次操作,最终可得
i − 1 P = i i − 1 T i P ^{i-1}P=^{i-1}_iT^{i}P i1P=ii1TiP
i i − 1 T ^{i-1}_iT ii1T中合并了这四次操作,得出该变换矩阵:
i i − 1 T = [ C o s θ i − S i n θ i 0 a i − 1 S i n θ i C o s α i − 1 C o s θ i C o s α i − 1 − S i n α i − 1 − S i n α i − 1 d i S i n θ i S i n α i − 1 C o s θ i S i n α i − 1 C o s α i − 1 C o s α i − 1 d i   0 0 0 1 ] ^{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的情况下求得 0 P ^0P 0P的坐标,完成运动学正解。
对于大臂与小臂相交处 Q Q Q
x q = l 1 C o s θ 1 x_q=l_1Cos\theta_1 xq=l1Cosθ1
y q = l 1 S i n θ 1 y_q=l_1Sin\theta_1 yq=l1Sinθ1

对于小臂末端点:
x p = l 1 C o s θ 1 + l 2 C o s ( θ 1 + θ 2 ) x_p=l_1Cos\theta_1+l_2Cos(\theta_1+\theta_2) xp=l1Cosθ1+l2Cos(θ1+θ2)
y p = l 1 S i n θ 1 + l 2 S i n ( θ 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_2

def 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.coloradmin.cn/o/373443.html

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

相关文章

一个好的python文件可以有几种用途?

大家好鸭!我是小熊猫~ 这次来带大家浅浅回顾一点python小知识~ 源码资料电子书:点击此处跳转文末名片获取 python文件总共有两种用途: 一种是执行文件另一种是被当做模块导入 编写好的一个python文件可以有两种用途: 1. 脚本,…

Laravel框架02:路由与控制器

Laravel框架02:路由与控制器一、路由配置文件二、路由参数三、路由别名四、路由群组五、控制器概述六、控制器路由七、接收用户输入一、路由配置文件 以web网页路由文件为例: 默认根路由 路由定义格式Route::请求方式(请求的URL, 匿名函数或控制响应的方…

【MongoDB】一、MongoDB的安装与部署

【MongoDB】一、MongoDB的安装与部署实验目的实验内容实验步骤一、下载MongoDB安装包二、创建文件夹data及子文件夹db和log三、启动MongDB服务1. 在命令行窗口执行启动MongoDB服务命令2. 打开mongodb.log3. 打开浏览器进行启动验证四、登录MongoDB五、配置环境变量六、将MongDB…

yii-shopwind商城多数页面报错,修改mysql一个配置就解决!

解决办法打开mysql配置文件,在[mysqld]下添加如下一行:sql_modeNO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES成功解决!还以为是网站的代码问题, 惊讶到我了. 开源网站下载下来就报错 多不可思议. 终于是配置的问题!加油报错信息如下是其中一个界面的&…

银行数字化转型导师坚鹏:招商银行数字化转型战略研究

招商银行数字化转型战略研究课程背景: 很多银行存在以下问题: 不清楚如何制定银行数字化转型战略? 不知道其它银行的数字化转型战略是如何演变的? 课程特色: 用实战案例解读招商银行数字化转型战略。 用独特视角解…

【自然语言处理】基于句子嵌入的文本摘要算法实现

基于句子嵌入的文本摘要算法实现人们在理解了文本的含义后,很容易用自己的话对文本进行总结。但在数据过多、缺乏人力和时间的情况下,自动文本摘要则显得至关重要。一般使用自动文本摘要的原因包括: 减少阅读时间根据摘要,选择自…

Widget中的State-学习笔记

Widget 有 StatelessWidget 和 StatefulWidget 两种类型。StatefulWidget 应对有交互、需要动态变化视觉效果的场景,而 StatelessWidget 则用于处理静态的、无状态的视图展示。StatefulWidget 的场景已经完全覆盖了 StatelessWidget,因此我们在构建界面时…

如何把Windows自带壁纸、锁屏壁纸取出作为自己的桌面壁纸?(附:批量更改文件后缀名的方法)

这是一个目录0.0Windows桌面自带壁纸(个性化中的壁纸)Windows聚焦的锁屏壁纸批量更改后缀名的办法最近开机时,发现Windows聚焦的锁屏壁纸都很好看,特别想留下来当桌面壁纸,寻找了一下之后,终于找到了储存路…

第一节 变量、数据类型、关键字标识符

变量 什么是变量:就是用来存储一个数据的内存区域,而且里面存储的数据可以变化。 double money 10.0; 变量使用的注意事项: 1.先声明再使用。 2.变量声明后,就不能存储其他数据。 3.变量的有效范围是从定义开始到“}…

Dubbo源码解析-——SPI机制

文章目录一、什么是SPI机制二、Java原生的SPI机制2.1、javaSPI示例2.1.1、编写接口和实现类2.1.2、编写配置文件2.1.3、通过SPI机制加载实现类2.1.4、JAVA SPI 源码解析2.1.4.1、ServiceLoader#load2.1.4.2、ServiceLoader构造方法2.1.4.3、ServiceLoader#reload2.1.4.4、LazyI…

IoT项目系统架构案例2

项目背景 1.这个项目是对之前的案例的升级改造参考:IoT项目系统架构案例_iot案例_wxgnolux的博客-CSDN博客2.基于方案1的项目实施过程中碰到的问题,对硬件设备标准化的理念及新的功能需求(如根据天气预报温度调水温,APP界面可操作性优化等)•采用目前IoT主流厂商的架…

java的一些冷知识

接口并没有继承Object类首先接口是一种特殊的类,理由就是将其编译后是一个class文件大家都知道java类都继承自Object,但是接口其实是并没有继承Object类的 可以自己写代码测试: 获取接口类的class对象后遍历它的methods,可以发现是不存在Obje…

Java EE|TCP/IP协议栈之网络层IP协议详解

文章目录一、IP协议感性认知简介特点二、IP协议报头结构4位版本4位首部长度8位服务类型16位总长度16位标识8位生存时间(TTL)8位协议16位首部长度32位源ip&32位目的地址三、网络地址管理网段划分路由选择参考一、IP协议感性认知 简介 P是整个TCP/IP…

【云原生】k8s的pod基本概念

一、资源限制 Pod 是 kubernetes 中最小的资源管理组件,Pod 也是最小化运行容器化应用的资源对象。一个 Pod 代表着集群中运行的一个进程。kubernetes 中其他大多数组件都是围绕着 Pod 来进行支撑和扩展 Pod 功能的,例如用于管理 Pod 运行的 StatefulSe…

小说网站测试

目录 通用测试点 登录页面测试 接口测试 UI测试 注册页面 接口自动化 UI测试 忘记密码页面 接口测试 UI测试 修改密码页面 进行接口测试 UI测试 主页页面测试 分类页面测试 ​查询页面测试 作者页面测试 阅读小说页面测试 书架页面测试 通用测试点 登录页面测试 接…

k8s-资源限制-探针检查

文章目录一、资源限制1、资源限制的使用2、reuqest资源(请求)和limit资源(约束)3、Pod和容器的资源请求和限制4、官方文档示例5、资源限制实操5.1 编写yaml资源配置清单5.2 释放内存(node节点,以node01为例…

计算机网络题库---错题本

(一)老生常谈 第一章: 1.什么是计算机网络?其主要功能是什么? 解答: 利用通信设备和线路,将分布在地理位置不同的、功能独立的多个计算机系统连接起来,以功能完善的网络软件实现网…

ChatGPT 开发人员教程 - 38种提高工作效率10倍的方法

未来的时代,又将是一个“洋枪洋炮”对“大刀长矛”的时代。在过去的十年里,传统行业在和经过IT改造的行业竞争时,无一例外地败北。08年金融危机前,全世界市值前十的公司,只有微软一家是IT企业。仅仅过去了十年&#xf…

文献阅读:Training language models to follow instructions with human feedback

文献阅读:Training language models to follow instructions with human feedback 1. 文献工作简介2. 模型优化设计3. 实验结果4. 总结 & 思考 文献链接:https://arxiv.org/abs/2203.02155 1. 文献工作简介 这篇文章是OpenAI在上年提出的一篇对于…

Go项目(商品微服务-1)

文章目录简介建表protohandler商品小结简介 商品微服务主要在于表的设计,建哪些表?表之间的关系是怎样的? 主要代码就是 CURD表和字段的设计是一个比较有挑战性的工作,比较难说清楚,也需要经验的积累,这里…