【MR】现代机器人学-时间最优时间缩放

MR章节目录

第2章 配置空间 第3章 刚体运动 第4章 正向运动学 第5章 速度运动学与静力学 第6章 逆向运动学 第7章 闭链运动学 第8章 开链动力学 第9章 轨迹生成 9.1 定义 9.2 点到点轨迹 9.3 多项式通过点轨迹 9.4 时间最优时间缩放

第10章 运动规划 第11章 机器人控制 第12章 抓取与操作 第13章 轮式移动机器人


Modern Robotics, Chapter 9.4: Time-Optimal Time Scaling (Part 1 of 3)

56082346f026e59a8fa2f297d7ebbd6a.png

6853d76521fa09363b619bbd71cc4339.png

在接下来的几个视频中,我们考虑以下
问题:
给定所需的路径 theta-of-s,
考虑机器人的动力学和
机器人关节处的扭矩限制,找到沿该路径的最佳时间缩放。
最短时间运动可用于最大限度地提高
机器人的生产率。
您可以想象尝试优化其他
标准,例如
执行器消耗的能量,但在接下来的几个视频中,
我们将重点关注时间最佳轨迹。

81bb0ea6670d533bdd3cf3a4866fabd3.png

回想一下,机器人的动力学可以
写成 M 乘以 θ 双点加上
速度乘积项加上重力项,
等于关节力和扭矩矢量 tau。
在这里,我使用 Christoffel 符号矩阵 Gamma 编写了速度乘积项,
以强调它在关节速度矢量中是二次的
。
请记住,我们只
对机器人位于
路径 theta-of-s 上时的动力学感兴趣,我们可以将 theta-dot
和 theta-double-dot 重写为
路径相对于以下导数的函数 s
以及 s 对时间的导数。
将这些表达式代入动力学中,
我们得到此处所示的表达式。
由于路径是预先给定的,
theta 对 s 的导数也是预先已知的
,只有 s、s-dot 和 s-double-dot
是变量。
因此,我们可以将这个方程写为
向量方程 m-of-s 乘以 s-double-dot
加上 c-of-s 乘以 s-dot-squared 加上 g-of-s
等于 tau。
m-of-s、c-of-s 和 g-of-s 中的每一个都是
s 的向量函数,其中 c-of-s 乘以 s-dot-squared
是速度积项,g-of-  s 是
引力项,m-of-s 起到质量的作用
。然而,
m 向量的某些元素可能为负
。
该方程是机器人
被限制沿路径
theta-of-s 移动时的动力学方程。
该方程没有说明
机器人偏离路径时的动力学。

11dbb5d603e67680599abade4139a6d6.png

现在我们已经用
单路径参数 s(而
不是关节矢量 theta)来表达动力学,我们必须考虑
机器人执行器可以产生的力或扭矩的限制。
第 i 个关节处的限制可以写
为 tau_i 大于 tau_i-min 且
小于 tau_i-max。
例如,tau_i-min 可以是负五
牛顿米,tau_i-max 可以是正五
牛顿米。
但一般来说,极限是
theta 和 theta-dot 的函数。
特别是,电动机可以产生的最大扭矩
通常
随着速度的增加而减小,直到
最终变为零。
请记住,
当机器人受限于路径时,我们可以用 s 和 s-dot 来表达 theta 和 theta-dot,
我们可以将
执行器限制重写为 s 和
s-dot 的函数。
如果我们将路径受限动力学的第 i 个分量替换
为 tau_i,我们
就会得到这些约束。
因此,
当机器人处于
(s,s-dot)状态时,第 i 个致动器对沿路径可能的加速度 s-double-dot进行了限制

8164ac760948890f60071e0445ab22e4.png

为了确定第 i 个执行器对
s-double-dot 的限制,我们从所有三个表达式中减去 c_i 乘以 s-dot-squared
和 g_i,然后
除以 m_i。
由于 m_i 可以为正或负,因此
有两种可能的情况:如果 m_i 为正,
则 s-double-dot 的下限 L_i
和 s-double-dot 的上限 U_i
由以下等式给出 。
如果 m_i 为负,则 L_i 和 U_i
由这些方程给出。
这些方程告诉我们
沿着
关节 i 在状态 (s, s-dot) 下允许的路径的最大和最小加速度 s-double-dot。

299578974a87963157fbbcc901327afa.png

22761254e365caf2a99288655aea58be.png

eb7b5d3619e567da0e67aad9df1d2efe.png

如果我们计算所有关节的 L_i 和 U_i,
则 (s, s-dot) 的 L,
即状态 (s, s-dot) 下的最小可行加速度 s-double-dot
,就是下限中的最大值
遍及所有关节。
类似地,(s, s-dot) 的 U,即最大可行
加速度 s-double-dot,只是
所有关节上限的最小值。
现在,我们可以将
机器人沿路径的加速度约束简洁地表达
为 s-double-dot 大于 (s, s-dot) 的 L
且小于 (s, s-dot) 的 U。
在某些状态下,L 实际上可能
大于 U,在这种情况下,没有可行的
加速度使机器人保持在路径上。
换句话说,如果机器人发现自己
处于这种状态,它必须立即
离开路径;执行器的强度
不足以让机器人保持在路径上。
当机器人高速移动时,通常会发生这种情况
。
现在我们已经将执行器约束减少
到 s-double-dot 大于 L 且
小于 U,我们可以在数学上将
时间最优缩放问题表达如下:
给定路径 theta-of-s,初始状态
s 和 s-dot 为零,并且
s 为 1 且 s-dot 为零的最终状态,我们
希望找到一个单调递增的二次可微分
时间尺度,它 (a) 满足终端
条件并且 (b) 最小化总和 行程
时间资本 T 同时满足执行器
约束。
这个问题可以用很好的图形
解释来解释,我们将在下一个视频中看到

Modern Robotics, Chapter 9.4: Time-Optimal Time Scaling (Part 2 of 3)

535c26e939509f6870ee00068dafb5e9.png

a27f7829b6154ff8e95aeefef0c9f934.png

在上一个视频中,我们学会了将
机器人的关节力和扭矩限制表示为
对
沿路径 theta-of-s 的可行加速度 s-double-dot 的约束,作为
状态 (s, s-dot) 的函数。
在本视频中,我们将以图形方式表达这些约束,
并深入了解
时间最优的时间缩放问题。

7ef6d76d2aa71a46c130230f9171e004.png

让我们绘制平面(s,s-点)。
运动开始时,s 和 s-dot
均为零。
运动结束时,s 等于 1,
s-dot 等于 0。
开始和结束状态显示为点。
由于我们要求沿着路径的运动
是单调的,即机器人总是
沿着路径向前移动,所以s-dot必须始终为
正。
所以我们只需要绘制
(s,s-dot)平面的右上象限。
如果机器人沿着路径移动非常缓慢,
那么机器人的运动
从开始到结束基本上都是沿着 s 轴的。

b3dc760e06d37888d036642e6fae5848.png

更典型的时间缩放可能看起来
像这样。
s-dot 从零开始,增加到
最大值,然后在运动结束时回落到零
。
到目前为止,我们一直将时间尺度表示
为 s 作为时间的函数,但在这里我们将
其绘制为 s 点作为 s 的函数。
相同的时间缩放可以用任何一种
方式表示,但在这个时间最优问题中,将
时间缩放表示
为 s-dot-of-s 更方便。

6680a82de6e376e9dc6b62c9a1ae1f4d.png

现在让我们看看
机器人在其轨迹上的特定状态,由该
点(s,s-点)表示。

720e137ca0aa607ad592417b235e5c44.png

我们可以绘制时间缩放的切
向量,如下所示。

fd5b50bc01098c92a958800b801af0d2.png

现在让我们摆脱时间缩放,这样我们
就可以专注于这个切向量。
切向量由水平
分量和垂直分量组成。

1442843186643f8e675401b1af01e26b.png

水平分量表示
s 的变化率,因此它就是 s-dot,
可以
沿 s-dot 轴绘制为与点的高度成正比。
垂直分量表示
s-dot的变化率,换言之,加速度
s-double-dot。

83d073432af40154bb1062524cb813ea.png

如果我们假设 s-double-dot 始终
为零,那么状态 (s,
s-dot) 处的切向量将如下所示。
矢量的水平分量
由点的 s 点值确定。

230c8596933c3222ae1070527066f898.png

现在让我们关注
状态 (s, s-dot) 处的一个特定切向量。
水平分量是s点。

240453e46821ac2d13a815f3ab04bd89.png

但现在我们假设垂直分量,即
加速度 s-double-dot,可以是
从 L of (s, s-dot) 到
U of (s, s-dot) 范围内的任何值,即可行加速度的范围
根据动态。

d5fddb22f2771970eee0191dc65bd43b.png

将这些垂直向量与水平
向量相加,我们得到此处显示的向量。

2f7d52506c2e432e6042d907471a6fdd.png

这些矢量形成一个称为可行
运动锥的锥体。
在此状态 (s, s-dot) 下,
时间缩放的切向量必须位于该锥体内
才能满足执行器限制。

f650fcfe93fc8191c336b9c692c5ca19.png

因此,在这种状态下,像这样的时间缩放是
可以的,因为切向量
位于可行的运动锥内。

5d2e0811764fb99194f73c7faf2eb59c.png

相反,如果我们的可行运动锥体
如下所示,则切向量位于
锥体外部,并且
根据机器人的致动器限制,此时不可能进行时间缩放。

585cef196a848d6beab451858ded920c.png

您可以想象在
平面上的每个点绘制运动锥,问题
是尽快从起始状态到达目标
状态,同时保持沿曲线的
所有运动锥内的时间缩放的切线
。
由于我们希望尽可能快,因此
时间缩放应始终尽可能高,
并且为了找到这样的时间缩放,我们可以从初始状态开始对
运动锥的上边缘进行前向积分
。

98eb6a9de9b5087f6550c5be98711f63.png

在这里,您可以看到一条通过对
最大可能加速度进行数值积分得出的曲线。
由于该曲线沿着
运动锥的边缘行进,因此至少有一个执行器
始终在极限状态下运行。
此时间缩放使机器人
尽可能快地沿着路径行驶,但不会根据需要
使机器人在路径末端停止
。

1f912bb48050c440699fb19d2c55958c.png

现在想象一下从
最终状态沿着可行运动锥的下边缘向后积分
。

4742a975c535ca603194f805b5c8124d.png

该积分曲线与另一条积分
曲线在切换点 s-star 处相交。
您在这里看到的时间缩放,
由数值积分获得的两段表示
,是时间最优的时间缩放。

c6f35e50901245e66a92acc8d343ed99.png

f044756becf15f6c0125e43c5a84168d.png

在第一段期间,机器人
沿路径最大加速,在
第二段期间,机器人
沿路径最大减速。
很明显为什么这是时间最优的:在第一段中
,机器人不能走得更快,
而在第二段中,如果速度 s-dot
在任何给定的 s 上更高,机器人
将无法达到 一个停留。
这种时间缩放使速度 s-dot
在任何时候都保持尽可能高,因此
运动的持续时间尽可能短
。

80e1421885d30e15edeeb80f0beef21b.png

这种轨迹被称为“bang-bang”
轨迹,因为一个或多个致动器
在第一段期间“碰撞”限制,
然后一个或多个致动器
在第二段期间“碰撞”限制。

030693ccb7e385b846513e163b1257ba.png

1e6122a19823d233bb907570977c7b09.png

将此与非最佳轨迹进行比较,其中
时间缩放的切线位于
运动锥体的内部,而不是
边缘。
机器人在任何给定位置 s 的速度都
低于时间最优
时间缩放的速度。
这就是时间缩放算法背后的基本思想
,除了一个问题之外,我
现在将对此进行描述。

dd8d8d899e0afa68e1b03d0a82a66e4d.png

让我们绘制特定
状态(s,s-dot)的运动锥。
如果保持 s 不变但增加 s-dot,
您会得到不同的运动锥体。
如果进一步增加 s-dot,则运动
锥体可能会减小为单个矢量,其中
加速度下限与
加速度上限相同。
如果进一步增加 s-dot,则任何运动都是
不可行的,这意味着机器人的
行进速度太快,致动器无法将
机器人保持在路径上。

c8cde1fab585c7dcc60aa19388955945.png

一般来说,我们可以绘制一条速度极限
曲线:在这条曲线上的状态下,只能
有一个加速度,在
这条曲线上方的状态下,机器人立即离开路径。
在曲线下方的状态,存在一个
可能的切向量圆锥。

1c14141d447939bc6a123af911584ad5.png

现在,考虑到速度限制的存在
,我们最终可能会遇到如下
所示的情况:最大加速度
曲线和最大减速度曲线
不相交,而是遇到
速度限制曲线。
因此,爆炸式控制是不可能的。
在这种情况下该怎么做是
第 9 章下一个也是最后一个视频的主题。

Modern Robotics, Chapter 9.4: Time-Optimal Time Scaling (Part 3 of 3)

e0a5f97def7f70ad086466ca67de1550.png

在之前的视频中,我们学习了
时间最优时间缩放问题的图形解释
。
基本上,我们尝试保持速度 s-dot
尽可能高,同时保持在
机器人执行器规定的运动锥内。
在某些情况下,时间最优解
由爆炸轨迹给出,其中
机器人最大加速然后最大
减速。

b8b1df172f03c6fda1b3b4f6ad0d2cb8.png

但在其他情况下,速度限制
曲线阻止了像这样的简单解决方案。

b1ce7fe27093ee4825b0340fda0c0e91.png

在第 9 章的最后一个视频中,我们开发了
一种算法来处理这种情况。
该算法的第一步是初始化,
您可以在书中找到。

80f8a33f5993080d8b655ccc4c04c3d7.png

在步骤 2 中,我们
从最终状态向后积分最小加速度 L,直到
s 等于 0 或运动锥
在速度极限曲线处消失。
在这里所示的图中,我们到达了速度
极限曲线。

1238e3c103f4ee7fffc260801c2f25bd.png

在步骤 3 中,我们对
从初始状态向前的最大加速度进行积分,直到与
最后一段或速度限制
曲线相交。
如果我们与最后一段相交,那么我们就
完成了:我们已经找到了最佳时间缩放。
在图中,我们
在(s_lim, s_lim-dot)处与速度限制曲线相交。
我们知道我们必须在
该交叉点之前的某个点减速,以避免
撞上速度限制曲线。
由于时间最优轨迹
仅由最大加速度 U 和最小加速度
L 组成,因此我们需要找到
从 U 切换到 L 的点。

893b626355c213304648e7c138d35e05.png

找到切换点的一种方法是
从我们所在的点降低速度 s-dot
达到速度极限曲线,并
向前积分最小加速度 L。

983e7781126b35e242fa95c548269981.png

根据我们减少 s-dot 的程度,前向
积分将要么达到 s 轴,就像

f1b1e58856379ac46a44e05aba1b78d2.png

我们前两个猜测一样;要么达到 s 轴。 或者它
会再次与速度极限曲线相交

d0fd5f59cce891109caa1144d12314ba.png

就像我们的第三个猜测一样; 否则它会切向接触
速度限制曲线。
我们正在寻找的正是这个切点
,我们将其称为 (s_tan, s_tan-dot)。

b3bcc86b6f3a3a5ae0cc0a871c4a4e4f.png

在第5步中,我们
从切点向后积分最小加速度L,直到它与
之前的U线段相交。
这是从最大
加速度到最小加速度的切换点s_1。

d5378122d8813973513f23b298fdbdce.png

红色阴影区域中的状态最终将
与速度限制曲线发生碰撞,因此
必须避免它们。

d4595ae4221162b85af51e413b5cfa62.png

在步骤6中,我们将切点标记为
切换点s_2,在这里我们再次从
最小加速度L切换到最大加速度
U。

5111b5899c3b14e88ac92c145e701acc.png

然后我们回到步骤3,
再次向前积分U。
该段将再次与速度限制
曲线相交,在这种情况下我们重复
刚才描述的过程,或者它将与
最后的 L 段相交,并且算法
完成。
如图所示,该算法
以三个切换点完成,时间最优
时间缩放由
直到 s_1 的最大加速度,然后是直到 s_2 的最小加速度
,然后是
直到 s_3 的最大加速度,然后是
使机器人达到 休息。
这种时间缩放使
路径上所有点的速度保持尽可能高,同时
确保轨迹对于执行器来说是可行的
。

37e0a09ab1631d75ba049e6a6c627f6f.png

该算法的关键步骤是步骤 4,找到
速度极限曲线上的下一个切点
。 一种计算效率更高的方法
不是使用二分搜索猜测和检查
方法,而是以
数值方式构造
速度限制曲线并搜索
运动射线与曲线相切的下一个点。

c8e2160152cb2ffcc6ab6358a148e381.png

显然,在交点处,
运动射线进入不允许状态的区域
。
当我们沿着速度极限曲线搜索时,
我们最终找到曲线上
运动射线与极限曲线相切的点。

12a879dfcaba5d2eca0e4301987fa05b.png

我们现在可以像以前一样继续使用算法。
还有一些其他的技术细节、特殊
情况和算法的改进,
其中一些在书中进行了描述,但
我给出的描述涵盖了最重要的点。
由于时间最优时间缩放要求
一个或多个执行器始终以最大
容量运行,并且由于动态
模型永远无法准确得知,因此该算法
很少直接用于轨迹生成。
尽管如此,它提供了对机器人
最大能力的深刻理论理解
。
第 9 章到此结束。
您现在了解了如何生成机器人轨迹的基础知识
,以及如何
使用第 8 章的动态方程来查找
沿指定路径的时间最优轨迹
。
在第10章中,我们将研究
障碍物之间的运动规划问题。

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

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

相关文章

20 Python常用内置函数——eval()

内置函数 eval() 函数用来计算字符串的值,在有些场合也可以用来实现类型转换的功能。除此之外,eval() 也可以对字节串进行求值,还可以执行内置函数 compile() 编译生成的代码对象。 print(eval(b35)) print([eval(8), type(eval(8))]) # 把…

Keras入门:一维线性回归问题

目录 一、一维变量线性回归 1. 数据生成 2. 建立训练模型 3. 作图 4. 完整代码 一、一维变量线性回归 1. 数据生成 import keras import numpy as np import matplotlib.pyplot as plt #matplotlib inline xnp.linspace(0, 100, 30) #0~100之间,生成30个数 y…

构建现代数据湖

现代数据湖是一半数据仓库和一半数据湖,对所有事情都使用对象存储。使用对象存储来构建数据仓库是通过 Open Table Formats OTF) 实现的,例如 Apache Iceberg、Apache Hudi 和 Delta Lake,这些规范一旦实现,就可以无缝…

PHP基础语法-Part1

脚本格式 PHP脚本以<?php开头&#xff0c;以?>结尾&#xff1b; PHP语句以分号结尾&#xff08;;&#xff09; PHP是解释型语言&#xff1b; 输入和输出 获取用户的输入&#xff1a; $input readline("input:"); echo $input; echo "input:";…

Github 2024-07-26开源项目日报 Top10

根据Github Trendings的统计,今日(2024-07-26统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目2TypeScript项目2C++项目2HTML项目1Python项目1C#项目1Lua项目1JavaScript项目1Vue项目1C项目1免费编程学习平台:freeCodeCamp.org 创…

为什么很多人在一定年龄后的肥胖无法避免

人体在营养均衡状态的时候&#xff0c;是不容易长胖的&#xff0c;且身体也远比一般人更健康些&#xff0c;但想要一直维持身体的这种健康均衡的状态&#xff0c;不仅生活上要很有规律&#xff0c;饮食上也要营养均衡才行。但以如今社会的快节奏生活而言&#xff0c;基本没有人…

计算机毕业设计-程序论文-基于 Java 的高校教资报名系统的设计与实现

本系统开发采用技术为JSP、Bootstrap、Ajax、SSM、Java、Tomcat、Maven 此文章为本人亲自指导加编写&#xff0c;禁止任何人抄袭以及各类盈利性传播&#xff0c; 相关的代码部署论文ppt代码讲解答辩指导文件都有可私要 项目源码&#xff0c;请关注❥点赞收藏并私信博主&#x…

软考-软件设计师(4)-计算机网络与安全:OSI七层、子网划分、网络安全控制技术、网络安全协议、网络安全威胁、对称与非对称加密等高频考点

场景 软考-软件设计师-计算机网络与信息安全模块高频考点整理。 以下为高频考点、知识点汇总,不代表该模块所有知识点覆盖,请以官方教程提纲为准。 注: 博客:霸道流氓气质-CSDN博客 实现 知识点 OSI/RM七层模型 注意各层的主要功能,特别是表示层负责数据的加密、压…

AI 正在取代工作岗位、ChatBot 进入厌倦期、向量数据库崛起,人工智能现状报告有这些重要发现!...

作者 | Echo Tang&GPT 出品丨AI 科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09; 百度的无人驾驶“萝卜快跑”已经在武汉大面积推广&#xff0c;在部分城市进行小量的试运行&#xff0c;以低廉的价格直接卷翻滴滴、出租车司机&#xff0c;让人们热议“五年、十…

7月23日JavaSE学习笔记

异常&#xff1a; 程序中一些程序处理不了的特殊情况 异常类 Exception 继承自 Throwable 类&#xff08;可抛出的&#xff09; Throwable继承树 Error&#xff1a;错误/事故&#xff0c;Java程序无法处理&#xff0c;如 OOM内存溢出错误、内存泄漏...会导出程序崩溃 常见的…

研0 冲刺算法竞赛 day22 P1928 外星密码

P1928 外星密码 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路&#xff1a;递归处理&#xff0c;分类处理 代码&#xff1a; #include<iostream> #include<stack> using namespace std; #include <cstring> char copl[20005];string handle() {int …

全网最详细!! Linux 安装、配置教程

一、下载安装包 首先去官网下载VMware最新版本&#xff0c;以及发行版CentOS -7&#xff0c;懒得下载的可以私信我&#xff0c;我给你发包 其中&#xff0c;CentOS&#xff08;Community Enterprise Operating System&#xff09;是一个基于Linux的开源操作系统&#xff0c;它是…

华为OD机试 - 停车场车辆统计 - 贪心算法(Java 2024 D卷 200分)

华为OD机试 2024D卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;D卷C卷A卷B卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华…

微服务注册中心

目录 1.微服务的注册中心 1.1 注册中⼼的主要作⽤ 1.2 常⻅的注册中⼼ 2.nacos简介 2.1 nacos实战⼊⻔ 2.2.1 搭建nacos环境 2.2.2 将商品微服务注册到nacos 3.服务调⽤Ribbon⼊⻔ 3.1 Ribbon概述 3.1.1 什么是Ribbon 3.1.2 Ribbon的主要作⽤ 3.2.2 ⼯程改造 4.服务…

多区域DNS以及主从DNS的搭建

搭建多域dns服务器&#xff1a; 搭建DNS多区域功能&#xff08;Multi-Zone DNS&#xff09;主要是为了满足复杂网络环境下的多样化需求&#xff0c;提高DNS服务的灵活性、可扩展性和可靠性。 适应不同网络环境&#xff1a; 在大型组织、跨国公司或跨地域服务中&#xff0c;网…

大模型学习笔记 - LLM指令微调

LLM 指令微调 LLM 指令微调 0. 概览1. 指令数据的构建 1.1 基于现有NLP任务数据集构建1.2 基于日常对话数据构建1.3 基于合成数据构建1.4 指令数据构建的提升方法 2. 指令微调的策略 2.1 优化设置2.2 数据组织策略 3. 参数高效的模型微调 3.1 低秩适配微调方法3.2 其他高效微调…

使用flutter做圆形进度条 (桌面端)

前言 最近收到一个需求&#xff0c;需要使用flutter 来做一个圆形进度条&#xff0c;这可难倒我了&#xff0c;毕竟我是做前端的&#xff0c;flutter 之前接触的也少&#xff0c;但没办法&#xff0c;既然需求有了&#xff0c;也得硬着头皮上了&#xff0c;先来看看做的效果。…

C语言-TCP通信创建流程

TCP通信创建流程 1. 客户端创建TCP连接 在整个流程中, 主要涉及以下⼏个接⼝socket() : 创建套接字, 使⽤的套接字类型为流式套接字connect() : 连接服务器send() : 数据发送recv() : 数据接收创建套接字 首先&#xff0c;我们需要创建套接字&#xff0c;套接字是通信的基础…

构建查询洞察 UI

本文字数&#xff1a;2631&#xff1b;估计阅读时间&#xff1a;7 分钟 作者&#xff1a;Bucky Schwarz 本文在公众号【ClickHouseInc】首发 我们最近发布了 Query Insights 的初步实现&#xff0c;为 ClickHouse Cloud 用户提供了一种便捷的方法来查看和解释查询日志。该功能对…

MySQL索引、事务(数据库管理与高可用)

一、索引的概念 索引&#xff1a;排序的列表&#xff0c;对数据进行快速的查询&#xff1b; 针对不同的产品需求&#xff0c;或者不同的数据库结构&#xff0c;会创建不同的索引&#xff1b; 1&#xff1a;普通索引&#xff08;默认索引&#xff09; 2&#xff1a;唯一索引…