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

ROS ur10机械臂添加140夹爪全流程记录

ROS ur10机械臂添加140夹爪

系统版本:Ubuntu20.04

Ros版本:noetic

Moveit版本:moveit-noetic

参考博客:

ur3+robotiq ft sensor+robotiq 2f 140配置rviz仿真环境_有末端力传感器的仿真环境-CSDN博客

UR5机械臂仿真实例(三)1 末端添加robotiq夹爪 [ubuntu20.04+ROSnoetic+gazebo11]_ros机械臂中添加夹具-CSDN博客

前提条件:ros系统,Moveit环境,Gazebo仿真环境运行正确

ROS+Moveit!+Rviz配置流程:

ROS系统&Moveit!安装指南:

1.2.4 安装 ROS · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程

01 安装UR工具包与驱动

source /opt/ros/melodic/setup.bash

mkdir -p ur_ws/src && cd ur_ws

# 下载fmauch_universal_robot(注意分支)

git clone -b calibration_devel https://github.com/fmauch/universal_robot.git src/fmauch_universal_robot

# 下载Universal_Robots_ROS_Driver驱动

git clone https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git src/Universal_Robots_ROS_Driver

# 更新 -qq代表除非报错,否则不输出

sudo apt update -qq

sudo apt-get upgrade

# 更新依赖(这一步需要有梯子,不然可能会超时,超时执行下一步即可,只要一开始安装ros时执行成功过即可)

rosdep update

# 安装依赖 -y表示出现 y/N选项 直接执行y

rosdep install --from-paths src --ignore-src -y

# 编译

catkin_make

# 激活当前工作空间,并写入

echo "source ~/ur_ws/devel/setup.bash" >> ~/.bashrc

source ~/.bashrc

02 仿真测试

# 启动gazebo

# 注意是ur10_bringup.launch,而不是ur10.launch

roslaunch ur_gazebo ur10_bringup.launch

# 启动move it规划

roslaunch ur10_moveit_config ur10_moveit_planning_execution.launch sim:=true

# 启动rviz

# 注意后面要给出rviz_config的地址

roslaunch ur10_moveit_config moveit_rviz.launch rviz_config:=$(rospack find ur10_moveit_config)/launch/moveit.rviz

03 连接夹爪与机械臂

1.下载robotiq工具包

git clone https://github.com/jr-robotics/robotiq.git src/robotiq

2.修改ur.xacro模型

ur_description/urdf/ur.xacro中添加以下代码(注意xacro:include标签应在文件首)

<!--继承robotiq_arg2f_140宏-->

<xacro:include filename="$(find robotiq_2f_140_gripper_visualization)/urdf/robotiq_arg2f_140_macro.xacro"/>

<!--调用robotiq_arg2f_140,加入夹爪的link和joint-->

<xacro:robotiq_arg2f_140

prefix=""

transmission_hw_interface="$(arg transmission_hw_interface)"

/>

3. 断开夹爪与base_link连接

注释与修改

robotiq-noetic-devel/robotiq_2f_140_gripper_visualization/urdf/robotiq_arg2f_140_macro.xacro中base_link连接

195<!--link name="${prefix}base_link"/-->

197<parent link="${prefix}tool0" />

4. 启动测试

catkin_make

source devel/setup.bash

roslaunch ur_description view_ur10.launch

检查能否正常移动夹爪与机械臂

04 配置gazebo仿真环境

1.修改模型关节连接关系

“世界”连接到“机械臂基类”,添加夹爪 机械臂末关节链接至“夹爪基类”

修改文件:ur_gazebo/urdf/ur.xacro

<link name="world"/>

<joint name="world_joint" type="fixed">

<parent link="world"/>

<child link="base_link"/>

<origin xyz="0 0 0" rpy="0 0 0"/>

</joint>

倒数第二行添加如下

<xacro:include filename="$(find robotiq_2f_140_gripper_gazebo)/urdf/robotiq_arg2f_140_macro.xacro" />

<!-- parameters -->

<xacro:arg name="transmission_hw_interface" default="hardware_interface/EffortJointInterface"/>

<xacro:robotiq_arg2f_140_gazebo

prefix=""

transmission_hw_interface="$(arg transmission_hw_interface)"/>

<joint name="robotiq_hand_joint" type="fixed">

<parent link="wrist_3_link"/>

<child link="robotiq_arg2f_base_link"/>

<origin xyz="0 0 0" rpy="0 0 0"/>

</joint>

2.修改关节与运动控制插件

Robotiq2f140 gripper有被动关节(Mimic Joint),标准Gazebo不支持Mimic关节仿真, 所以需要安装一个插件。在一、实现rviz中ur5与robotiq85的连接和控制的基础上,下载plugins,然后catkin_make编译。

cd ~/catkin_ws/src

git clone GitHub - roboticsgroup/roboticsgroup_gazebo_plugins: Collection of small gazebo plugins for ROS

cd ~/catkin_ws

catkin_make

打开robotiq_2f_140_gripper_gazebo/urdf/robotiq_arg2f_140_macro.xacro,修改以下两处。

将插件名字改为“libroboticsgroup_gazebo_mimic_joint_plugin.so”;

<plugin filename="libroboticsgroup_gazebo_mimic_joint_plugin.so" name="${prefix}mimic_robotiq_140_1">

<plugin filename="libroboticsgroup_gazebo_mimic_joint_plugin.so" name="${prefix}mimic_robotiq_140_2">

<plugin filename="libroboticsgroup_gazebo_mimic_joint_plugin.so" name="${prefix}mimic_robotiq_140_3">

<plugin filename="libroboticsgroup_gazebo_mimic_joint_plugin.so" name="${prefix}mimic_robotiq_140_4">

<plugin filename="libroboticsgroup_gazebo_mimic_joint_plugin.so" name="${prefix}mimic_robotiq_140_5">

将100行左右这段代码注释掉。因为在fmauch_universal_robot/ur_gazebo/urdf/ur_macro.xacro中已经添加了这个插件,不再重复添加。

<!--

Inject Gazebo ROS Control plugin, which allows us to use ros_control

controllers to control the virtual robot hw.

-->

<!--<gazebo>-->

<!--<plugin name="ros_control" filename="libgazebo_ros_control.so">-->

<!--</plugin>-->

<!--</gazebo>-->

3.加载控制器参数

打开robotiq_2f_140_gripper_gazebo/config/

robotiq_2f_140_gripper_controllers.yaml

修改gripper_controller的类型和关节。

增添以下代码

gripper_controller:

type: effort_controllers/JointTrajectoryController

gains:

finger_joint: {p: 10, d: 0.1, i: 1, i_clamp: 1}

joints:

- finger_joint

action_monitor_rate: 20

goal_tolerance: 0.002

max_effort: 100

stall_velocity_threshold: 0.001

stall_timeout: 1.0

4.ur5_bringup.launch中修改controllers参数值

修改ur_gazebo/launchur10_bringup.launch启动三个控制器:关节状态发布、机械臂关节控制、夹爪关节控制。

<arg name="controllers" default="joint_state_controller pos_joint_traj_controller gripper_controller" doc="Controllers that are activated by default."/>

此处曾因与后面Moveti!配置命名空间不一致导致严重bug

可以先不修改,文档最后有详细说明

启动测试

到这一步应该可以在gazebo里面看到加了夹爪的模型了。

cd ~/catkin_ws/

catkin_makesource devel/setup.bash

roslaunch ur_gazebo ur10_bringup.launch

(gazebo启动流程launch->ur.xacro->ur_macro.xacro&robotiq_arg2f_140_macro.xacro->config/controllers->启动)

可能的错误:

1.Failed to find root link: Two root links found: [base_link] and [world]

原因:根节点过多

解决方法:将robotiq_arg2f_140.xacro或ur.xacro中其中一个的worldlink模块注释掉就可以解决

2.gazebo--SpawnModel: Failure - model name mrobot already exists.解决办法

原因:用gazebo打开机器人模型后,保存了world,此时的新world比原world多了机器人模型mrobot,所以重新运行launch时提示名字为mrobot的模型已经存在与world中

解决办法:将gazebo_ros功能包中的empty_world.launch复制到自己的功能包中,并把world_name的参数值改成保存后的world地址,运行empty_world.launch,将里面的机器人模型删除再重新保存即可。

由于gazebo的特性,每一次加载后模型都会保存到world,当模型加载位置有模型时不会覆盖而是不加载,所以在调试时每次关闭gazebo前要删除加载的模型

05 配置Moveit!运控平台

前置工作:因为Moveit!生成模型时不接受空参数或地址,所以我们要对机械臂模型加载模块进行修改

将fmauch_universal_robot/ur_gazebo/urdf/ur.xacro中的

<xacro:arg name="joint_limit_params" default=""/>

<xacro:arg name="physical_params" default=""/>

<xacro:arg name="kinematics_params" default=""/>

<xacro:arg name="visual_params" default=""/>

改为

<xacro:arg name="joint_limit_params" default="$(find ur_description)/config/ur10/joint_limits.yaml"/>

<xacro:arg name="physical_params" default="$(find ur_description)/config/ur10/physical_parameters.yaml"/>

<xacro:arg name="kinematics_params" default="$(find ur_description)/config/ur10/default_kinematics.yaml"/>

<xacro:arg name="visual_params" default="$(find ur_description)/config/ur10/visual_parameters.yaml"/>

1.开始配置

roslaunch moveit_setup_assistant setup_assistant.launch

(1)选择模型文件

(2)自动设置碰撞矩阵

(3)设置虚拟关节

(4)设置规划组

(5)添加joints

(6)夹爪不需要运动学求解器

(7)设置自定义姿势

(8)设置末端执行器

(9)assive Joints被动关节

(10)Controllers控制器

首先,点击Auto Add FollowJointsTrajectoryControllers For Each Planning Group自动生成controllers。

为了实现moveit对gazebo中机械臂的控制,我们需要确保命名空间一致,即控制器名称要统一。参考fmauch_universal_robot/ur_gazebo/config/ur10_controllers.yaml,设置两个controllers的Name和Type。

(11)模拟

对仿真源文件的等价修改,跳过

(12)3D感知

暂时不需要,跳过

(13)作者署名

(14)生成config文件

结果演示

可能存在的问题:

命名空间不一致

修改位置ur_control.launch.xml

<arg name="controllers" default="joint_state_controller manipulator_controller gripper_controller"/>

<arg name="stopped_controllers" default="manipulator_controller gripper_controller"/>

ur10_bringup.launch

<arg name="controllers" default="joint_state_controller manipulator_controller gripper_controller" doc="Controllers that are activated by default."/>

<arg name="stopped_controllers" default="joint_group_pos_controller" doc="Controllers that are initally loaded, but not started."/>

绝大部分控制失败都是由命名空间不一致引起的,此处应重点注意排查

相关文章:

ROS ur10机械臂添加140夹爪全流程记录

ROS ur10机械臂添加140夹爪 系统版本&#xff1a;Ubuntu20.04 Ros版本&#xff1a;noetic Moveit版本&#xff1a;moveit-noetic 参考博客&#xff1a; ur3robotiq ft sensorrobotiq 2f 140配置rviz仿真环境_有末端力传感器的仿真环境-CSDN博客 UR5机械臂仿真实例&#xf…...

火绒终端安全管理系统V2.0网络防御功能介绍

火绒终端安全管理系统V2.0 【火绒企业版V2.0】网络防御功能包含网络入侵拦截、横向渗透防护、对外攻击检测、僵尸网络防护、Web服务保护、暴破攻击防护、远程登录防护、恶意网址拦截。火绒企业版V2.0的网络防御功能&#xff0c;多层次、多方位&#xff0c;守护用户终端安全。 …...

halcon三维点云数据处理(二十五)moments_object_model_3d

目录 一、moments_object_model_3d例程二、moments_object_model_3d函数三、效果图一、moments_object_model_3d例程 这个例子说明了如何使用moments_object_model_3d运算符来将3D数据与x、y、z坐标轴对齐。在实际应用中,通过3D传感器获取的物体模型可能具有一个与物体主轴不…...

网络安全漏洞管理要求 网络安全产品漏洞

一、漏洞类型 缓冲区溢出、跨站脚本、DOS攻击、扫描、SQL 注入、木马后门、病毒蠕虫、web攻击、僵尸网络、跨站请求伪造、文件包含、文件读取、目录遍历攻击、敏感信息泄露、暴力破解、代码执行漏洞、命令执行、弱口令、上传漏洞利用、webshell利用、配置不当/错误、逻辑/涉及错…...

XML(eXtensible Markup Language)

eXtensible Markup Language&#xff08;可扩展标记语言&#xff09;是一种用来存储和传输数据的文本格式。 具体定义 XML 可扩展标记语言&#xff0c;是用于标记电子文件使其具有结构性的标记语言&#xff0c;可以 用来标记数据、定义数据类型&#xff0c;是一种允许用户对自…...

SpringBoot两种方式接入DeepSeek

方式一&#xff1a;基于HttpClient 步骤 1&#xff1a;准备工作 获取 DeepSeek API 密钥&#xff1a;访问 DeepSeek 的开发者平台&#xff0c;注册并获取 API 密钥。 步骤 2&#xff1a;引入依赖 <dependency><groupId>org.springframework.boot</groupId&g…...

el-date-picker 组件限制禁止选择当前时间之前的时间

页面代码 <el-date-pickerv-model"xxx.startTime"type"datetime"placeholder"请选择开始时间"value-format"YYYY-MM-DD HH:mm:ss"clearable:disabledDate"disabledDateFn":disabled-hours"disabledHours":dis…...

嵌入式科普(33)深度解析C语言中的const和volatile关键字

1. 关键字基础概念 const&#xff1a;定义"只读变量"&#xff0c;被修饰的变量不可被程序修改 volatile&#xff1a;提醒编译器该变量可能被意外修改&#xff0c;禁止编译器优化 九、e2studio VS STM32CubeIDE之const修饰BSP函数的形参 嵌入式科普(23)指向寄存器的…...

DIP的实际举例

SOLID原则。 依赖倒置原则&#xff08;DIP&#xff09;的核心是高层模块不应该依赖于低层模块&#xff0c;二者都应该依赖于抽象&#xff08;接口或抽象类&#xff09; 例如&#xff0c;随着业务的发展&#xff0c;订单总金额的计算规则可能需要根据不同的客户类型或促销活动…...

【GESP】C++二级真题 luogu-b3955, [GESP202403 二级] 小杨的日字矩阵

GESP二级真题&#xff0c;多层循环、分支语句练习&#xff0c;难度★✮☆☆☆。 题目题解详见&#xff1a;https://www.coderli.com/gesp-2-luogu-b3955/ 【GESP】C二级真题 luogu-b3955, [GESP202403 二级] 小杨的日字矩阵 | OneCoderGESP二级真题&#xff0c;多层循环、分支…...

python类型转换深浅拷贝

1.类型转换 1.1 int(x):转化为一个整数&#xff0c;只能转换由纯数字组成的字符串 float->int 浮点型强转整形会去掉小数点后面的数&#xff0c;只保留整数部分 a 1.2 print(type(a)) #<class float> b int(a) print(type(b)) #<class int>print(int…...

Kafka面试题汇总

基础篇 1、什么是 Apache Kafka&#xff1f;它的主要用途是什么&#xff1f; 2、Kafka 中的几个核心概念是什么&#xff1f;请简要说明每个概念的作用。 3、Kafka 的 Producer 和 Consumer 是如何工作的&#xff1f;它们之间的数据传递机制是什么&#xff1f; 进阶篇 1、K…...

window安装MySQL5.7

1、下载MySQL5.7.24 浏览器打开&#xff1a; https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-winx64.zip 2、解压缩 下载下来的是一个压缩包&#xff0c;解压到你想放到的目录下面&#xff0c;我放的是“C:\MySQL” 3、配置MySQL环境变量 计算机右键 - 属性 …...

什么是手机9008模式?如何进入9008

之前给大家分享了一些有关手机刷机的知识&#xff0c;今天给大家讲一讲如果刷机过程中不慎变砖应该如何应对&#xff08;当然了&#xff0c;希望大家都不会遇到&#xff09;&#x1f602;&#x1f604; 在给手机 Root 或刷机时&#xff0c;线刷 9008 指的是利用 高通 9008 模式…...

【jira】用到几张表

jira用到的几张表 测试计划&#xff0c;测试周期&#xff0c;测试用例&#xff0c;问题记录 1. 测试计划 # 记录表&#xff0c;查计划详情 SELECT ID,issuenum,SUMMARY FROM jiraissue where issuenum 22871# 测试计划下&#xff0c;测试周期&#xff0c;查测试周期id&…...

文件包含-session2

[题目信息]&#xff1a; 题目名称题目难度文件包含-session22 [题目考点]&#xff1a; 由于网站功能需求&#xff0c;会让前端用户选择要包含的文件&#xff0c;而开发人员又没有对要包含的文件进行安全考虑&#xff0c;就导致攻击者可以通过修改文件的位置来让后台执行任意…...

在 MySQL 的 InnoDB 存储引擎中,脏页(Dirty Page)的刷盘(Flush)时机

1. 后台线程周期性刷盘 触发机制&#xff1a; InnoDB 的 Page Cleaner 线程 会周期性地将脏页刷入磁盘&#xff0c;防止内存中脏页堆积。 触发条件&#xff1a; 脏页比例阈值&#xff1a;当 Buffer Pool 中脏页占比超过 innodb_max_dirty_pages_pct&#xff08;默认 90%&#…...

Vscode编辑器获取更新远程最新分支

解决&#xff1a;打开当前项目的终端&#xff0c;输入 git remote update origin --prune # 查看远程分支 git branch -r --prune --prune 参数告诉 Git 清理那些远程仓库中已经删除但本地仍然存在的跟踪分支。 命令作用 更新远程仓库引用&#xff1a; git remote update …...

`AdminAdminDTO` 和 `userSession` 对象中的字段对应起来的表格

以下是将更正后的表格放在最前面的回答&#xff0c;表格包含序号列&#xff0c;合并了后端 AdminAdminDTO 和前端 userSession 的所有字段&#xff0c;并标注对方没有的字段。token 字段值用省略号&#xff08;...&#xff09;表示&#xff1a; 序号字段名AdminAdminDTO (后端…...

存储引擎、索引(MySQL笔记第四期)

p.s.这是萌新自己自学总结的笔记&#xff0c;如果想学习得更透彻的话还是请去看大佬的讲解 目录 存储引擎概念InnoDB存储引擎MyISAM存储引擎Memory存储引擎存储引擎的选择 索引三种索引索引分类语法(创建/查看/删除)性能分析工具SQL执行频率慢查询日志profile详情explain执行计…...

全面汇总windows进程通信(二)

在Windows操作系统下,实现进程间通信(IPC, Inter-Process Communication)有几种常见的方法,包括使用管道(Pipe)、共享内存(Shared Memory)、消息队列(Message Queue)、命名管道(Named Pipe)、套接字(Socket)等。本文介绍如下几种: 信号量(Semaphore)和互斥量(…...

【大模型】蓝耘智算云平台快速部署DeepSeek R1/R3大模型详解

目录 一、前言 二、蓝耘智算平台介绍 2.1 蓝耘智算平台是什么 2.2 平台优势 2.3 应用场景 2.4 对DeepSeek 的支持 2.4.1 DeepSeek 简介 2.4.2 DeepSeek 优势 三、蓝耘智算平台部署DeepSeek-R1操作过程 3.1 注册账号 3.1.1 余额检查 3.2 部署DeepSeek-R1 3.2.1 获取…...

心理咨询小程序的未来发展

还在眼巴巴看着心理咨询行业的巨大蛋糕却无从下口&#xff1f;今天就来聊聊心理咨询小程序的无限潜力 据统计&#xff0c;全球超 10 亿人受精神心理问题困扰&#xff0c;国内心理健康问题也日益突出&#xff0c;心理咨询需求猛增。可传统心理咨询预约难&#xff0c;费用高&…...

硬件工程师入门教程

1.欧姆定律 测电压并联使用万用表测电流串联使用万用表&#xff0c;红入黑出 2.电阻的阻值识别 直插电阻 贴片电阻 3.电阻的功率 4.电阻的限流作用 限流电阻阻值的计算 单位换算关系 5.电阻的分流功能 6.电阻的分压功能 7.电容 电容简单来说是两块不连通的导体加上中间的绝…...

大模型本地部署硬件资源学习(包含模型微调所需资源)

大模型本地部署硬件配置学习 前言1.大模型应用需求分析扩展框架2.华为昇腾算力3.显卡信息汇总对比表4.大模型微调显卡资源指南&#xff08;Qwen系列与DeepSeek蒸馏模型&#xff09;一、Qwen系列模型微调显存需求二、DeepSeek-R1蒸馏模型微调显存需求三、显存优化策略与硬件选型…...

【DeepSeek系列】05 DeepSeek核心算法改进点总结

文章目录 一、DeepSeek概要二、4个重要改进点2.1 多头潜在注意力2.2 混合专家模型MoE2.3 多Token预测3.4 GRPO强化学习策略 三、2个重要思考3.1 大规模强化学习3.2 蒸馏方法&#xff1a;小模型也可以很强大 一、DeepSeek概要 2024年&#xff5e;2025年初&#xff0c;DeepSeek …...

Java基础常见的面试题(易错!!)

面试题一&#xff1a;为什么 Java 不支持多继承 Java 不支持多继承主要是为避免 “菱形继承问题”&#xff08;又称 “钻石问题”&#xff09;&#xff0c;即一个子类从多个父类继承到同名方法或属性时&#xff0c;编译器无法确定该调用哪个父类的成员。同时&#xff0c;多继承…...

山东大学软件学院nosql实验四

实验题目&#xff1a; 使用Java做简单数据插入 实验内容 用API方式&#xff0c;做数据插入。 使用Java语言实现数据插入界面&#xff0c;为实验一建立的学生、教师、课程表插入数据&#xff0c;可以在前端界面中录入数据之后保存&#xff0c;也可以导入Excel中的数据。 实…...

Linux | man 手册使用详解

注&#xff1a;本文为 “Linux man 手册” 相关文章合辑。 略作重排。 man 手册常用命令 1. 查看和搜索手册页 查看特定软件包的手册页&#xff0c;并使用 grep 命令过滤出包含特定关键字的行&#xff1a; man <package> | grep <keyword>在整个系统的手册页中…...

初阶数据结构(C语言实现)——1数据结构前言

1. 什么是数据结构 数据结构(Data Structure)是计算机存储、组织数据的方式&#xff0c;指相互之间存在一种或多种特定关系的数据元素的集合。 2.什么是算法&#xff1f; 算法(Algorithm):就是定义良好的计算过程&#xff0c;他取一个或一组的值为输入&#xff0c;并产生出一…...

Windows - 通过ssh打开带有图形界面的程序 - 一种通过计划任务的曲折实现方式

Windows(奇思妙想) - 通过ssh打开带有图形界面的程序 - 一种通过计划任务的曲折实现方式 前言 Windows启用OpenSSH客户端后就可以通过SSH的方式访问Windows了。但是通过SSH启动的程序&#xff1a; 无法显示图形界面会随着SSH进程的结束而结束 于是想到了一种通过执行“计划…...

基于 SpringBoot 的 “电影交流平台小程序” 系统的设计与实现

大家好&#xff0c;今天要和大家聊的是一款基于 SpringBoot 的 “电影交流平台小程序” 系统的设计与实现。项目源码以及部署相关事宜请联系我&#xff0c;文末附上联系方式。 项目简介 基于 SpringBoot 的 “电影交流平台小程序” 系统设计与实现的主要使用者分为 管理员 和…...

工具方法 - 合规性矩阵

Compliance matrix &#xff08;合规性矩阵&#xff09;是产品需求管理中的一个重要工具&#xff0c;它是用来识别、跟踪、监控和组织所有客户和利益相关方需求是否被满足的工具。具体来说&#xff0c;Compliance matrix需要用一行一行的证据来证明被设计的产品针对每个需求的实…...

2.2 STM32F103C8T6最小系统板的四种有关固件的开发方式

2.2.1 四种有关固件的开发方式 四种有关于固件的开发方式从时间线由远及近分别是&#xff1a;寄存器开发、标准外设驱动库开发、硬件抽象层库开发、底层库开发。 四种开发方式各有优缺点&#xff0c;可以参考ST官方的测试与说明。 1.寄存器开发 寄存器编程对于从51等等芯片过渡…...

go 环境准备

配置路径&#xff1a; GOROOT&#xff1a;D:\GoGOPATH&#xff1a;go的工作目录 D:\workspacego 验证版本&#xff1a;go version 配置第三方仓库&#xff1a; GO111MODULE&#xff1a;开启mod模式GOPROXY&#xff1a;go语言三方库地址GOSUMDB&#xff1a;go语言软件包的M…...

VMware安装Centos 9虚拟机+设置共享文件夹+远程登录

一、安装背景 工作需要安装一台CentOS-Stream-9的机器环境&#xff0c;所以一开始的安装准备工作有&#xff1a; vmware版本&#xff1a;VMware Workstation 16 镜像版本&#xff1a;CentOS-Stream-9-latest-x86_64-dvd1.iso &#xff08;kernel-5.14.0&#xff09; …...

高中数学基础-平面向量

文章目录 1、平面向量2、复数 高中数学-平面向量、复数 1、平面向量 向量&#xff1a;具有大小和方向的量称为向量&#xff1b;物理学中向量也称矢量&#xff0c;只有大小没有方向的量称为标量&#xff1b;向量的大小称为模&#xff0c;大小为1的是单位向量&#xff0c;长度为0…...

v4l2子系统学习(三)编写虚拟摄像头驱动

文章目录 1、声明2、前言3、虚拟摄像头驱动编写3.1、编写硬件相关代码3.2、程序示例 1、声明 本文是在学习韦东山《驱动大全》V4L2子系统时&#xff0c;为梳理知识点和自己回看而记录&#xff0c;全部内容高度复制粘贴。 韦老师的《驱动大全》&#xff1a;商品详情 其对应的…...

堆排序(详解)c++

堆排序 &#xff08;可以⽤ ppt 演⽰流程&#xff09; 堆排序(Heap Sort)是指利⽤堆这种数据结构所设计的⼀种排序算法。本质上是优化了选择排序算法&#xff0c;选择排序的思想是在堆排序元素中拿出最大值或最小值&#xff0c;然后把这个位置的值放在它该放的位置上就可以了&a…...

API测试工具:Swagger vs Postman 2025最新全面对比

随着微服务架构的普及和云原生应用的激增&#xff0c;高效的 API 开发、测试和文档管理工具变得越来越重要。在众多 API 工具中&#xff0c;Swagger 和 Postman 各自以不同的方式解决着 API 开发生命周期中的关键问题&#xff0c;本文将从多个维度深入对比这两款工具&#xff0…...

算法-图-数据结构(邻接矩阵)-BFS广度优先遍历

邻接矩阵广度优先遍历&#xff08;BFS&#xff09;是一种用于遍历或搜索图的算法&#xff0c;以下是具体介绍&#xff1a; 1. 基本概念 图是一种非线性的数据结构&#xff0c;由顶点和边组成&#xff0c;可分为无向图、有向图、加权图、无权图等。邻接矩阵是表示图的一种数…...

List的模拟实现(2)

前言 上一节我们讲解了list的基本功能&#xff0c;那么本节我们就结合底层代码来分析list是怎么实现的&#xff0c;那么废话不多说&#xff0c;我们正式进入今天的学习&#xff1a;&#xff09; List的底层结构 我们先来看一下list的底层基本结构&#xff1a; 这里比较奇怪的…...

【C++设计模式】观察者模式(1/2):从基础到优化实现

1. 引言 在 C 软件与设计系列课程中&#xff0c;观察者模式是一个重要的设计模式。本系列课程旨在深入探讨该模式的实现与优化。在之前的课程里&#xff0c;我们已对观察者模式有了初步认识&#xff0c;本次将在前两次课程的基础上&#xff0c;进一步深入研究&#xff0c;着重…...

可狱可囚的爬虫系列课程 13:Requests使用代理IP

一、什么是代理 IP 代理 IP&#xff08;Proxy IP&#xff09;是一个充当“中间人”的服务器IP地址&#xff0c;用于代替用户设备&#xff08;如电脑、手机等&#xff09;直接与目标网站或服务通信。用户通过代理IP访问互联网时&#xff0c;目标网站看到的是代理服务器的IP地址&…...

冒险岛079 V8 整合版源码搭建教程+IDEA启动

今天教大家来部署下一款超级怀旧游戏冒险岛&#xff0c;冒险岛源码是开源的&#xff0c;但是开源的代码会有各种&#xff0c;本人进行了加工整合&#xff0c;并且用idea进行了启动测试&#xff0c;经过修改后没有任何问题。 启动截图 后端控制台 前端游戏界面 声明 冒险岛源码…...

Web刷题之PolarDN(中等)

1.到底给不给flag呢 代码审计 一道典型的php变量覆盖漏洞 相关知识 什么是变量覆盖漏洞 自定义的参数值替换原有变量值的情况称为变量覆盖漏洞 经常导致变量覆盖漏洞场景有&#xff1a;$$使用不当&#xff0c;extract()函数使用不当&#xff0c;parse_str()函数使用不当&…...

[250224] Yaak 2.0:Git集成、WebSocket支持、OAuth认证等 | Zstandard v1.5.7 发布

目录 Yaak 2.0 发布&#xff1a;Git 集成、WebSocket 支持、OAuth 认证等众多功能&#xff01;Zstandard v1.5.7 发布&#xff1a;性能提升&#xff0c;稳定性增强 Yaak 2.0 发布&#xff1a;Git 集成、WebSocket 支持、OAuth 认证等众多功能&#xff01; Yaak&#xff0c;一款…...

插入排序:一种简单而直观的排序算法

大家好&#xff01;今天我们来聊聊一个简单却非常经典的排序算法——插入排序&#xff08;Insertion Sort&#xff09;。在所有的排序算法中&#xff0c;插入排序是最直观的一个。 一、插入排序的基本思想 插入排序的核心思想是&#xff1a;将一个待排序的元素&#xff0c;插…...

vue2响应式数据原理

1. 核心原理 Vue 2 的响应式系统基于 Object.defineProperty&#xff0c;通过 依赖收集 和 派发更新 来实现数据的响应式 依赖收集&#xff1a;在读取数据时&#xff0c;记录哪些函数&#xff08;或组件&#xff09;依赖了该数据。派发更新&#xff1a;在修改数据时&#xff…...

对免认证服务提供apikey验证

一些服务不带认证&#xff0c;凡是可以访问到服务端口&#xff0c;都可以正常使用该服务&#xff0c;方便是方便&#xff0c;但是不够安全。 比如ollama默认安装后就是这样。现在据说网上扫一下端口11434&#xff0c;免apikey的ollama服务一大堆。。。 那我们怎样将本机安装的o…...