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

ROS2_control 对机器人控制(不完整,有时间再更新)

ROS2_control 对机器人控制

  • 安装与介绍
    • 安装
    • 介绍
  • 使用
    • gz 中写法
    • .yaml文件中写法
      • type: joint_state_broadcaster/JointStateBroadcaster的来源
    • 命令接口关节控制
      • command_interface
      • transmission
    • CMakelist.txt与package.xml文件
  • gz_ros2_control与自定义插件
    • 例子描述
    • 自定义插件使用

安装与介绍

安装

sudo apt install ros-humble-ros2-control
sudo apt install ros-humble-ros2-controllers
# 会提示安装好其他相应的东西
# 本来应该还要有ros-humble-gz-ros2-control,但是直接安装提示定位不到

介绍

在这里插入图片描述

ros2 control --help# 输出
Commands:list_controller_types         输出可用的控制器类型及其基类list_controllers              输出已加载控制器的列表、类型和状态list_hardware_components      输出可用硬件组件列表list_hardware_interfaces      输出可用命令和状态接口列表load_controller               在控制器管理器中加载控制器reload_controller_libraries   重新加载控制器库set_controller_state          调整控制器的状态set_hardware_component_state  调整硬件组件的状态switch_controllers            在控制器管理器中切换控制器unload_controller             在控制器管理器中卸载控制器view_controller_chains        将加载的链式控制器的图表生成到/tmp/controller_digram.gv.pdf中

在这里插入图片描述

使用

基本上就是写三个地方吧。
在这里插入图片描述
在github找到gz_ros2_control_demos这一栏的例子照着写就很舒服了,因为humble的例子还是和gazebo11版本使用,到ubuntu24.04才会完全使用ros2 和 gz sim版本联合,所以我在ubuntu 22.04下使用ros2 humble 和gazebo harmonic也是照着这个jazzy和harmonic的例子用了。
gz_ros2_control

gz 中写法

    <ros2_control name="FishBotGazeboSystem" type="system"><hardware><plugin>gazebo_ros2_control/GazeboSystem</plugin></hardware><joint name="left_wheel_joint"><command_interface name="velocity"><param name="min">-1</param><param name="max">1</param></command_interface><command_interface name="effort"><param name="min">-0.1</param><param name="max">0.1</param></command_interface><state_interface name="position" /><state_interface name="velocity" /><state_interface name="effort" /></joint><joint name="right_wheel_joint"><command_interface name="velocity"><param name="min">-1</param><param name="max">1</param></command_interface><command_interface name="effort"><param name="min">-0.1</param><param name="max">0.1</param></command_interface><state_interface name="position" /><state_interface name="velocity" /><state_interface name="effort" /></joint></ros2_control><!-- gz块是为了映射到gz仿真环境中 --><plugin filename="libgazebo_ros2_control.so" name="gazebo_ros2_control"><!-- parameters对应的是.yaml文件中相关的东西 --><parameters>$(find fishbot_description)/config/fishbot_ros2_controller.yaml</parameters><!--<ros><remapping>/fishbot_diff_drive_controller/cmd_vel_unstamped:=/cmd_vel</remapping><remapping>/fishbot_diff_drive_controller/odom:=/odom</remapping></ros>--></plugin>

< ros2_control>项要写在机器人模型文件中,也就是启动时的描述文件,这里就是在机器人xacro描述文件中判断使用gazebo11、gz、实物的ros2_control写法
在这里插入图片描述

<!-- gazebo11 -->
<ros2_control name="GazeboSystem" type="system"><hardware><plugin>gazebo_ros2_control/GazeboSystem</plugin></hardware>
</ros2_control><!-- gz --><ros2_control name="GazeboSystem" type="system"><hardware><plugin>gz_ros2_control/GazeboSimSystem</plugin></hardware></ros2_control><!-- 实物 --><ros2_control name="HardwareSystem" type="system"><hardware><plugin>hardware/Hardware</plugin></hardware></ros2_control>

.yaml文件中写法

  • 首先写controller_manager,集中定义系统的东西
  • 接着后面一个一个写控制器的具体内容
# 总起定义,集中管理
controller_manager:ros__parameters:update_rate: 100  # Hzuse_sim_time: truefishbot_joint_state_broadcaster:	# 这个名字是随便取的type: joint_state_broadcaster/JointStateBroadcasteruse_sim_time: truefishbot_effort_controller:type: effort_controllers/JointGroupEffortControllerfishbot_diff_drive_controller:type: diff_drive_controller/DiffDriveController# 对应了上面的控制器名字了,这里详细定义
fishbot_effort_controller:ros__parameters:joints:- left_wheel_joint- right_wheel_jointcommand_interfaces:- effortstate_interfaces:- position- velocity- effortfishbot_diff_drive_controller:ros__parameters:left_wheel_names: ["left_wheel_joint"]right_wheel_names: ["right_wheel_joint"]wheel_separation: 0.17	# 轮距#wheels_per_side: 1  # actually 2, but both are controlled by 1 signalwheel_radius: 0.032		# 轮半径wheel_separation_multiplier: 1.0left_wheel_radius_multiplier: 1.0right_wheel_radius_multiplier: 1.0publish_rate: 50.0odom_frame_id: odombase_frame_id: base_footprintpose_covariance_diagonal : [0.001, 0.001, 0.0, 0.0, 0.0, 0.01]twist_covariance_diagonal: [0.001, 0.0, 0.0, 0.0, 0.0, 0.01]open_loop: trueenable_odom_tf: truecmd_vel_timeout: 0.5#publish_limited_velocity: trueuse_stamped_vel: false#velocity_rolling_window_size: 10

type: joint_state_broadcaster/JointStateBroadcaster的来源

找到ros2的安装路径下的include
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
命名空间: joint_state_broadcaster,类名: JointStateBroadcaster

插件描述文件:
在这里插入图片描述
name: 插件在 YAML 文件中引用的名称,type: C++ 类的完整命名空间路径在这里插入图片描述
通过 PLUGINLIB_EXPORT_CLASS 宏将控制器注册为插件,cpp文件是从github源码找来的,安装ros2_controllers有apt安装和源码编译两种,apt安装的话就会安装到/opt/ros/humble/下,功能集成到.so文件中了。
在这里插入图片描述
后面如果要自己编写插件,也基本按照这个形式,写hpp,写cpp,然后PLUGINLIB_EXPORT_CLASS注册为插件,然后用xml文件完成插件描述。

命令接口关节控制

对joint可以进行位置、速度、力控制,然后需要生成硬件接口。可以有command_interface和transmission两种方式,如果两个都写了,会发出警告说有重复,但不是报错。

command_interface

<ros2_control> 标签,并根据 <command_interface> 和 <state_interface> 直接创建对应的硬件接口

    <joint name="joint"><command_interface name="position"/><command_interface name="velocity"/><command_interface name="effort"/><command_interface name="kp"/><command_interface name="kd"/><state_interface name="position"/><state_interface name="velocity"/><state_interface name="effort"/></joint>

看源码知道能写哪些东西
在这里插入图片描述

transmission

< transmission> 是 ROS2 Control框架中定义关节(Joint)与执行器(Actuator)之间传动关系的关键配置,将物理关节(如电机、舵机)与 ROS2 Control 的控制接口绑定,使控制器能通过硬件接口发送指令,通过 < hardwareInterface> 指定关节支持的控制接口类型(如力矩、位置、速度)。
一般来说transmission项多用于跟实物机器人的时候使用

        <transmission name="joint_tran"><type>transmission_interface/SimpleTransmission</type><joint name="joint"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></joint><actuator name="joint_motor"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface><!-- 减速比为0.5,执行器转动 1 圈,关节仅转动 0.5 圈 --><mechanicalReduction>0.5</mechanicalReduction></actuator></transmission>

CMakelist.txt与package.xml文件

例程中的package.xml使用了这些

  <buildtool_depend>ament_cmake</buildtool_depend><build_depend>control_msgs</build_depend><build_depend>geometry_msgs</build_depend><build_depend>rclcpp</build_depend><build_depend>rclcpp_action</build_depend><build_depend>std_msgs</build_depend><exec_depend>ament_index_python</exec_depend><exec_depend>geometry_msgs</exec_depend><exec_depend>launch_ros</exec_depend><exec_depend>launch</exec_depend><exec_depend>rclcpp</exec_depend><exec_depend>robot_state_publisher</exec_depend><exec_depend>ros_gz_bridge</exec_depend><exec_depend>ros_gz_sim</exec_depend><exec_depend>ros2launch</exec_depend><exec_depend>std_msgs</exec_depend><exec_depend>xacro</exec_depend><!-- ros2_control --><exec_depend>ackermann_steering_controller</exec_depend><exec_depend>control_msgs</exec_depend><exec_depend>diff_drive_controller</exec_depend><exec_depend>effort_controllers</exec_depend><exec_depend>gz_ros2_control</exec_depend><exec_depend>hardware_interface</exec_depend><exec_depend>imu_sensor_broadcaster</exec_depend><exec_depend>joint_state_broadcaster</exec_depend><exec_depend>joint_trajectory_controller</exec_depend><exec_depend>mecanum_drive_controller</exec_depend><exec_depend>ros2controlcli</exec_depend><exec_depend>tricycle_controller</exec_depend><exec_depend>velocity_controllers</exec_depend><test_depend>ament_cmake_gtest</test_depend><test_depend>ament_lint_auto</test_depend><test_depend>ament_lint_common</test_depend>

gz_ros2_control与自定义插件

例子描述

看到插件的编写情况差不多都是这样,include,src写c++的实现部分以及注册插件,plugin.xml文件用来描述插件
在这里插入图片描述
在这里插入图片描述
在urdf中写的< plugin>gz_ros2_control/GazeboSimSystem< /plugin>就出自命名空间和类名
在这里插入图片描述

自定义插件使用

相关文章:

ROS2_control 对机器人控制(不完整,有时间再更新)

ROS2_control 对机器人控制 安装与介绍安装介绍 使用gz 中写法.yaml文件中写法type: joint_state_broadcaster/JointStateBroadcaster的来源 命令接口关节控制command_interfacetransmission CMakelist.txt与package.xml文件 gz_ros2_control与自定义插件例子描述自定义插件使用…...

SAP-ABAP:SAP Enterprise Services Repository(ESR)技术全景解析

以下是对SAP PO中Enterprise Services Repository(ESR)的深度技术解析,包含详细架构设计、开发实践及企业级应用方案: SAP Enterprise Services Repository(ESR)技术全景解析 一、ESR核心架构与组件关系 1. 技术堆栈定位 ┌─────────────────────…...

每日一道leetcode

2130. 链表最大孪生和 - 力扣&#xff08;LeetCode&#xff09; 题目 在一个大小为 n 且 n 为 偶数 的链表中&#xff0c;对于 0 < i < (n / 2) - 1 的 i &#xff0c;第 i 个节点&#xff08;下标从 0 开始&#xff09;的孪生节点为第 (n-1-i) 个节点 。 比方说&…...

通过Aop实现限制修改删除指定账号的数据

1、需求 对于Teach账号创建的数据&#xff0c;其他用户仅仅只有查询的权限&#xff0c;而不能修改和删除。并且部分接口只允许Teach账号访问 2、实现思路 在删除和修改时往往需要传递数据的id&#xff0c;进而可以通过id查询该数据是否由Teach账号创建。当然我们可以在每个删…...

递归实现指数型枚举

我们以n2 为例 我们每次都有选和不选两种 方案&#xff0c;对于每个数字 核心代码 tatic void dfs(int u) { // u代表当前处理的数字if (u > n) { // 终止条件&#xff1a;处理完所有数字for (int i 1; i < n; i) { // 遍历所有数字if (nums[i]) {…...

无代码国产流程引擎 FlowLong 1.1.6 发布

无代码国产流程引擎 FlowLong 1.1.6 于 2025 年 4 月 7 日发布。 FlowLong 是一款纯血国产自研的工作流引擎&#xff0c;具有以下特点&#xff1a; 核心精简&#xff1a;引擎核心仅 8 张表实现逻辑数据存储&#xff0c;采用 json 数据格式存储模型&#xff0c;结构简洁直观。组…...

软考高项-考前冲刺资料-M 类【项目管理类】【光头张老师出品】

重点考点汇总 一、案例答题时需要注意: 1.条目写要清晰,要标注 1、2、3、4、… 2.关键字突出,关键字一定是专业词汇如 “监控”“控制成本”…等等,代替自己平时工作中的用此。 3.尽量多写几点,错了不扣分,但是避免重复写,避免写了一大段的内容,但是表达的是一个观点。…...

LLM Agents项目推荐:MetaGPT、AutoGen、AgentVerse详解

这一部分我们将深入介绍三大备受关注的LLM Agents项目&#xff1a;MetaGPT、AutoGen和AgentVerse&#xff0c;包括它们的背景、设计思路、主要功能、技术亮点以及典型应用场景。 1. MetaGPT&#xff1a;让AI像软件工程团队一样协作 项目背景 MetaGPT由Huang et al.于2023年提…...

win10家庭版安装Docker

win10家庭版本中成功安装Docker&#xff0c;亲测&#xff01; 1、下载Docker 下载地址&#xff1a;http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ Docker的有CE和EE版&#xff0c;CE为免费版&#xff0c;EE由公司支持的付费版&#xff0c;在此选择CE版本…...

mapbox基础,加载ESRI OpenStreetMap开放街景标准风格矢量图

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.1 ☘️mapboxgl.Map style属性二、🍀加载ESRI OpenStreetMap开放街景标准风…...

【网络安全 | 漏洞挖掘】通过分析JS文件实现接口未授权访问与账户接管

未经许可,不得转载。 文中所述漏洞均已修复,未经授权不得进行非法渗透测试。 文章目录 正文正文 大约一年前,我给我妈买了一辆 2023 款斯巴鲁 Impreza,前提是她得答应我,之后我可以借来做一次“白帽渗透测试”。过去几年我一直在研究其他车企的安全问题,但一直没有机会仔…...

引领东方语言识别新风潮!Dolphin语音模型开创自动语音识别(ASR)新时代

引领东方语言识别新风潮&#xff01;Dolphin语音模型开创自动语音识别&#xff08;ASR&#xff09;新时代 在全球语音识别技术领域&#xff0c;随着人工智能的飞速发展&#xff0c;许多技术巨头纷纷推出了多语言支持的语音识别系统&#xff0c;如Whisper等。然而&#xff0c;尽…...

运动规划实战案例 | 基于四叉树分解的路径规划(附ROS C++/Python仿真)

目录 1 为什么需要四叉树&#xff1f;2 基于四叉树的路径规划2.1 分层抽象2.2 路图搜索2.3 动态剪枝 3 算法仿真3.1 ROS C算法仿真3.2 Python算法仿真 1 为什么需要四叉树&#xff1f; 路径规划的本质是在给定环境中寻找从起点到终点的最优或可行路径&#xff0c;其核心挑战在…...

java设计模式-享元模式

享元模式 基本介绍 1、享元模式(flyweight Pattern)&#xff0c;也叫作蝇量模式&#xff1a;运用在共享技术有效的支持大量细粒度的对象。 2、常用语系统底层开发&#xff0c;解决系统的性能问题。像 数据库连接&#xff0c;里面都是创建好的连接对象&#xff0c;在这些连接对…...

Java 大视界 -- Java 大数据在智慧水利水资源调度与水情预测中的应用创新(180)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

自动驾驶---苹果又要造车了吗?

1 背景 巴菲特一直认为造车的企业是一个做 “苦生意” 的企业&#xff0c;可能苹果高层也意识到了这一点&#xff0c; 于是造车计划在去年被终止。 但2025年2月份&#xff0c;苹果公司署名发了一篇自动驾驶领域的论文《Robust Autonomy Emerges from Self-Play》&#xff0c;详…...

Redis主从复制:告别单身Redis!

目录 一、 为什么需要主从复制&#xff1f;&#x1f914;二、 如何搭建主从架构&#xff1f;前提条件✅步骤&#x1f4c1; 创建工作目录&#x1f4dc; 创建 Docker Compose 配置文件&#x1f680; 启动所有 Redis&#x1f50d; 验证主从状态 &#x1f4a1; 重要提示和后续改进 …...

PHP:将关联数组转换为索引数组的完整示例

处理之前的数据 头和行在一起显示 // 执行SQL查询后的原始数据&#xff08;假设查询返回3条记录&#xff09; $rawData [[wip_entity_name > JOB001,primary_item > ITEM001,primary_name > 主产品1,primary_desc > 主产品描述1,start_quantity > 100,quanti…...

27.[2019红帽杯]easyRE1(保姆教程)

收到文件&#xff0c;.elf 文件&#xff0c;ExeinfoPE查看一下基础信息。无壳&#xff0c;64bit。 把文件拖入IDA工具&#xff0c;查看一下。 点击关键字&#xff0c;ctrl x 交叉搜索一下位置&#xff0c;跟进&#xff0c;顺便菜单左侧 Edit --> Plugins--> findcrypt …...

【Redis】Redis实现分布式锁

1. 基于Redis 1.1 加锁 setnx lockKey uniqueValue1.2 解锁 基于Lua脚本保证解锁的原子性。Redis在执行Lua脚本时&#xff0c;可以以原子性的方式执行&#xff0c;确保原子性。 if redis.call("get", keys[1]) argv[1] then return redis.call("del", …...

AI大模型底层技术——Scaling Law

0. 定义 Scaling Law 是描述 AI 模型性能随关键因素&#xff08;如参数量、数据量、计算量&#xff09;增长而变化的数学规律&#xff0c;通常表现为幂律关系。 历史里程碑&#xff1a; **OpenAI 2020 年论文首次系统提出语言模型的缩放定律**DeepMind、Google 等机构后续发表…...

Spring MVC 国际化机制详解(MessageSource 接口体系)

Spring MVC 国际化机制详解&#xff08;MessageSource 接口体系&#xff09; 1. 核心接口与实现类详解 接口/类名描述功能特性适用场景MessageSource核心接口&#xff0c;定义消息解析能力支持参数化消息&#xff08;如{0}占位符&#xff09;所有国际化场景的基础接口Resource…...

java学习笔记13——IO流

File 类的使用 常用构造器 路径分隔符 常用方法 File类的获取功能和重命名功能 File 类的判断功能 File类的创建功能和删除功能 File 类的使用 总结&#xff1a; 1.File类的理解 > File类位于java.io包下&#xff0c;本章中涉及到的相关流也都声明在java.io包下 > File…...

防DDoS流量清洗核心机制解析

本文深度剖析DDoS流量清洗技术演进路径&#xff0c;揭示混合云清洗系统的四层过滤架构&#xff0c;结合2023年新型反射攻击案例&#xff0c;提出基于AI行为分析的动态防御策略。通过Gartner最新攻防效能数据与金融行业实战方案&#xff0c;阐明流量清洗系统在误判率、清洗延迟、…...

边缘计算革命:低功耗GPU在自动驾驶实时决策中的应用

边缘计算革命&#xff1a;低功耗GPU在自动驾驶实时决策中的应用 ——分析NVIDIA Jetson与华为昇腾的嵌入式方案差异 一、自动驾驶的实时决策挑战与边缘计算需求 自动驾驶系统需在30ms内完成环境感知、路径规划与车辆控制的全流程闭环‌。传统云端计算受限于网络延迟&#xf…...

ubuntu24.04-MyEclipse的项目导入到 IDEA中

用myeclipse创建的一个web项目&#xff0c; jdk1.7,tomcat7,mysql8.0,导入到idea项目中 1.导入现有项目 1.打开IDEA&#xff0c;选择“Import Project”进入下一步 2.选择所需要导入的项目&#xff0c;点击“OK” 3.点击创建一个新的项目&#xff0c;然后下一步 4.直接点…...

基于SpringBoot的律师事务所案件管理系统【附源码】

基于SpringBoot的律师事务所案件管理系统&#xff08;源码L文说明文档&#xff09; 目录 4 系统设计 4.1界面设计原则 4.2功能结构设计 4.3数据库设计 4.3.1属性图 4.3.2 数据库物理设计 5 系统实现 5.1客户信息管理 5.2 律师…...

电力网关:推动电力物联网及电力通信系统革新

在“双碳”目标与新型电力系统建设的背景下&#xff0c;电力行业正加速向数字化、智能化、绿色化转型。作为国内领先的电力物联网解决方案提供商&#xff0c;厦门计讯物联科技有限公司&#xff08;以下简称“计讯物联”&#xff09;依托自主研发的电力专用网关、边缘计算平台及…...

Android系统的Wi-Fi系统框架和详细启动流程

目录 一、前言 二、系统架构层次 ‌1、应用层‌ ‌2、Framework层‌ 3‌、HAL层‌ ‌4、驱动层‌ 三、Wi-Fi 目录树结构 四、系统流程 1、应用层请求 2、Wi-Fi管理服务处理 3、硬件交互 4、数据处理与事件通知 5.连接管理 6.状态维护 五、WiFi启动流程及函数调用…...

Scala基础知识8

集合计算高级函数 包括过滤、转换或映射、扁平化、扁平化加映射、分组、简化&#xff08;归约&#xff09;&#xff0c;折叠 过滤:遍历一个集合并从中获取满足指定条件的元素组成一个新的集合。 转换或映射:将原始集合中的元素映射到某个函数中。 扁平化:取消嵌套格式&…...

SwiftUI 本地推送(Local Notification)教程目录

1. 本地推送简介 1.1 什么是本地推送&#xff1f;1.2 本地推送的应用场景&#xff08;提醒、定时任务、用户交互等&#xff09;1.3 本地推送与远程推送的区别 2. 前提条件 2.1 开发环境要求&#xff08;Xcode 13、iOS 15&#xff09;2.2 需要的基础知识&#xff08;SwiftUI …...

大数据技术与Scala

集合高级函数 过滤 通过条件筛选集合元素&#xff0c;返回新集合。 映射 对每个元素应用函数&#xff0c;生成新集集合 扁平化 将嵌套集合展平为单层集合。 扁平化映射 先映射后展平&#xff0c;常用于拆分字符串。 分组 按规则将元素分组为Map结构。 归约 …...

golang通过飞书邮件服务API发送邮件功能详解

一.需求 需要实现通过飞书邮件服务API发送邮件验证码功能:用户输入邮箱, 点击发送邮件,然后发送邮件验证码, 这里验证码有过期时间, 保存到redis缓存中 二.实现 实现的部分代码如下: 控制器部分代码 // 发送邮件控制器 func EmailSendController(userId uint64, m proto.Messa…...

BoostSearch搜索引擎项目 —— 测试用例设计 + web自动化测试代码

web自动化代码&#xff1a; https://gitee.com/chicken-c/boost-search/tree/master/AutoTest...

MySQL学习笔记集--触发器

触发器 MySQL触发器&#xff08;Trigger&#xff09;是一种特殊的存储过程&#xff0c;它在指定的数据库表上指定的事件&#xff08;INSERT、UPDATE、DELETE&#xff09;之前或之后自动执行。触发器可以用来强制执行复杂的业务逻辑、数据完整性规则、自动更新数据等。 触发器…...

算力驱动未来:从边缘计算到高阶AI的算力革命

算力驱动未来&#xff1a;从边缘计算到高阶AI的算力革命 摘要 本文深入探讨了不同算力水平&#xff08;20TOPS至160TOPS&#xff09;在人工智能领域的多样化应用场景。从边缘计算的实时目标检测到自动驾驶的多传感器融合&#xff0c;从自然语言处理的大模型应用到AI for Scie…...

4.8刷题记录(双指针)

今天刷的部分是代码随想录中的双指针专题代码随想录 由于里面包含的题目大部分之前刷过&#xff0c;并且用双指针做过。所以今天仅仅复习&#xff0c;不再进行代码的搬运。 1.19. 删除链表的倒数第 N 个结点 - 力扣&#xff08;LeetCode&#xff09; 分析&#xff1a;此题无…...

在shell脚本中,$@和$#的区别与联系

在 Shell 脚本里&#xff0c;$ 和 $* 都是用于表示传递给脚本或函数的所有参数&#xff0c;下面详细介绍它们的区别与联系。 联系 表示所有参数&#xff1a;二者都能够代表传递给脚本或者函数的全部参数。当你在执行脚本时带上了多个参数&#xff0c;$ 和 $* 都能把这些参数呈…...

IP节点详解及国内IP节点获取指南

获取国内IP节点通常涉及网络技术或数据资源的使用&#xff0c;IP地址作为网络设备的唯一标识&#xff0c;对于网络连接和通信至关重要。详细介绍几种修改网络IP地址的常用方法&#xff0c;无论是对于家庭用户还是企业用户&#xff0c;希望能找到适合自己的解决方案。以下是方法…...

Google Play上架:解决android studio缓存问题(内容清理不干净导致拒审)

在as打包中,经常会遇到改变工程参数或者对应文件参数的情况,比如 修改android gradle版本 快捷键:ctrl + alt + shift + s 修改SDK文件路径 快捷键:ctrl + alt + shift + s 修改Gradle存储下载文件的默认位置 快捷键:ctrl + alt + s 先打开设置 修改compile...

蓝桥杯备赛 Day 21 图论基础

图的基础 ![[图的基础.png]] 1.图的存储方式 (1)邻接表(常用) vector<pair<int,int>> g[N]; //g[x]存放x的所有出点信息,二维数组 g[i][j]{first,second},first是从i出发的第j个出点,second表示边权 例如上图: g[1]{{2,0}.{3,0}} g[6]{{3,7}} g[4]{{5,0},{6,0}…...

MySQL数据库应用技术试卷

建一个以自己名字拼音为命名的数据库。&#xff08;3分&#xff09; CREATE DATABASE example; 令这个数据库为当前所使用的数据库。&#xff08;2分&#xff09; USE example; 写出如下student表结构语句。&#xff08;95分&#xff09; 表1&#xff1a; 列名 数据类型 …...

openssl源码分析之加密模式(modes)

openssl实现分组加密模式&#xff08;例如AES128-CBC的CBC部分&#xff09;的模块名字叫做modes&#xff0c;源代码位于 https://gitee.com/gh_mirrors/openssl/tree/master/crypto/modes 博主又打不开github了TT&#xff0c;只能找个gitee镜像 头文件是modes.h。 该模块目前…...

【Unity】Unity Transform缩放控制教程:实现3D模型缩放交互,支持按钮/鼠标/手势操作

【Unity 】Transform缩放控制教程&#xff1a;实现3D模型缩放交互&#xff0c;支持按钮/鼠标/手势操作 在Unity开发中&#xff0c;Transform组件承担着场景中物体的空间信息控制&#xff0c;包括位置、旋转和缩放。而缩放&#xff08;Scale&#xff09;操作&#xff0c;作为三…...

集成nacos2.2.1出现的错误汇总

总结 1.jdk问题 jdk要一致 2.idea使用问题 idea启动nacos要配置&#xff0c;idea启动类要启动两次&#xff0c;并配置两次vm参数 3.项目依赖问题 依赖要正确添加&#xff0c;有的模块就是不能用公共模块的pom配置&#xff0c;需要独立配置&#xff0c;先后启动顺序也要注意…...

从零到有的游戏开发(visual studio 2022 + easyx.h)

引言 本文章适用于C语言初学者掌握基本的游戏开发&#xff0c; 我将用详细的步骤引领大家如何开发属于自己的游戏。 作者温馨提示&#xff1a;不要认为开发游戏很难&#xff0c;一些基本的游戏逻辑其实很简单&#xff0c; 关于游戏的开发环境也不用担心&#xff0c;我会详细…...

海外高防服务器延迟优化——跨国业务安全加速的底层逻辑

本文深度解析海外高防服务器延迟优化的技术实现路径&#xff0c;揭示跨国业务场景下DDoS防护与网络性能的平衡法则。从物理线路选择到协议栈调优&#xff0c;从流量调度算法到安全检测机制重构&#xff0c;系统阐述降低20ms-50ms延迟的工程实践方案&#xff0c;并附2023年东南亚…...

常用环境部署(二十六)——Centos搭建MQTT服务端EMQX

1、安装docker https://blog.csdn.net/wd520521/article/details/112609796?spm1011.2415.3001.5331 2、安装EMQX4.4.4 &#xff08;1&#xff09;使用docker pull指令安装emqx镜像 docker pull emqx/emqx:4.4.4 &#xff08;2&#xff09;查看镜像 docker images 3、启…...

ecovadis认证基本概述,ecovadis认证审核有效期

EcoVadis认证基本概述 1. 什么是EcoVadis认证&#xff1f; EcoVadis是全球领先的企业可持续发展&#xff08;ESG&#xff09;评级平台&#xff0c;专注于评估企业在**环境&#xff08;E&#xff09;、劳工与人权&#xff08;S&#xff09;、商业道德&#xff08;L&#xff09…...

2.8.4 iOS覆盖率SDK开发

iOS系统的覆盖率SDK,通过搭建本地的pod仓库,直接在podfile中添加指定的下载地址,就可以实现对被测试的app注入覆盖率SDK。 2.8.4.1 开发iOS覆盖率获取Pod私有库 在网上查找了相应的开发方法后,决定开发自己的依赖库,开发方法及步骤如下: 1,开发新的包 (1)通过Xcode创…...