ROS2---std_msgs基础消息包
std_msgs
是ROS 2(Robot Operating System 2)里的基础消息包,它定义了一系列简单却常用的消息类型,为不同节点间的通信提供了基础的数据格式。
1. 消息包概述
std_msgs
包包含了多种基础消息类型,这些类型用于表示常见的数据,如布尔值、整数、浮点数、字符串、时间等。在ROS 2系统里,不同节点通过发布和订阅这些消息类型来交换数据。
2. 常见消息类型
2.1 布尔类型(Bool
)
用于表示布尔值,即 true
或者 false
。
bool data
- 用途:常用于开关控制、状态指示等场景。例如,控制机器人的某个功能开启或关闭,或者表示传感器是否检测到特定目标。
- 示例代码(Python):
import rclpy
from rclpy.node import Node
from std_msgs.msg import Boolclass BoolPublisher(Node):def __init__(self):super().__init__('bool_publisher')self.publisher_ = self.create_publisher(Bool, 'bool_topic', 10)timer_period = 1 # secondsself.timer = self.create_timer(timer_period, self.timer_callback)self.i = 0def timer_callback(self):msg = Bool()msg.data = self.i % 2 == 0self.publisher_.publish(msg)self.get_logger().info('Publishing: "%s"' % msg.data)self.i += 1def main(args=None):rclpy.init(args=args)bool_publisher = BoolPublisher()rclpy.spin(bool_publisher)bool_publisher.destroy_node()rclpy.shutdown()if __name__ == '__main__':main()
2.2 整数类型
- 有符号整数:
Int8
、Int16
、Int32
、Int64
分别表示8位、16位、32位和64位有符号整数。以Int32
为例:
int32 data
- 无符号整数:
UInt8
、UInt16
、UInt32
、UInt64
分别表示8位、16位、32位和64位无符号整数。以UInt32
为例:
uint32 data
- 用途:可用于计数、索引、状态编码等场景。比如,统计传感器采集的数据数量,或者表示设备的状态编码。
2.3 浮点类型
Float32
和Float64
:分别表示32位和64位浮点数。以Float32
为例:
float32 data
- 用途:常用于表示连续的物理量,像温度、速度、角度等。
2.4 字符串类型(String
)
用于表示文本信息。
string data
- 用途:可传递文本指令、日志信息、描述性信息等。例如,发送控制指令或者记录系统的运行日志。
- 示例代码(Python):
import rclpy
from rclpy.node import Node
from std_msgs.msg import Stringclass StringPublisher(Node):def __init__(self):super().__init__('string_publisher')self.publisher_ = self.create_publisher(String, 'string_topic', 10)timer_period = 1 # secondsself.timer = self.create_timer(timer_period, self.timer_callback)self.i = 0def timer_callback(self):msg = String()msg.data = 'Hello World: %d' % self.iself.publisher_.publish(msg)self.get_logger().info('Publishing: "%s"' % msg.data)self.i += 1def main(args=None):rclpy.init(args=args)string_publisher = StringPublisher()rclpy.spin(string_publisher)string_publisher.destroy_node()rclpy.shutdown()if __name__ == '__main__':main()
2.5 时间和持续时间类型
Time
:表示时间点,由秒和纳秒构成。
uint32 sec
uint32 nanosec
Duration
:表示时间间隔,同样由秒和纳秒构成。
int32 sec
uint32 nanosec
- 用途:在需要进行时间同步、时间戳记录或者计算时间间隔的场景中使用。例如,记录传感器数据的采集时间,或者计算两个事件之间的时间差。
2.6 头消息类型(Header
)
为其他消息提供元数据,包含序列号、时间戳和坐标系ID。
uint32 seq
builtin_interfaces/Time stamp
string frame_id
seq
:消息序列号,用于标识消息的顺序。stamp
:时间戳,记录消息的发布时间。frame_id
:坐标系ID,指示消息数据所在的坐标系。- 用途:在多传感器融合、坐标变换等场景中,确保数据的时间一致性和空间一致性。
2.7 空消息类型(Empty
)
不包含任何数据。
- 用途:通常用于触发某个动作或者事件,而不需要传递具体的数据。例如,触发一个系统的重置操作。
3. 消息使用的注意事项
3.1 数据类型匹配
在发布和订阅消息时,要保证消息类型一致,不然会引发运行时错误。
3.2 时间戳处理
对于包含时间戳的消息(如 Header
和 Time
),要正确设置和处理时间戳,以保证数据的时间一致性。
3.3 坐标系管理
使用 Header
中的 frame_id
时,要确保坐标系的定义和使用是正确的,避免坐标变换出错。
4. 消息的编译和使用流程
4.1 消息定义
在 .msg
文件里定义消息类型,例如 Bool.msg
:
bool data
4.2 消息编译
在 package.xml
中添加依赖:
<build_depend>rosidl_default_generators</build_depend>
<exec_depend>rosidl_default_runtime</exec_depend>
在 CMakeLists.txt
中配置消息编译:
find_package(ament_cmake REQUIRED)
find_package(rosidl_default_generators REQUIRED)rosidl_generate_interfaces(${PROJECT_NAME}"msg/Bool.msg"DEPENDENCIES builtin_interfaces
)ament_export_dependencies(rosidl_default_runtime)ament_package()
然后运行 colcon build
进行编译。
4.3 在代码中使用
在发布和订阅节点里引入相应的消息类型并使用。
5. 高级应用
5.1 消息嵌套
可以把 std_msgs
中的消息类型嵌套到自定义消息里,构建更复杂的消息结构。
5.2 消息序列化和反序列化
ROS 2会自动处理消息的序列化和反序列化,不过在某些特殊场景下,可能需要手动处理。
鉴于ROS2架构的项目中std_msgs/Header有至关重要的作用,所以下面对其进行详细介绍
在ROS 2(Robot Operating System 2)中,std_msgs/Header
消息类型同样扮演着至关重要的角色,它为其他消息提供了元数据信息,对于消息的时间同步、坐标系管理以及消息追踪等功能起着关键作用。
1. 消息定义与结构
std_msgs/Header
消息类型定义如下:
# 消息序列号
uint32 seq
# 时间戳
builtin_interfaces/Time stamp
# 坐标系ID
string frame_id
2. 各字段详细解释
2.1 序列号(seq
)
- 数据类型:
uint32
,即无符号32位整数。 - 作用:该字段用于唯一标识消息的发布顺序。每次发布消息时,序列号会依次递增。它的主要用途是帮助接收方判断消息是否有丢失或乱序情况。例如,在实时性要求较高的机器人控制系统中,接收节点可以通过检查
seq
的连续性来确保消息的完整性。 - 使用场景:在处理大量消息流时,通过
seq
可以快速定位和识别消息的顺序,有助于调试和错误排查。
2.2 时间戳(stamp
)
- 数据类型:
builtin_interfaces/Time
,它包含sec
(秒)和nanosec
(纳秒)两个子字段,用于精确表示时间点。 - 作用:记录消息发布的时间,在多传感器数据融合、运动规划和控制等场景中,时间戳是实现数据同步和时序分析的关键信息。例如,在融合激光雷达和摄像头数据时,需要根据时间戳将不同传感器的数据进行对齐。
- 使用场景:
- 数据同步:确保不同传感器或节点产生的数据在时间上的一致性。
- 历史数据分析:通过时间戳可以对消息进行排序和筛选,便于后续的分析和处理。
- 故障诊断:在排查问题时,时间戳可以帮助确定事件发生的先后顺序,辅助定位问题。
2.3 坐标系ID(frame_id
)
- 数据类型:
string
,即字符串类型。 - 作用:指定消息中数据所参考的坐标系。在机器人的运动控制和环境感知中,不同的传感器和执行器可能使用不同的坐标系,通过
frame_id
可以明确数据的空间参考,方便进行坐标变换和数据融合。例如,激光雷达数据可能是在base_link
(机器人基座坐标系)下采集的,而地图数据可能是在map
(全局地图坐标系)下定义的,通过frame_id
可以将它们统一到同一坐标系下进行处理。 - 使用场景:
- 坐标变换:结合ROS 2的TF(Transform)库,根据
frame_id
进行不同坐标系之间的转换。 - 可视化:在RViz等可视化工具中,根据
frame_id
正确显示数据的位置和姿态。 - 多机器人协作:在多机器人系统中,不同机器人可能使用不同的坐标系,
frame_id
有助于区分和协调各机器人的数据。
- 坐标变换:结合ROS 2的TF(Transform)库,根据
3. 代码示例
以下是一个使用Python和ROS 2的示例,展示如何创建和使用 Header
消息:
import rclpy
from rclpy.node import Node
from std_msgs.msg import Header
from builtin_interfaces.msg import Time
import timeclass HeaderPublisher(Node):def __init__(self):super().__init__('header_publisher')self.publisher_ = self.create_publisher(Header, 'header_topic', 10)timer_period = 1 # secondsself.timer = self.create_timer(timer_period, self.timer_callback)self.seq = 0def timer_callback(self):header = Header()header.seq = self.seqcurrent_time = self.get_clock().now().to_msg()header.stamp = current_timeheader.frame_id = 'base_link'self.publisher_.publish(header)self.get_logger().info(f'Publishing Header: seq={header.seq}, stamp={header.stamp}, frame_id={header.frame_id}')self.seq += 1def main(args=None):rclpy.init(args=args)header_publisher = HeaderPublisher()rclpy.spin(header_publisher)header_publisher.destroy_node()rclpy.shutdown()if __name__ == '__main__':main()
4. 使用注意事项
4.1 时间戳设置
在实际应用中,要确保 stamp
字段的时间准确,建议使用ROS 2提供的时钟接口(如 get_clock().now()
)来获取当前时间,避免手动设置可能导致的时间不一致问题。
4.2 坐标系命名规范
frame_id
应遵循ROS 2的命名约定,通常使用小写字母、数字和下划线,避免使用特殊字符。常见的坐标系名称包括 base_link
(机器人基座坐标系)、map
(全局地图坐标系)等。
4.3 序列号管理
seq
字段由发布节点负责维护和递增,接收节点可以通过比较序列号来检测消息丢失或乱序情况。
5. 应用场景
5.1 多传感器融合
在机器人同时配备激光雷达、摄像头、IMU等多种传感器的情况下,不同传感器采集的数据可能具有不同的时间戳和坐标系。通过 Header
消息,可以将这些数据在时间和空间上进行统一,从而实现更准确的环境感知和决策。
5.2 运动规划与控制
在机器人的运动规划和控制过程中,需要实时获取机器人的位置、姿态等信息。Header
消息中的时间戳和坐标系ID可以帮助控制系统准确地跟踪机器人的状态,确保运动的精确性和稳定性。
5.3 日志记录与调试
在开发和调试过程中,Header
消息可以作为重要的日志信息,记录消息的发布顺序、时间和坐标系等关键信息,有助于快速定位和解决问题。
综上所述,std_msgs/Header
消息类型在ROS 2中是一个基础且重要的组成部分,它为消息传递提供了必要的元数据,对于实现机器人系统的高效运行和数据处理起着不可或缺的作用。
倏忽温风至,因循小暑来。
竹喧先觉雨,山暗已闻雷。 —元稹
相关文章:
ROS2---std_msgs基础消息包
std_msgs 是ROS 2(Robot Operating System 2)里的基础消息包,它定义了一系列简单却常用的消息类型,为不同节点间的通信提供了基础的数据格式。 1. 消息包概述 std_msgs 包包含了多种基础消息类型,这些类型用于表示常…...
python基础:数据类型转换、运算符(算术运算符、比较运算符、逻辑运算符、三元运算符、位运算符)
目录 一、类型转换 隐式类型转换/自动转换: 显示类型转换/强制转换: 二、运算符 算数运算符: - * / 比较运算符 逻辑/布尔运算符 赋值运算符: 三元运算符 位运算符 [二进制] 运算符优先级 一、类型转换 python变量的类…...
[特殊字符] 终端效率提升指南:zsh + tmux
在日常开发中,一个舒适、高效的终端环境能显著提升工作效率。本文将介绍如何通过配置 oh-my-zsh 和 tmux 打造一个功能强大、便捷实用的终端工具集。无论你是 Linux 新手,还是资深开发者,都能从中获得实用的提升技巧。 🌀 一、终…...
【Linux篇】深入理解文件系统:从基础概念到 ext2 文件系统的应用与解析
文件系统的魔法:让计算机理解并存储你的数据 一. 文件系统1.1 块1.2 分区1.3 inode(索引节点) 二. ext2文件系统2.1 认识文件系统2.2 Block Group (块组)2.2.1 Block Group 的基本概念2.2.2 Block Group 的作用 2.3 块组内部结构2.3.1 超级块(Super Bloc…...
MarkDown 输出表格的方法
MarkDown用来输出表格很简单,比Word手搓表格简单多了,而且方便修改。 MarkDown代码: |A|B|C|D| |:-|-:|:-:|-| |1|b|c|d| |2|b|c|d| |3|b|c|d| |4|b|c|d| |5|b|c|d|显示效果: ABCD1bcd2bcd3bcd4bcd5bcd A列强制左对齐…...
DOM解析XML:Java程序员的“乐高积木式“数据搭建
各位代码建筑师们!今天我们要玩一个把XML变成内存乐高城堡的游戏——DOM解析!和SAX那种"边看监控边破案"的刺激不同,DOM就像把整个乐高说明书一次性倒进大脑,然后慢慢拼装(内存:你不要过来啊&…...
Python 数组里找出子超集
碰见一个问题,有一个大数组,如下所示: xx [[1, 3, 4], [3, 4, 5], [1, 2, 3, 4, 5], [6], [7, 8], [6, 7, 8]]大数组里面有好多小的数组,观察发现,小的数组其实有挺多别的小数组的子集,现在问题来了&…...
上层 Makefile 控制下层 Makefile ---- 第二部分(补充一些例子与细节)
1. 递归调用子目录 Makefile 通过 $(MAKE) -C 进入子目录并执行其 Makefile,这是最常见的分层构建方法。 示例:基本递归调用 目录结构: project/ ├── Makefile # 顶层 Makefile ├── lib/ │ ├── Makefile # 子目录…...
LeetCode算法题(Go语言实现)_44
题目 有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。 省份是一组直接或间接相连的城市,组内不含其他没有相连的城市。 给你…...
STM32 HAL库之USART示例代码
串口发送和接收以及回调函数都可在这个文件中查询:stm32f1xx_hal_uart.h 串口配置初始化代码main.c中:MX_USART1_UART_Init();,初始化 UART 高层参数(波特率、数据位、停止位、校验、模式等) void MX_USART1_UART_In…...
头歌educoder——数据库 第10-11章
第10章 1、 事务的( )特性要求事务必须被视为一个不可分割的最小工作单元 A、 原子性 B、 一致性 C、 隔离性 D、 持久性 2、 事务的( )特性要求一个事务在执行时,不会受到其他事务的影响。 A、 原子性 B、 一致性 C…...
从 Vue 到 React:深入理解 useState 的异步更新与函数式写法
目录 从 Vue 到 React:深入理解 useState 的异步更新与函数式写法1. Vue 的响应式回顾:每次赋值立即生效2. React 的状态更新是异步且批量的原因解析 3. 函数式更新:唯一的正确写法4. 对比 Vue vs React 状态更新5. React useState 的核心源码…...
如何实现元素随滚动平滑上升
#技术栈Vue3TypeScript# 相比大家没少见过这个的效果: 作为视觉效果是很不错的 同时实现也很简单,本质是封装一个Vue指令 1,创建指令文件 src / directives / vSlidenIn.ts import type { Directive } from vueconst vSlideIn: Directive …...
Nginx部署spa单页面的小bug
没部署过,都是给后端干的,自己尝试部署了一个下午终于成功了 我遇到的最大的bug是进入后只有首页正常显示 其他页面全是404,于是问问问才知道,需要这个 location / { try_files $uri $uri/ /index.html; } 让…...
关于全球化大规模混合云 Kubernetes Prometheus 监控体系标准化及 GitOps 自动化改进方案
背景 现状 某司概况: PaaS/SaaS 公司,业务面向全球,包括 东南亚/南亚/中东/欧洲/非洲/美洲/东亚…生产 k8s 集群数十套,生产非生产 >100 套(多种集群类型,各种公有云/专有云/私有云/数据中心…)疫情以来ÿ…...
力扣DAY51 | 热100 | 岛屿数量
前言 中等 √ 做得我元气大伤,超级naive方法,新开辟一个数组存岛屿编号,一个数组存岛屿上的点。 题目 给你一个由 1(陆地)和 0(水)组成的的二维网格,请你计算网格中岛屿的数量。 …...
二叉树的最近公共祖先二叉搜索树的最近公共祖先
1 二叉树的最近公共祖先 学习: 代码 class Solution:def lowestCommonAncestor(self, root: TreeNode, p: TreeNode, q: TreeNode) -> TreeNode:if root is None or root is p or root is q:return rootleft self.lowestCommonAncestor(root.left,p,q)right …...
关于 LLB 的问题
This error occurs when you’re trying to run a program or library that was compiled with GLIBC (GNU C Library) version 2.29, but your system has an older version of GLIBC installed. Solutions: 1. Upgrade your system’s GLIBC (Recommended if possible) Fo…...
kafka4.0浅尝辄止
最近工作中接触消息队列比较多,前几周又看到kafka4.0发布,故写一篇博客对消息队列做一个复盘。 目录 消息队列对比1. Apache Kafka 4.02. RabbitMQ3. RocketMQ4. ActiveMQ5. Apache Pulsar6. NSQ kafka4.0鲜明的新特性Java 版本要求升级API 更新与精简移…...
nmcli创建wpa-psk2 wifi热点
1. 创建新的WiFi连接: sudo nmcli connection add type wifi ifname wlan0 con-name WiFi名称 autoconnect yes ssid WiFi名称 2. 配置接入点模式和IP共享: sudo nmcli connection modify WiFi名称 802-11-wireless.mode ap 802-11-wireless.band …...
分布式日志治理:Log4j2自定义Appender写日志到RocketMQ
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
【STM32单片机】#8 定时器编码器接口ADC模数转换器
主要参考学习资料: B站江协科技 STM32入门教程-2023版 细致讲解 中文字幕 开发资料下载链接:https://pan.baidu.com/s/1h_UjuQKDX9IpP-U1Effbsw?pwddspb 单片机套装:STM32F103C8T6开发板单片机C6T6核心板 实验板最小系统板套件科协 实验&…...
dify部署,ollama部署,拉取模型,创建ai聊天应用
dify下载安装 dify1.0.1 windos安装包百度云盘地址 通过网盘分享的文件:dify-1.0.1.zip 链接: 百度网盘 请输入提取码 提取码: 1234 dify安装包 linux安装包百度云盘地址 通过网盘分享的文件:dify-1.0.1.tar.gz 链接: 百度网盘 请输入提取码 提取码…...
213、【图论】有向图的完全联通(Python)
题目描述 原题链接:105. 有向图的完全联通 代码实现 import collectionsn, k list(map(int, input().split())) adjacency collections.defaultdict(list) for _ in range(k):head, tail list(map(int, input().split()))adjacency[head].append(tail)visited_…...
Node.js中util模块详解
Node.js 中 util 模块全部 API 详解 一、类型检查函数 const util require(util);// 1. util.types // 检查对象类型 console.log(util.types.isDate(new Date())); // true console.log(util.types.isRegExp(/abc/)); // true console.log(util.types.isArrayBuffer(new …...
BasicTS:全面基准测试与异质性分析
BasicTS:全面基准测试与异质性分析 在当今数字化时代,多元时间序列(Multivariate Time Series, MTS)分析在众多领域发挥着关键作用,从交通管理到能源系统优化,都离不开对MTS的精准预测。然而,当…...
认识python全栈框架reflex:快速打造工具类网站、模型调用web应用
以下是对reflex的简单介绍: 纯Python编写的,高性能、可自定义的 Web 应用开发框架 网页开发内置组件生态完整,灵活使用、快速接入、快速部署支持路由页面,可以开发复杂系统、企业级系统,这方面优于gradio、streamlit…...
课题申报的立项依据方位指南:使用DeepSeek提高课题立项的关键
在竞争日益激烈的学术研究和科研项目申报环境中,立项依据作为课题申报书的灵魂部分,往往决定着一项研究能否获得评审专家的青睐和资助。 然而,许多研究者尽管学术能力突出,却在立项依据的撰写上显得力不从心,导致优质…...
蓝桥杯电子赛_E2PROM(AT24C02)
目录 一 前言 二 E2PROM的相关讲解 AT24C02的地址 PCF8591的地址 三 根据提供的iic写代码 相关可能会有疑问的地方: 1 三个入口参数,都有什么用? 2 为什么在写中,要用IIC_SendByte,在读中,要用IIC_R…...
Kubernetes服务注册到consul流程实践
文章目录 前言架构图示意一、环境准备二、consul部署1.yaml示例2.consul部署验证 三、consulctl工具实现1.核心功能2.注册到consul的标签及元数据3.consulctl工具使用示例 四、通过Dockerfile构建consulctl工具镜像五、Kubernetes集成方案六、 结果验证1.注册验证2.销毁验证 总…...
供应链业务-供应链全局观(三)- 供应链三流的集成
概述 供应链的全局观的全两篇文章主要描述了供应链的基础概念和供应链的协作和集成问题。 供应链业务-供应链全局观(一)定义了什么是供应链和供应链管理。 所谓供应链就是把采购进来的东西,通过自身的生成加工,进行增值服务&am…...
Docker 提示Docker Engine stopped
做AI开发的时候,安装Docker提示Docker Engine stopped,以下是解决步骤: 一般都是成功的,不成功很可能是电脑兼容问题,通过采用4.4.4版本解决的: docker desktop 4.4.4 旧版本下载:在这里找到了4…...
对自己的优缺点评价
在面试中回答优缺点时,需要既体现自我认知的客观性,又能将优缺点与岗位需求结合,避免暴露可能影响工作的硬伤。以下是一个符合Java开发者角色的回答框架,供参考: 回答思路: 优点:选择与岗位直接…...
解决eNSP在24H2版本下AR_40启动失败问题
前言 1.网络学习中缺少不了模拟,自从Windows版本更新24H2以后,eNSP就出现各种问题,最常见的就是AR报错40【启动失败】,之前我也去网站搜了,也问了Microsoft社区,发现他们在底层逻辑上进行了修改(开启了虚拟…...
计算机组成原理-指令系统
1. 指令系统的定义与作用 指令系统(Instruction Set Architecture, ISA)是计算机硬件与软件之间的接口规范,定义了CPU能够识别和执行的所有指令的集合,是计算机体系结构的核心组成部分。 核心作用: 为程序员提供操作…...
Oracle数据库中 LEVEL start with prior connect by
在Oracle数据库中,处理层次结构数据是一项常见且重要的任务。无论是组织结构、分类目录还是其他具有层级关系的数据,Oracle都提供了强大的工具来简化和优化这些操作。其中,LEVEL伪列结合CONNECT BY和START WITH关键字,成为了处理层…...
HTTP 1.1 比 HTTP1.0 多了什么?(详尽版)
相较于HTTP 1.0,1.1 版本增加了以上特性: 1. 新增了连接管理即 keepalive,允许持久连接。 定义: Keepalive允许客户端和服务器在完成一次请求-响应后,保持连接处于打开状态,以便后续请求复用同一连接&am…...
Java学习手册:Java I/O与NIO
Java I/O(Input/Output)和NIO(New Input/Output)是Java语言中用于处理输入输出操作的重要部分。它们提供了丰富的API来处理文件和网络通信。I/O是Java早期版本中引入的,而NIO是在Java 1.4中引入的,旨在提供…...
linux下的目录文件管理和基本文件管理的基本操作
目录 1.目录创建,文件创建和文件编辑的案例 2.文件编辑进阶 --vim 3. 命令的别名 4. 查看文件内容和文件编辑(重定向)的案例 5. 重定向之追加 6. 查看目录和文件编辑的案例 7. 查看目录和文件编辑(覆盖)的案例 为了加深对linux命令的熟悉程度,这…...
magnet库Hello,world!
1.c文件 #include<iostream> #include"Control.hpp" class O1:public mag::Control{bool b; public:O1(){b1;}bool decide(){return b&&islifing();}void action(){std::cout<<"Hello,world!\n";b0;destroy();} }; int main(){O1 o1;…...
应急响应靶机-Linux(1)
挑战内容 账户密码:defend/defend Root/defend 黑客的IP地址遗留下的三个flag 1、按正常思路来走,先登录一手因已经给出root账户密码,先查看一手执行过的命令,发现一个flag值并且看到他往期编辑了一个文件,咱们顺便进去…...
k8s 部署spring项目+动态启动pod
在 Kubernetes 中部署 Spring Boot 项目并实现 动态管理 Pod(自动扩缩容、滚动更新等),需要结合 Docker 镜像构建、Deployment 配置、Service 暴露和 HPA(Horizontal Pod Autoscaler) 等组件。以下是完整操作步骤&…...
【DINO】
detr 简化了检测流水线,消除了许多手工设置的组件 单阶段目标检测 需要前置的backbone抽取特征 faster_rcnn和yolo都是基于anchor,anchor当作候选框,NMS非极大值抑制 重叠的框只保存一个,效率低 所以detr来了,transformer,既有encoder又有decoder,套一个transforme…...
Nature重磅:后晶体管时代光子芯片革新AI计算!光子处理器运行《吃豆人》性能比肩电子,能效提升超500倍
随着人工智能(AI)模型规模以及应用范围的不断拓展,性能上限和能耗瓶颈正逐渐显现出来。大语言模型(LLM)、强化学习和卷积神经网络等 AI 模型的复杂性不断增长,正在将传统电子计算推向极限,能源需…...
Excel表格文件分组归并——通过sql
将 Excel 表转换为 SQL 数据库并直接执行 SQL 查询以获得所需的输出。以下是使用 SQL 实现此目的的步骤: 第 1 步:将 Excel 数据导入 MySQL 假设您设置了 MySQL 数据库,则需要先将 Excel 数据导入到表中。您可以使用语句或工具(…...
2.微服务拆分流程
文章目录 交易服务1.1.创建项目1.2.引入依赖1.3.创建交易服务启动类1.4.创建并编写配置文件1.5.代码连接池4.2.1.引入依赖4.2.2.开启连接池抽取Feign客户端 1.6.抽取ItemClient接口1.7.抽取CartClient接口改造OrderServiceImpl扫描包 1.8.数据库1.9.配置启动项1.10.测试 以拆分…...
vue入门:计算属性computer监听器watch
文章目录 计算属性computer定义计算属性在模板中使用计算属性计算属性的使用场景 监听器watch基本语法深度监听立即执行监听数组异步操作数据校验副作用处理清理监听器 watch 与 computed 的区别 计算属性computer 在 Vue 中,计算属性(computed…...
Jenkins 发送钉钉消息
这里不介绍 Jenkins 的安装,可以网上找到很多安装教程,重点介绍如何集成钉钉消息。 需要提前准备钉钉机器人的 webhook 地址。(网上找下,很多教程) 下面开始配置钉钉机器人,登录 Jenkins,下载 …...
numpy练习
生成一个2行3列随机整数二维数组a使用Numpy方法对(1)中数组a进行整体求积使用Numpy方法对(1)中数组a进行求每列最大值索引定义一个NumPy一维数组 b,元素为 1 到 10 的整数获取(4)数组b中最后五个…...
Ethers.js 开发入门:核心功能、最佳实践与避坑指南
引言 Ethers.js 是当前 Web3 开发领域增长最快、备受开发者青睐的以太坊 JavaScript 库之一。在本篇文章中,我们将介绍 Ethers.js 的核心功能和用法,包括如何连接区块链节点、与钱包交互、读取智能合约数据、发送交易等。同时,我们还将分享使…...