机器人制作开源方案 | 基于混合现实的可移动机械臂平台
作者:董泽宇 李肖兵 叶彤 李秉宸 吴雅霏
单位:广西大学 电气工程学院
指导老师:李勇 雷圆媛
为应对特殊条件下不便于实地进行移动式操作的问题,本作品设计了一套基于混合现实的可移动机械臂操作控制系统。该系统分为人机交互、机械驱动、虚拟现实三个模块,人机交互模块通过摄像头识别操作者肢体手势动作并发布相应操作指令,机械驱动模块解析由人机交互模块发布的操作指令后完成相应动作并反馈设备工作状态,虚拟现实模块接收机械驱动模块反馈信息后将设备运行情况在构建好的虚拟场景中还原,实现对设备运行情况的实时监控。我们利用可移动机械臂平台进行测试,最终结果表明操作者通过本系统可以实现对可移动机械臂的远程精准控制与实时监控,系统响应速度能够达到60~100ms/帧。
1. 引言
2022年5月-6月,国内发生了多起自然灾害[1]以及其他诸如火灾、毒气泄漏等突发事故。救援队进入或接近现场进行抢救工作的安全成本与技术难度极大。为提供一种解决此类问题的技术思路,本文提出了一种基于混合现实技术的远程机械臂操作控制系统。该系统通过搭建混合现实系统框架,辅助使用者实现对极端环境下工作的灾后救援机器人远程操纵与监测系统的设计思路。
混合现实技术将可视化、人机交互和自动分析方法整合为一体,支持用户以视觉的方式感知数据,通过交互方式对数据进行探索[2]。传统的人机交互功能依赖可视化交互设备实现可视化交互功能,其中信息的输出通过二维显示屏实现、指令的输入功能则是依赖键盘与鼠标实现。随着混合现实技术的发展,如今出现了更加自然直观的多模态人机交互方式,其中包含了大数据可视化交互、基于声场感知的交互、混合现实实物交互、可穿戴设备交互、人机对话交互、及其他人机交互方式[3]。人机交互的目的在于感知人类的交互意图,当前已有一些用于人机交互的设备,例如,Vahid Pooryousef等人通过对柔性印制线路板进行设计开发,制作出依赖触觉进行交互的虚拟手套[4]、Microsoft公司开发了能够应用在动作捕捉中的深度摄像头Kinect[5]等,然而这些产品的成本相对较高,在使用时会受到一定程序的限制。
此外,目前应用于机械臂的主动控制方法[6-7]一种是通过由摇杆与按键组合而成的控制设备进行指令发布工作,另一种则是通过力反馈传感设备实现对机械臂的遥操作控制。两种主流的控制方式都对于操作环境的局限性极大,并不利于对机械臂的应用普及。然而,两种机械臂的主动控制方式都需要一定的空间用于布置控制设施,这便对使用者操作环境造成了非常固定的局限。如今新兴的人机交互方式同样需要特定的环境布置传感设备,其成本与应用环境的局限性极大。因此,为降低应用成本与环境因素限制,以使得此类技术能够用于在特殊环境下的机械臂操作,本文采用基于视觉的动作捕捉功能以实现人机交互,采用Unity引擎构建虚拟仿真环境,同时通过ROS系统实现无线数据通讯功能实现指令的发布与接收,构建了一套基于混合现实的可移动机械臂操作控制系统。

2. 总体架构
2.1 软件系统
如下图所示,基于混合现实的可移动机械臂操作控制系统的软件模块分为人机交互、机械驱动、虚拟现实三个功能模块,分别实现指令信号的输入、执行与反馈功能。不同模块间通过基于消息队列遥测传输协议(Message Queuing Telemetry Transport, MQTT)的网络通讯通道[8]与局域网通讯通道[9]结合,实现对指令信号的格式化、发布与接收功能。在保证系统良好的稳定性的同时,具有良好的拓展性。

2.2 硬件系统
本系统结构为钢材结构构成,机械臂与底盘Meacanum轮组分别由机器时代(北京)科技有限公司的“探索者”创新平台开发的Basra主控板进行控制。两块Basra主控板都通过蓝牙串口通信,连接至基于树莓派的ROS系统内,进行基于物联网的通信网络搭建,主控板如下图所示:


3. 人机交互模块
肢体动作是人类表达自我意识的一种重要手段,更是一种便捷的人机交互方式。该模块通过摄像头获取包含使用者肢体手势动作的图像数据,通过感知哈希算法进行滤波后提取使用者的关键点2D数据,最后对关键点进行深度估计,最终实现对使用者的肢体手势动作识别功能。
3.1 感知哈希算法
目标检测对于设备性能要求高且费时,而对视频数据进行实时目标检测时由于摄像头、检测对象以及目标检测算法等多方面因素影响,对于输出结果的精度影响极大。因此本系统利用感知哈希算法对输入视频进行预处理,减少关键点检测工作的任务量并减小因使用者抖动等原因产生的误差,提高系统输出指令的有效率与准确性。
感知哈希算法[10]是一种判断图像相似性的一类哈希算法的总称,包括了均值哈希算法(aHash)、感知哈希算法(pHash)、差异值哈希算法(dHash)等。为保证该部分有效提高系统的处理速度,本文采用差异值哈希算法进行对图像的预处理。
启动摄像头后系统保存第一帧图像作为待处理图像,随后计算摄像头读取图像与待处理图像的Hamming距离。当Hamming距离大于预设阈值时,将此帧摄像头读取图像替换待处理图像,并进行后续处理。
3.2 基于RGB图像的人体关键点坐标提取
本系统通过MediaPipe框架[11]实现对使用者的关键点坐标提取。MediaPipe框架是由Google开发的一种基于机器学习的目标检测框架。关键点坐标提取流程与分布如下图所示,在关键点追踪过程中,系统首先预测虚拟关键点坐标实现对各关节关键点的匹配,最终实现动作捕捉功能。

系统在获得待处理图像后,首先对使用者与背景环境进行分割处理,随后进入人体关键点坐标预测环节 (Pose_Landmarker_GPU),利用提前训练好的人体关键点模型(关键点分布如下图所示)与目标进行匹配,从而获取在该图像中目标的关键点分布坐标,并通过坐标检测环节确定其置信度。最后由图像渲染环节(Pose_Renderer_GPU)接收由图像分割处理输出的图像数据流与坐标检测环节校正后输出的关键点分布坐标,在图像数据流中进行标记,最终输出标记了关键点的图像流与关键点坐标数据。

3.3 关键点深度估计
系统通过人体运动特征结合几何原理,实现对关键点的深度估算[12]。基于下图所示的人体关键点分布,系统将11、12、23、24号关键点作为特征关键点,并将特征关键点组成四边形的几何特征建立特征关键点矩阵A,最后通过空间几何原理实现对关键点的深度预测,生成深度矩阵H。矩阵A、H如下所示,其中为i、j关键点间距离,hi为i关键点深度值。


当使用者所在平面平行于摄像头平面时,以特征关键点所围图形中心为原点,以平行于11、12号关键点组成线段为x轴,以垂直于该平面且指向摄像头所在平面为z轴正方向,建立如上图所示空间坐标系。建立基准特征关键点矩阵A0,并保存各关键点间距离,作为基准单位长度lt0 ,此时深度矩阵记作
![]()
系统运行过程中,由矩阵A与矩阵A0的变换关系,得到基准关键点沿z轴移动矩阵Hz、沿x轴旋转矩阵Hx、沿y轴旋转矩阵Hy。最终通过运动学的叠加原理[13],合成基准点深度矩阵H。矩阵关系如下所示,i、j、k为基准点特征常量,与摄像头捕捉的图像宽度w与高度h以及矩阵A相关。

特征关键点所围图形沿x轴旋转时,有

特征关键点所围图形沿y轴旋转时,有

特征关键点所围图形沿z轴平移时,有



4. 机械驱动模块
机械驱动模块的建立基于ROS操作系统,可以实时读取设备运行情况并利用固定在机械臂上的摄像头采集设备的工作环境信息,最终通过局域网远程控制通讯功能,有效地实现对可移动机械臂的远距离操作控制,辅助使用者完成作业。
4.1 基于D-H参数的机械臂驱动控制
系统通过该模块实现对目标物体搬运与环境信息采集工作。系统通过人机交互模块实现对动作的捕捉与判断后将使用者的姿势映射为相应的机械臂驱动控制指令,并对指令执行发布、接收、解析工作,从而实现对机械臂的远程控制。
机械臂的链路由被称作连杆的刚体组成,在已知机械臂的各个关节连杆参数的情况下,通过控制机械臂各关节舵机转动角度,即可驱动机械臂的运动到指定位置[14]。其中Denavit-Hartenberg(D-H)参数算法是本模块的核心[15]。针对本研究的需求,选择使用基于几何结构的正运动学[16]解法,为机械臂的结构建立D-H矩阵。
针对系统需求,采用的机械臂自由度为6。使用基于几何结构的运动学求解。通过余弦定理和连杆机构在笛卡尔坐标系的投影,推断每条机械臂的运动学正解方程组,并且系统采用D-H矩阵参数法,将其初始位姿和零点旋转至同一笛卡尔坐标系下进行计算。
在三维空间中,为方便确定各个连杆之间的几何参数关系,通常规定两个参数连杆距离a和连杆转角α来描述。两轴之间公垂线上的直线距离称为连杆距离,记为a。两轴线在与公垂线垂直的平面上投影的夹角称为连杆转角,记为α。
相邻的两连杆之间具有一个公共的轴,两连杆沿公共关节轴偏移的距离称为连杆偏移,记为d。两相邻连杆绕公共关节轴转动的角度称为关节角,记为θ。机械臂的每个连杆轴都可以用上述四个参数来描述,对于旋转关节,只有关节角θ是变量,其余参数作为常量一经确定不再发生改变。对于移动关节,只有连杆偏移是变量,其余参数为常量。



定义各个连杆坐标系后,根据上述机械臂的四个连杆参数列出下列D-H参数表:

得到D-H参数表后,根据上述公式可以得到相邻连杆之间的变换矩阵,最后按照上式将各个矩阵连乘即可得到机械臂的末端位置。人机交互模块识别使用者的肢体姿势数据后,优化处理后的数据通过局域网传输,即可实现从不同的人机维度进行人机协作,对机器的控制更加灵活、高效和稳定。
4.2 基于正运动学的Mecanum轮式机器人运动控制
系统选取Mecanum轮式结构作为机械臂平台的运动驱动底盘。该部分根据人机交互模块发布的信息,实现在平面的全方向移动。Mecanum轮式机器人的全方位系统结构依赖轮组的速度组合即可实现稳定可靠且控制简单的全方位运动效果[17]。然而由于在复杂地形环境下Mecanum轮式机器人的底盘受力情况并非理想状态,实际运动轨迹与预测轨迹存在较大差异[18],因此需要人工辅助控制。所以本系统通过人机交互模块实现对Mecanum轮式机器人进行远程控制,以满足在不利于使用者进入的极端条件下对设备进行主动控制的需求。
为实现对麦克纳姆轮的机械控制,系统对每个Mecanum轮添加三个独立的端口进行指令发布,从而实现对三自由度Mecanum轮的控制。因此,本系统基于4个Mecanum轮式结构构成移动平台,实现平面全向移动。其中四轮Mecanum轮式系统存在六种布局结构,如下图所示的结构是最适用于本系统的运动结构[19],能够较为有效地保证系统的稳定性、载重能力和控制力。

由于轮式机器人在平面进行工作,因此本文对Mecanum轮式机器人建立坐标系,进行运动学分析。设机器人在平面内的运动速度v,并v将分解为x轴平移速度y轴平移速度yaw轴自传角速度,设r为几何中心指向轮子轴心的矢量,为N号轮子轴心的速度矢量。因此可以得出 的运动方程15以及其x轴与y轴分量:

由Mecanum轮结构可知为设备提供动力运动的x轴与y轴分量来源于平行于辊子方向的速度。易知当辊子与轮子本身夹角呈45。时效率最大,设轮子平行于辊子方向的速度为v,并可得其与轴心位置速度关系如下:


不妨设车的旋转中心到各轮子的距离坐标为(a,b),因此可以得到速度分量方程组:

所以对于4个轮子的转速为:

矩阵方程(上式)即为机器人的逆运动学模型,反之则可以求得机器人的正运动学模型如下:

所以当已知各个电机的转速或小车的运动状态时,便可以求得相应时刻小车运动状态与电机转速。
5. 虚拟现实模块
数字孪生技术可以实现对设备与工作环境建立五维结构模型与应用预测 [20],可以改变传统模式下设备运行的“黑箱”状态[21],辅助使用者更好操作设备。系统通过Unity引擎搭建可移动机械臂的数字孪生模型,实现对设备反馈数据的形象化展示,此即系统的虚拟现实模块。
虚拟现实模块的节点分布如下图所示,建立了Car、Even两个主要节点,其中Car节点部署了可移动机械臂的数字化模型,Even节点则用于搭载工作环境数字化虚拟模型并展示由固定在机械臂上的摄像头采集的工作实际场景。在系统运行状态下,该模块将接收到机械臂的数据反馈,驱动模型运动,给使用者直观形象的设备工况反馈。

该模块的运动控制脚本挂载在Car节点中,负责接收、解析与模拟由移动机械臂平台发布的设备工况数据。Even节点中挂载的脚本则执行简单的设备碰撞检测以及解析显示安装在机械臂端的摄像头捕捉画面。场景3D展示效果如下图所示:

6. 系统测试
6.1 感知哈希阈值选取
本文通过差异值哈希算法对输入图像进行预处理判断。其中三种感知哈希算法运算效率与动作差异值的结果输出如下表所示。

本文通过感知哈希算法,以实现对输入图像的滤波,故选择算法处理速度更快的差异值哈希算法,其流程图如下图所示。本文将输入的对比图像压缩为11´10单通道后拆分为[0:10, 0:10]与[1:11, 0:10]两向输入图像,两向图像通过比较像素大小,生成bool-hash矩阵。最后计算并输出两项矩阵的Hamming距离。

为区分使用者期待发布指令与使用者因抖动等问题造成的抖动误差指令,本文通过对三项控制方法分别进行四组测试,其中机械臂夹具控制的前后图像差异值最小,且不同使用者该动作前后图像的Hamming距离都不小于5,因此本文选取Hamming距离5作为输入图像预处理的阈值。
6.2 系统响应速度测试
本文将系统按模块分别搭建在Windows8系统(电脑配置为八内核Intel Core i7-3635QM,内存8GB,CPU主频2.40GHz)与jetson nano(设备配置为四内核ARMA57,内存4GB,CPU主频1.43GHz)。为实现对系统响应速度的测试,本文通过在主函数内嵌入time.perf_counter()函数调取设备性能计数器测试系统相邻两次的处理时间。经过对五次测试数据的统计,绘制如下图所示的系统响应速度测试折

由折线图可见,系统的响应速度稳定在60~100ms/次。第一次指令发布过程中,由于系统需要进行摄像头激活、服务器连接等工作,因此产生一定的延迟,此后每一次指令的发布耗时都稳定在60~100ms。在运行过程中,当使用者的输入图像变化差异值小于阈值时系统处于静默状态,故静默状态系统的响应速度相比于发布指令时的速度有较大差异。因此加入输入图像预处理环节能有效降低系统对设备处理性能的占用率,且系统对于设备的性能要求较低。
6.3 角度估计测试
系统选择肢体关键点23-11-13、11-13-15、手部关键点4-5-12所成夹角,手臂如下图所示,由(a)运动至(c):

在上图的测试中,(a)项测试平均标准差为2.49、(b)项测试平均标准差为3.77、(c)项测试平均标准差为11.77。本项测试选取五人完成该动作,其中起点位置与终点位置为预先设定位置,故在测试过程中使用者的运动轨迹存在一定波动,但各关键点夹角的变化趋势相似且最终都向目标角度收敛,因此可以证明该方法的稳定性可以满足大部分对于精度要求不高的环境下机械臂的操作工作。
最终获取三个夹角变化折线图如下图所示:

由上图所示的实验结果可知,将机械臂夹具的控制阈值设为60°,可以保障系统当且仅当手势调整至指定动作后,方可执行夹取与释放指令,有效避免系统运行过程中手势动作存在的波动。
6.4 系统运行效果展示
系统运行效果最终展示效果如下图所示,使用者首先在个人计算机中部署人机交互模块与虚拟现实模块,然后先后启动机械驱动模块与部署在个人计算机的模块,建立两者的通讯通道,随后使用者即可通过肢体手势动作对机械臂平台进行远程操作控制。

由上图所示的实验结果可知:设备在运动过程中,由于肢体部分的关键点分布结构相比于手部关键点相互遮挡概率小,故肢体部分关键点分布预测精度相较于手势部分高,更适合作为系统的线性输入变量,并将手势指令通过阶跃函数处理,实现对夹具的布尔控制。此外相比于未加入感知哈希函数,本系统对于使用者肢体在使用过程中产生的自然抖动具有良好的滤波效果。

系统通过读取使用者右臂及右手的空间状态,并通过函数关系式映射为机械臂的运动控制指令,最终辅助使用者实现对设备的预期运动控制效果。
7. 结语
混合现实技术是解决特殊环境或要求条件下实现使用者远程操控设备的一种重要技术手段,本文提出了基于混合现实的可移动机械臂操作控制系统。控制系统软件部分涵盖了人机交互、机械驱动、虚拟现实三个主要功能模块。本文亦搭建了一整套硬件测试平台,测试表明该平台可以实现对使用者肢体手势动作的解析,并将解析后的数据映射为机械控制指令,实现对机械臂的精准控制,能够解决特殊条件下操作者对设备无法进行实地操作的问题,具有一定的应用价值。测试中,常规状态下平台运行的响应速度能够达到60~100ms/帧,且响应速度与硬件设备性能具有较大的相关性,系统具有实现实时处理的前景,为该技术未来应用场景的选择和配套硬件设备的选择提供了参考。
此外本系统需要在摄像头捕捉到头部后才会进行下一步的关键点检测功能,这对于个人计算机的摄像头捕捉视角范围提出了一定的要求,而对于未在摄像头视野范围内的肢体部分的预测处理则是系统下一步发展的一个方向。
参考文献
[1] 李生才,安莹.2022年5—6月国内环境事件[J].安全与环境学报, 2022,22(04):2292-2296.DOI:10.13637/j.issn.1009-6094.2022.1537.
[2] 温圳,李鹏,王叙萌,黄文琦,梁凌宇,周越凡,陈为.基于混合现实的可视分析综述[J].计算机辅助设计与图形学学报,2022,34(06):821-829.
[3] 陶建华,巫英才,喻纯,翁冬冬,李冠君,韩腾,王运涛,刘斌.多模态人机交互综述[J].中国图象图形学报,2022,27(06):1956-1987.
[4] Vahid Pooryousef, Ross Brown, and Selen Turkay. 2019. Shape Recognition and Selection in Medical Volume Visualisation with Haptic Gloves. In Proceedings of the 31st Australian Conference on Human-Computer-Interaction (OZCHI'19). Association for Computing Machinery, New York, NY, USA, 433–436.
[5] CAO, C.; SHAN, B.; ZHANG, H. Pattern Recognition of Wushu Routine Action Decomposition Process Based on Kinect. athematical Problems in Engineering, [s. l.], p. 1–11, 2022. DOI 10.1155/2022/ 3876487. Disponível em:
?direct=true&db=a9h&AN=158754607&lang=zh-cn&site=ehost-live. Acesso em: 1 out. 2022.
[6] 朱晓俊,王学谦,马云萱,梁斌,孙汉旭.绳驱超冗余空间柔性机械臂遥操作系统设计与实验研究[J].机器人,2022,44(01):9-18.DOI:10. 13973/j.cnki.robot.210228.
[7] 高晓科,孙亮,张伟军.高压带电引流作业机器人系统的设计与开发[J].机械设计与研究,2021,37(05):10-14+20.DOI:10.13952/j. cnki.jofmdr.2021.0171.
[8] 孔垂跃,陈羽,赵乾名.基于MQTT协议的配电物联网云边通信映射研究[J].电力系统保护与控制,2021,49(08):168-176.DOI:10.19783/ j.cnki.pspc.200775.)
[9] 欧军,吴清秀,裴云,张洪.基于socket的网络通信技术研究[J].网络安全技术与应用,2011(07):19-21.
[10] 许庚林,冉峰,邓良,史华康,郭爱英.轻量化神经网络和哈希跟踪算法在嵌入式人脸抓拍系统中的应用[J].上海大学学报(自然科学版),2021,27(06):1018-1028.
[11] https://doi.org/10.48550 /arXiv.2006.10204.
[12] 许宇能,朱西产,马志雄,李霖.基于单目摄像头的车辆前方道路三维重建[J].汽车技术,2014(02):48-52.
[13] 丁学成,冯晓敏,宋增云.叠加原理在力学中的应用[J].物理通报,2018 (07):25-27.
[14] 任敬轶,孙汉旭.一种新颖的笛卡尔空间轨迹规划方法[J].机器人,2002(03):217-221.DOI:10.13973/j.cnki.robot.2002.03.006.
[15] S. Wen, Z. Ma, S. Wen, Y. Zhao and J. Yao, "The study of NAO robot arm based on direct kinematics by using D-H method," 2014 UKACC International Conference on Control (CONTROL), 2014, pp. 515-518, doi: 10.1109/CONTROL. 2014.6915193.
[16] 冷舒,吴克,居鹤华.机械臂运动学建模及解算方法综述[J].宇航学报,2019,40(11):1262-1273.
[17] 夏长安,肖雨琴,岳义,赵现朝,韦宝琛.基于Mecanum轮的移动机器人运动建模与仿真[J].机械设计与研究,2022,38(04):17-21.DOI:10. 13952/j.cnki.jofmdr.2022.0096.
[18] 杨霖. Mecanum轮式全向移动平台减振技术的研究[D].大连交通大学,2016.
[19] 王一治,常德功.Mecanum四轮全方位系统的运动性能分析及结构形式优选[J].机械工程学报,2009,45(05):307-310+316.
[20] Tao, Fei and Meng Zhang. “Digital Twin Shop-Floor: A New Shop-Floor Paradigm Towards Smart Manufacturing.” IEEE Access 5 (2017): 20418-20427.
[21] 陶飞,刘蔚然,刘检华,等.数字孪生及其应用探索[J].计算机集成制造系统,2018,24(01):1-18.DOI:10.13196/j.cims.2018.01.001
更多详情请见 【S053】基于混合现实的可移动机械臂平台
相关文章:
机器人制作开源方案 | 基于混合现实的可移动机械臂平台
作者:董泽宇 李肖兵 叶彤 李秉宸 吴雅霏 单位:广西大学 电气工程学院 指导老师:李勇 雷圆媛 为应对特殊条件下不便于实地进行移动式操作的问题,本作品设计了一套基于混合现实的可移动机械臂操作控制系统。该系统分为人机交互、机…...
JavaScript基础03
1 - 循环 1.1 for循环 语法结构 for(初始化变量; 条件表达式; 操作表达式 ){//循环体 } 名称作用初始化变量通常被用于初始化一个计数器,该表达式可以使用 var 关键字声明新的变量,这个变量帮我们来记录次数。条件表达式用于确定每一次循环是否能被执行…...
CMake入门教程【实战篇】使用开源库cmake-modules简化项目开发与维护
文章目录 简介项目地址项目特点使用方式模块使用模块说明示例结论简介 本教程介绍了rpavlik/cmake-modules,一个CMake模块集合,旨在简化和优化CMakeLists.txt文件的编写和维护工作。该集合尤其对虚拟现实和物理模拟包的开发者有用,同时也包含通用实用模块和针对旧版CMake的…...
基于TOP204的开关电源电路图
图为TOP204的典型应用电路。该电源的技术特点是输入电压为交流85~265V;输出电压为15V2%;额定输出功率为30W;输出电压纹波不大于50mV;线性调整率为2%;效率为85%。电路中&a…...
CES 2024上的AI亮点
以下是CES 2024前两天AI方面亮点: 一个AI助手,取代你的智能手机应用程序的rabbit.tech人工智能驱动的捆绑式鞋子被称为“Moonwalkers”,可以让你走得更快 FitXR Slam的VR和健身创新WeHead的人工智能能给ChatGPT一张脸世界上第一个高清触觉游…...
Canopen学习笔记——sync同步报文增加数据域(同步计数器)
1.Canfestival同步报文sync的设置 在OD表中的配置如下: 如果0x1006索引的同步报文循环周期时间设置为0则禁用同步报文,这里要注意的就是,上面第一张图也提到了,时间单位是us。第二张图,我的0x1006就设置为0xF4240,也就…...
CRLF检测工具汇总
目录 漏洞介绍 详细请看 工具介绍 Oralyzer 介绍 主要功能...
vue、element-ui使用el-tooltip判断文本是否溢出
1.需求:需要实现文本单行显示,超出时,使用省略号,划过该文本时使用tooltip显示全部文本。需要考虑数据是由接口动态获取,只有溢出文本鼠标滑过时显示全部文本,没有溢出的则不需要。 2.实现: 第…...
高防dns服务器租用有哪些应用场景?-速盾cdn
高防DNS服务器租用可以应用于以下场景: 网站安全防护:高防DNS服务器可以提供强大的防御能力,抵御DDoS攻击、DNS劫持、泛洪攻击等威胁,保证网站的稳定运行和安全性。 网络游戏:网络游戏通常面临大量用户同时访问和数据…...
使用 Goroutine 和 Channel 来实现更复杂的并发模式,如并发任务执行、并发数据处理,如何做?
使用 Goroutine 和 Channel 来实现更复杂的并发模式是 Go 语言的强大特性之一。 下面分别介绍如何实现并发任务执行和并发数据处理: 并发任务执行: 假设您有一些任务需要并发地执行,您可以使用 Goroutine 来同时执行这些任务,然…...
7个向量数据库对比:Milvus、Pinecone、Vespa、Weaviate、Vald、GSI 和 Qdrant
本文简要总结了当今市场上正在积极开发的7个向量数据库,Milvus、Pinecone、Vespa、Weaviate、Vald、GSI 和 Qdrant 的详细比较。 我们已经接近在搜索引擎体验的基础层面上涉及机器学习:在多维多模态空间中编码对象。这与传统的关键字查找不同(…...
【正点原子】STM32电机应用控制学习笔记——8.FOC简介
FOC是适用于无刷电机的,而像有刷电机,舵机,步进电机是不适用FOC的。FOC是电机应用控制难度最大的部分了。 一.FOC简介(了解) 1.介绍 FOC(Filed Oriented Control)即磁场定向控制,…...
Salesforce财务状况分析
纵观Salesforce发展史和十几年财报中的信息,Salesforce从中小企业CRM服务的蓝海市场切入,但受限于中小企业的生命周期价值和每用户平均收入小且获客成本和流失率不对等,蓝海同时也是死海。 Salesforce通过收购逐渐补足品牌和产品两块短板&am…...
服务器管理平台开发(2)- 设计数据库表
数据库表设计 本篇文章主要对数据管理平台数据库表设计进行介绍,包括单库多表设计、SQL语句、视图构造等 1、整体设计 设备品牌、序列号、型号等使用业务主表进行记录,逻辑磁盘、PCI设备可能出现1对N的情况,分别使用PCI设备表、Mac地址表、逻…...
Python基础知识:整理13 利用pyecharts生成折线图
首先需要安装第三方包pyecharts 1 基础折线图 # 导包,导入Line功能构建折线图对象 from pyecharts.charts import Line # 折线图 from pyecharts.options import TitleOpts # 标题 from pyecharts.options import LegendOpts # 图例 from pyecharts.options im…...
java项目之家政服务中介网(ssm)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的家政服务中介网。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 管理员:首页、个人中…...
Spark的内核调度
目录 概述 RDD的依赖 DAG和Stage DAG执行流程图形成和Stage划分 Stage内部流程 Spark Shuffle Spark中shuffle的发展历程 优化前的Hash shuffle 经过优化后的Hash shuffle Sort shuffle Sort shuffle的普通机制 Job调度流程 Spark RDD并行度 概述 Spark内核调度任务: 1…...
C++代码重用:继承与组合的比较
目录 一、简介 继承 组合 二、继承 三、组合 四、案例说明 4.1一个电子商务系统 4.1.1继承方式 在上述代码中,Order类继承自User类。通过继承,Order类获得了User类的成员函数和成员变量,并且可以添加自己的特性。我们重写了displayI…...
暴打小苹果
欢迎来到程序小院 暴打小苹果 玩法:鼠标左键点击任意区域可发招暴打,在苹果到达圆圈时点击更容易击中, 30秒挑战暴打小苹果,打中一次20分,快去暴打小苹果吧^^。开始游戏https://www.ormcc.com/play/gameStart/247 htm…...
【BetterBench】2024年都有哪些数学建模竞赛和大数据竞赛?
2024年每个月有哪些竞赛? 2024年32个数学建模和数据挖掘竞赛重磅来袭!!! 2024年数学建模和数学挖掘竞赛时间目录汇总 一月 (1)2024年第二届“华数杯”国际大学生数学建模竞赛 报名时间:即日起…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
LOOI机器人的技术实现解析:从手势识别到边缘检测
LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...
