ros2学习笔记-CLI工具,记录命令对应操作。
目录
- 环境变量
- turtlesim和rqt
- 以初始状态打开rqt
- node
- 启动节点
- 查看节点列表
- 查看节点更多信息
- 命令行参数 --ros-args
- topic
- 话题列表
- 话题类型
- 话题列表,附加话题类型
- 根据类型查找话题名
- 查看话题发布的数据
- 查看话题的详细信息
- 查看类型的详细信息
- 给话题发布消息(在命令行)
- 带有时间戳的消息
- 查看话题发布的频率Hz
- service
- 服务列表
- 服务类型
- 服务列表,附加服务类型
- 根据类型查找服务名
- 服务类型结构
- 调用服务
- parameters
- 参数列表
- 获取参数值
- 设置参数值
- 获取节点所有参数
- 为节点加载参数
- 启动时指定节点参数
- action
- 通信方式
- 动作列表
- 动作列表,附加类型
- 动作更多信息
- 动作类型结构
- 发送动作目标
- 发送动作目标,要求有稳定的反馈
- topic,service,action的区别
- 使用 rqt_console 查看特定日志消息
- 启动
- 过滤某些级别的消息
- 启动节点(Launching nodes)
- 记录和播放数据
- 记录单个topic
- 记录多个topic
- 查看记录信息
- 记录回放
环境变量
启动前要检查环境变量:ROS_DOMAIN_ID
和 ROS_LOCALHOST_ONLY
。如果通信时PIN不同,应该首先考虑是不是环境变量设置错误。 Configuring environment
记得source一下ros2。
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
turtlesim和rqt
Turtlesim 是一款用于学习 ROS2 的轻量级模拟器。 它说明了 ROS 2 在最基本的层面上做了什么,让您了解以后将如何处理真实机器人或机器人模拟。
ros2 工具是用户管理、内省和与 ROS 系统交互的方式。 它支持针对系统及其操作的不同方面的多个命令。 人们可能会使用它来启动节点、设置参数、收听话题等等。 ros2工具是核心 ROS2 安装的一部分。
rqt 是 ROS2 的图形用户界面 (GUI)工具。 在 rqt 中完成的所有操作都可以在命令行上完成,但 rqt 提供了一种更用户友好的方式来操作 ROS2 元素。
以初始状态打开rqt
rqt每次启动都会以上次关闭时的状态打开,如果rqt界面出现了什么异常卡顿(比如某个页面无法点击,或者无法滑动),可以通过下面命令像第一次打开rqt一样。
rqt --clear-config
node
启动节点
ros2 run <package_name> <executable_name>
查看节点列表
ros2 node list
查看节点更多信息
可以看到节点的话题信息(subscribers and publishers),服务信息(services), 动作信息(action servers and action clients)。
ros2 node info <node_name> "一般是/node_name"
命令行参数 --ros-args
ROS的命令行参数
--remap
ros2 run some_package some_ros_executable --ros-args --remap foo:=bar
ros2 run some_package some_ros_executable --ros-args -r foo:=bar
ros2 run some_package some_ros_executable --ros-args -r some_node:foo:=bar--param
ros2 run some_package some_ros_executable --ros-args --param string_param:=test
ros2 run some_package some_ros_executable --ros-args -p string_param:=test
ros2 run some_package some_ros_executable --ros-args -p some_node:string_param:=test--params-file
ros2 run some_package some_ros_executable --ros-args --params-file params_file.yaml
<params_file.yaml>
node0_name:ros__parameters:param0_name: param0_value...paramN_name: paramN_value
...
nodeM_name:ros__parameters:...
* 匹配由斜线划分的单个令牌。** 匹配由斜线划分的零或更多令牌。不允许部分匹配(例如foo*)。
例如:
/**:ros__parameters:string_param: foo
将在所有节点上设置参数string_param./**/some_node:ros__parameters:string_param: foo
将在任何名称空间中的some_node上设置parameter string_param./foo/*:ros__parameters:string_param: foo
将在名称空间 /foo下的任何节点上设置参数string_param(例如只匹配到foo/foo1 而不会匹配到foo/foo1/foo11).
topic
话题可以理解为是ROS中节点交换消息的总线。
在图中查看节点和话题之间的结构:
rqt_graph
圆的是节点,方的是话题。
话题列表
ros2 topic list
话题类型
ros2 topic type <topic_name>
话题列表,附加话题类型
类型其实就是消息结构(消息属于哪个类)。
ros2 topic list -t
根据类型查找话题名
ros2 topic find <type_name>
查看话题发布的数据
ros2 topic echo <topic_name>
注意:数据只有在发布时终端才可以看到。
此命令会发布一个新话题,话题名字类似于/_ros2cli_26646
,在rqt_graph中取消选中Debug即可看见。
查看话题的详细信息
可以查看话题的消息类型,以及其被多少个节点发布消息和被多少个节点订阅。
ros2 topic info <topic_name>
查看类型的详细信息
这里的类型不只是话题的类型可以被查看,其他类型也可以使用此方法看到具体的结构信息。
ros2 interface show <msg type>
查看所有类型的列表
ros2 interface list
以ros2 interface show geometry_msgs/msg/Twist
为例,显示的类型如下:
# This expresses velocity in free space broken into its linear and angular parts.
Vector3 linearfloat64 xfloat64 yfloat64 z
Vector3 angularfloat64 xfloat64 yfloat64 z
其中,linear
和angular
可以理解为一个变量,Vector3
是变量的类型,x,y,z
是linear/angular
的成员,也是变量。
给话题发布消息(在命令行)
'<args>'
参数需要以yaml语法作为输入。
ros2 topic pub <topic_name> <msg_type> '<args>'
'<args>'
使用单引号和双引号是等价的,都可以使用。
例如:ros2 topic pub --once /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
(格式和echo显示的结果是一样的)
--once
是一个可选的参数,意为“发布一条消息然后退出”。--rate 1
:以1Hz的频率持续发布消息(为默认参数设置)。- <args>是yaml格式的,每一个冒号后面的空格都不可以省略。
在rqt-graph中显示如下:
带有时间戳的消息
如果消息的header为完整的标题类型std_msgs/msg/Header
(有没有可以通过interface show 查看),设置为auto
会自动填充为当前时间。
ros2 topic pub /pose geometry_msgs/msg/PoseStamped '{header: "auto", pose: {position: {x: 1.0, y: 2.0, z: 3.0}}}'
如果消息中的类型为builtin_interfaces/msg/Time
,可以设置now
ros2 topic pub /reference sensor_msgs/msg/TimeReference '{header: "auto", time_ref: "now", source: "dumy"}'
sensor_msgs/msg/TimeReference
结构如下:
查看话题发布的频率Hz
ros2 topic hz <topic_name>
service
服务是节点的另一种通信方法,基于呼叫和响应(call-and-response)模型,话题是publisher-subscriber模型。服务只有在客户端专门调用时才提供数据。
服务列表
ros2 service list
服务类型
服务类型的定义与话题类型类似,但是服务类型有两个部分:一条是请求的消息,另一条是响应的消息。
ros2 service type <service_name>
服务列表,附加服务类型
ros2 service list -t
根据类型查找服务名
ros2 service find <type_name>
服务类型结构
查看方法:
ros2 interface show <type_name>
结构:
request structure
---
response structure
---
是request structure 和 response structure 的分隔符。
调用服务
ros2 service call <service_name> <service_type> <arguments>
例如:ros2 service call /spawn turtlesim/srv/Spawn "{x: 2, y: 2, theta: 0.2, name: ''}"
会返回:
requester: making request: turtlesim.srv.Spawn_Request(x=2.0, y=2.0, theta=0.2, name='')response:
turtlesim.srv.Spawn_Response(name='turtle2')
parameters
参数是节点(node)的配置值,每个节点都维护自己的参数,也有共享参数(和C++很像,有私有成员,也有静态成员)。
参数列表
ros2 param list
获取参数值
ros2 param get <node_name> <parameter_name>
设置参数值
ros2 param set <node_name> <parameter_name> <value>
获取节点所有参数
ros2 param dump <node_name>
如果想将参数存入到文件中,可以使用linux中的>
运算符:
ros2 param dump /turtlesim > turtlesim.yaml
导出为yaml结构,以后使用时可以直接导入。
为节点加载参数
ros2 param load <node_name> <parameter_file>
例如:ros2 param load /turtlesim turtlesim.yaml
需要注意的是只读的参数只能在启动时进行修改,所以那些参数将不会被修改。
启动时指定节点参数
ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>
例如:ros2 run turtlesim turtlesim_node --ros-args --params-file turtlesim.yaml
这将使得所有参数根据给定的文件更新,具体细节见ROS的命令行参数。
action
action基于topic和service。它的功能类似于service。但是action的特点是:动作不仅可以被取消,还提供了稳定的反馈(service只能返回一个单独的回复response)。
action由三个部分组成:目标,反馈和结果。
操作使用client-server模型,类似于Publisher-Subscriber模型。 “action client”节点将目标发送到“action server”节点,该节点确认目标并返回反馈和结果。
当调用:
ros2 run turtlesim turtle_teleop_key
终端会显示:
Reading from keyboard
---------------------------
Use arrow keys to move the turtle.
Use G|B|V|C|D|E|R|T keys to rotate to absolute orientations. 'F' to cancel a rotation.'Q' to quit.
Use arrow keys to move the turtle.对应topic,
Use G|B|V|C|D|E|R|T keys to rotate to absolute orientations. ‘F’ to cancel a rotation. ‘Q’ to quit.对应action。
每次按下这些按键时,都会将目标发送到/turtlesim节点的action服务器上。一旦乌龟旋转完成,乌龟节点会返回一个信息,比如:[INFO] [turtlesim]: Rotation goal completed successfully
,实际上不同的动作对应不同的反馈信息和结果。
对于动作而言,client可以取消目标(按下F
),server也可以取消目标(连续按下D G
,server会自动放弃第一个目标,但不是所有的server都是这样处理)。
通信方式
执行ros2 node info /turtlesim
可以看到最下方关于action的信息:
Action Servers:/turtle1/rotate_absolute: turtlesim/action/RotateAbsoluteAction Clients:
这说明/turtlesim
节点会接受/turtle1/rotate_absolute
提供的目标并且给它提供反馈。
执行ros2 node info /teleop_turtle
可以看到最下方关于action的信息:
Action Servers:Action Clients:/turtle1/rotate_absolute: turtlesim/action/RotateAbsolute
这说明/teleop_turtle
节点会发送目标给/turtle1/rotate_absolute
。
动作列表
ros2 action list
动作列表,附加类型
ros2 action list -t
动作更多信息
会返回动作的客户端和服务端节点。
ros2 action info /turtle1/rotate_absolute
动作类型结构
以turtlesim/action/RotateAbsolute
类型为例:
ros2 interface show turtlesim/action/RotateAbsolute
返回:
# The desired heading in radians
float32 theta
---
# The angular displacement in radians to the starting position
float32 delta
---
# The remaining rotation in radians
float32 remaining
分成了三部分,其中---
是分隔符,第一部分是目标,第二部分是结果,第三部分是反馈信息。
发送动作目标
ros2 action send_goal <action_name> <action_type> '<values>'
<values>需要采用YAML格式。
例如:ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute "{theta: 1.57}"
发送动作目标,要求有稳定的反馈
ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute "{theta: -1.57}" --feedback
会返回:
Sending goal:theta: -1.57Goal accepted with ID: e6092c831f994afda92f0086f220da27Feedback:remaining: -3.1268222332000732Feedback:remaining: -3.1108222007751465…Result:delta: 3.1200008392333984Goal finished with status: SUCCEEDED
其中Feedback会持续提供反馈信息,直到目标达到。
topic,service,action的区别
通信机制 | 描述 | 使用场景 |
---|---|---|
Topic | 一种异步消息队列,分为publisher(发送信息)和subscriber(接受消息) | 处理连续数据流,多对多的形式 |
Service | 一种同步请求/响应交互模式(发送一次,反馈/响应一次) | 一部分定义请求部分,一部分定义回应部分 |
Action | 一种异步请求/响应交互模式,带有反馈机制(发送一个目标,执行过程中连续反馈,直到达到目标) | 需要反馈/状态跟踪,需要花费大量时间,可以被中断 |
使用 rqt_console 查看特定日志消息
启动
ros2 run rqt_console rqt_console
过滤某些级别的消息
只查看级别大于等于WARN的日志消息。
ros2 run turtlesim turtlesim_node --ros-args --log-level WARN #大小写都可以
ROS2的日志级别按严重性排序:
Fatal
Error
Warn
Info
Debug
默认级别是Info
,因此看不到级别为Debug
的消息。
如果设置显示的消息级别是Warn
,那么Info
和Debug
级别的消息都会被显示。
启动节点(Launching nodes)
使用命令行工具一次启动多个节点。
ros2 launch turtlesim multisim.launch.py
这会启动两个turtlesim node,使用ros2 topic list
可以看到两个node分别为turtlesim1
和turtlesim2
:
/parameter_events
/rosout
/turtlesim1/turtle1/cmd_vel
/turtlesim1/turtle1/color_sensor
/turtlesim1/turtle1/pose
/turtlesim2/turtle1/cmd_vel
/turtlesim2/turtle1/color_sensor
/turtlesim2/turtle1/pose
因此我们可以开两个终端来分别控制两个节点:
ros2 topic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
ros2 topic pub /turtlesim2/turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: -1.8}}"
注意:
也可以使用XML和YAML来创建启动文件。 具体细节可以查看Using Python, XML, and YAML for ROS 2 Launch Files
对于launch的更多信息可以查看ROS2 launch tutorials
记录和播放数据
记录有关topic
的数据,因此可以随时重播和检查。
记录单个topic
ros2 bag record <topic_name>
例如:ros2 bag record /turtle1/cmd_vel
这会根据时间戳来创建bag文件的名称,想要指定文件名称可以用-o
来指定。
记录多个topic
记录多个topic时直接输入多个topic名称,用空格隔开。
ros2 bag record -o subset <topic1_name> <topic2_name>
-o
选项允许为bag文件选择一个唯一的名称。这里的subset
就是要创建的文件目录名称。
例如:ros2 bag record -o subset /turtle1/cmd_vel /turtle1/pose
查看记录信息
ros2 bag info <bag_file_name>
例如:ros2 bag info subset
记录回放
ros2 bag play <bag_file_name>
有关ros bag
更详细的信息在这里找到:https://github.com/ros2/rosbag2。
相关文章:

ros2学习笔记-CLI工具,记录命令对应操作。
目录 环境变量turtlesim和rqt以初始状态打开rqt node启动节点查看节点列表查看节点更多信息命令行参数 --ros-args topic话题列表话题类型话题列表,附加话题类型根据类型查找话题名查看话题发布的数据查看话题的详细信息查看类型的详细信息给话题发布消息࿰…...
自然语言处理的发展
自然语言处理的发展大致经历了四个阶段:萌芽期、快速发展期、低谷的发展期和复苏融合期。 萌芽期(1956年以前):这个阶段可以看作自然语言处理的基础研究阶段。人类文明经过了几千年的发展,积累了大量的数学、语言学和…...

flink operator 拉取阿里云私有镜像(其他私有类似)
创建 k8s secret kubectl --namespace flink create secret docker-registry aliyun-docker-registry --docker-serverregistry.cn-shenzhen.aliyuncs.com --docker-usernameops_acr1060896234 --docker-passwordpasswd --docker-emailDOCKER_EMAIL注意命名空间指定你使用的 我…...

C语言算法赛——蓝桥杯(省赛试题)
一、十四届C/C程序设计C组试题 十四届程序C组试题A#include <stdio.h> int main() {long long sum 0;int n 20230408;int i 0;// 累加从1到n的所有整数for (i 1; i < n; i){sum i;}// 输出结果printf("%lld\n", sum);return 0; }//十四届程序C组试题B…...

【文本到上下文 #2】:NLP 的数据预处理步骤
一、说明 欢迎阅读此文,NLP 爱好者!当我们继续探索自然语言处理 (NLP) 的广阔前景时,我们已经在最初的博客中探讨了它的历史、应用和挑战。今天,我们更深入地探讨 NLP 的核心——数据预处理的复杂世界。 这篇文章是我们的“完整 N…...

Minio文件分片上传实现
资源准备 MacM1Pro 安装Parallels19.1.0请参考 https://blog.csdn.net/qq_41594280/article/details/135420241 MacM1Pro Parallels安装CentOS7.9请参考 https://blog.csdn.net/qq_41594280/article/details/135420461 部署Minio和整合SpringBoot请参考 https://blog.csdn.net/…...

C语言总结十一:自定义类型:结构体、枚举、联合(共用体)
本篇博客详细介绍C语言最后的三种自定义类型,它们分别有着各自的特点和应用场景,重点在于理解这三种自定义类型的声明方式和使用,以及各自的特点,最后重点掌握该章节常考的考点,如:结构体内存对齐问题&…...
解决Spring Boot应用打包后文件访问问题
在Spring Boot项目的开发过程中,一个常见的挑战是如何有效地访问和操作资源文件。这一挑战尤其显著当应用从IDE环境(如IntelliJ IDEA)迁移到被打包成JAR文件后的生产环境。开发者经常遇到的问题是,在IDE中运行正常的代码ÿ…...

循环神经网络的变体模型-LSTM、GRU
一.LSTM(长短时记忆网络) 1.1基本介绍 长短时记忆网络(Long Short-Term Memory,LSTM)是一种深度学习模型,属于循环神经网络(Recurrent Neural Network,RNN)的一种变体。…...

视频图像的color range简介
介绍 研究FFmpeg发现,在avcodec.h中有关于color的解释,主要有四个属性,primaries、transfer、space和range。 color primaries: 基于RGB空间对应的绝对颜色XYZ的变换,决定了最终三原色RGB分别是什么颜色;…...
tcp的三次握手
http 和 https 都是是基于 TCP 的请求,https 是 http 加上 tls 连接。TCP 是面向连接的协议。 对于 http1.1 协议chrome 限制在同一个域名下最多可以建立 6 个 tcp 连接,所以如果在同一个域名下,同时有超过 6 个请求发生,那么多余…...
unity 矩阵探究
public void MatrixTest1(){ ///Matrix4x4 是列矩阵,就是一个vector4表示一列,所以在c#中矩阵和Vector4只能矩阵右乘坐标。但是在shader中是矩阵左乘坐标,所以在shader中是行矩阵 Matrix4x4 moveMatrix1 new Matrix4x4(new Vector4(1,0,0,0)…...

MySQL---单表查询综合练习
创建emp表 CREATE TABLE emp( empno INT(4) NOT NULL COMMENT 员工编号, ename VARCHAR(10) COMMENT 员工名字, job VARCHAR(10) COMMENT 职位, mgr INT(4) COMMENT 上司, hiredate DATE COMMENT 入职时间, sal INT(7) COMMENT 基本工资, comm INT(7) COMMENT 补贴, deptno INT…...

Python项目——搞怪小程序(PySide6+Pyinstaller)
1、介绍 使用python编写一个小程序,回答你是猪吗。 点击“是”提交,弹窗并退出。 点击“不是”提交,等待5秒,重新选择。 并且隐藏了关闭按钮。 2、实现 新建一个项目。 2.1、设计UI 使用Qt designer设计一个UI界面,…...

MySQL练习题
参考:https://blog.csdn.net/paul0127/article/details/82529216 数据表介绍 --1.学生表 Student(SId,Sname,Sage,Ssex) --SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表 Course(CId,Cname,TId) --CId 课程编号,Cname 课程名称,TId 教师编号…...
vue-项目打包、配置路由懒加载
1. 简介 在现代前端开发中,Vue.js因其简洁、灵活和高效的特点,已经成为许多开发者的首选框架。 在Vue项目中,打包部署和路由懒加载是两个非常重要的环节。 打包Vue项目是为了将源代码转换为浏览器可以解析的JavaScript文件,以便…...

词语的魔力:语言在我们生活中的艺术与影响
Words That Move Mountains: The Art and Impact of Language in Our Lives 词语的魔力:语言在我们生活中的艺术与影响 Hello there, wonderful people! Today, I’d like to gab about the magical essence of language that’s more than just a chatty tool in o…...
android List,Set,Map区别和介绍
List 元素存放有序,元素可重复 1.LinkedList 链表,插入删除,非线性安全,插入和删除操作是双向链表操作,增加删除快,查找慢 add(E e)//添加元素 addFirst(E e)//向集合头部添加元素 addList(E e)//向集合…...

Mysql 编译安装部署
Mysql 编译安装部署 环境: 172.20.26.198(Centos7.6) 源码安装Mysql-5.7 大概步骤如下: 1、上传mysql-5.7.28.tar.gz 、boost_1_59_0.tar 到/usr/src 目录下 2、安装依赖 3、cmake 4、make && make install 5、…...

【目标检测】YOLOv5算法实现(九):模型预测
本系列文章记录本人硕士阶段YOLO系列目标检测算法自学及其代码实现的过程。其中算法具体实现借鉴于ultralytics YOLO源码Github,删减了源码中部分内容,满足个人科研需求。 本系列文章主要以YOLOv5为例完成算法的实现,后续修改、增加相关模…...

51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...

Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统
Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...

CSS3相关知识点
CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...

【阅读笔记】MemOS: 大语言模型内存增强生成操作系统
核心速览 研究背景 研究问题:这篇文章要解决的问题是当前大型语言模型(LLMs)在处理内存方面的局限性。LLMs虽然在语言感知和生成方面表现出色,但缺乏统一的、结构化的内存架构。现有的方法如检索增强生成(RA…...