ROS教程(六):理解ROS话题

ROS小车记录系列(二)IMU采集、过滤,与odom数据融合,发布新的odom话题 (二)IMU采集、过滤,利用EKF将IMU与odom融合,发布新的odom话题A、ROS采集节点B、imu_tools过滤imu数据C、使用 robot_pose_ekf 对imu和odom进行融合 ____先说整体处理流程:底层使用STM32F4,采集MPU9250、编码器,通过串口在一个数据帧内将两个数据送入ROS;ROS采集节点将二者数据解析,对IMU发布为imu_data_raw话题,使用imu_tools订阅过滤后再发布为imu_data_filtered,同时,采集节点将编码器数据航迹推演,发布 阅读详情

理解ROS话题

Description:  本教程介绍ROS话题(topics)以及如何使用 rostopic  和  rxplot  命令行工具。

Tutorial Level:  BEGINNER

Next Tutorial:   理解ROS服务和参数

开始

roscore

首先确保roscore已经运行, 打开一个新的终端:

$ roscore

如果你没有退出在上一篇教程中运行的roscore,那么你可能会看到下面的错误信息:

  • roscore cannot run as another roscore/master is already running.
    Please kill other roscore/master processes before relaunching

这是正常的,因为只需要有一个roscore在运行就够了。

turtlesim

在本教程中我们也会使用到turtlesim,请在一个新的终端中运行:

$ rosrun turtlesim turtlesim_node

通过键盘远程控制turtle

我们也需要通过键盘来控制turtle的运动,请在一个新的终端中运行:

$ rosrun turtlesim turtle_teleop_key
  • [ INFO] 1254264546.878445000: Started node [/teleop_turtle], pid [5528], bound on [aqy], xmlrpc port [43918], tcpros port [55936], logging to [~/ros/ros/log/teleop_turtle_5528.log], using [real] time
    Reading from keyboard
    ---------------------------
    Use arrow keys to move the turtle.

现在你可以使用键盘上的方向键来控制turtle运动了。如果不能控制,请选中turtle_teleop_key所在的终端窗口以确保你的按键输入能够被捕获。

  • turtle_key.png

现在你可以控制turtle运动了,下面我们一起来看看这背后发生的事。

ROS Topics

turtlesim_node节点和turtle_teleop_key节点之间是通过一个ROS话题来互相通信的。turtle_teleop_key在一个话题上发布按键输入消息,而turtlesim则订阅该话题以接收该消息。下面让我们使用rqt_graph来显示当前运行的节点和话题。

注意:如果你使用的是electric或更早期的版本,那么rqt是不可用的,请使用rxgraph代替。

使用 rqt_graph

rqt_graph能够创建一个显示当前系统运行情况的动态图形。rqt_graph是rqt程序包中的一部分。如果你没有安装,请通过以下命令来安装:

  • $ sudo apt-get install ros-<distro>-rqt
    $ sudo apt-get install ros-<distro>-rqt-common-plugins

请使用你的ROS版本名称(比如fuerte、groovy、hydro等)来替换掉<distro>。

在一个新终端中运行:

$ rosrun rqt_graph rqt_graph

你会看到类似下图所示的图形:

rqt_graph_turtle_key.png

如果你将鼠标放在/turtle1/command_velocity上方,相应的ROS节点(蓝色和绿色)和话题(红色)就会高亮显示。正如你所看到的,turtlesim_node和turtle_teleop_key节点正通过一个名为 /turtle1/command_velocity的话题来互相通信。

rqt_graph_turtle_key2.png

rostopic介绍

rostopic命令工具能让你获取有关ROS话题的信息。

你可以使用帮助选项查看rostopic的子命令:

$ rostopic -h
  • rostopic bw     display bandwidth used by topic
    rostopic echo   print messages to screen
    rostopic hz     display publishing rate of topic
    rostopic list   print information about active topics
    rostopic pub    publish data to topic
    rostopic type   print topic type

接下来我们将使用其中的一些子命令来查看turtlesim。

使用 rostopic echo

rostopic echo可以显示在某个话题上发布的数据。

用法:

rostopic echo [topic]

让我们在一个新终端中看一下turtle_teleop_key节点在/turtle1/command_velocity话题(非hydro版)上发布的数据。

$ rostopic echo /turtle1/command_velocity

如果你是用ROS Hydro 及其之后的版本(下同),请运行:

$ rostopic echo /turtle1/cmd_vel

你可能看不到任何东西因为现在还没有数据发布到该话题上。接下来我们通过按下方向键使turtle_teleop_key节点发布数据。记住如果turtle没有动起来的话就需要你重新选中turtle_teleop_key节点运行时所在的终端窗口。

现在当你按下向上方向键时应该会看到下面的信息:

  • ---
    linear: 2.0
    angular: 0.0
    ---
    linear: 2.0
    angular: 0.0
    ---
    linear: 2.0
    angular: 0.0
    ---
    linear: 2.0
    angular: 0.0
    ---
    linear: 2.0
    angular: 0.0

或者在hrydro中如下:

linear:
  x: 2.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.0
---
linear:
  x: 2.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.0
---

现在让我们再看一下rqt_graph(你可能需要刷新一下ROS graph)。正如你所看到的,rostopic echo(红色显示部分)现在也订阅了turtle1/command_velocity话题。

rqt_graph_echo.png

使用 rostopic list

rostopic list能够列出所有当前订阅和发布的话题。

让我们查看一下list子命令需要的参数,在一个新终端中运行:

$ rostopic list -h
  • Usage: rostopic list [/topic]
    
    Options:
      -h, --help            show this help message and exit
      -b BAGFILE, --bag=BAGFILE
                            list topics in .bag file
      -v, --verbose         list full details about each topic
      -p                    list only publishers
      -s                    list only subscribers

在rostopic list中使用verbose选项:

$ rostopic list -v

这会显示出有关所发布和订阅的话题及其类型的详细信息。

  • Published topics:
     * /turtle1/color_sensor [turtlesim/Color] 1 publisher
     * /turtle1/command_velocity [turtlesim/Velocity] 1 publisher
     * /rosout [roslib/Log] 2 publishers
     * /rosout_agg [roslib/Log] 1 publisher
     * /turtle1/pose [turtlesim/Pose] 1 publisher
    
    Subscribed topics:
     * /turtle1/command_velocity [turtlesim/Velocity] 1 subscriber
     * /rosout [roslib/Log] 1 subscriber

ROS Messages

话题之间的通信是通过在节点之间发送ROS消息实现的。对于发布器(turtle_teleop_key)和订阅器(turtulesim_node)之间的通信,发布器和订阅器之间必须发送和接收相同类型的消息。这意味着话题的类型是由发布在它上面的消息类型决定的。使用rostopic type命令可以查看发布在某个话题上的消息类型。

使用 rostopic type

rostopic type 命令用来查看所发布话题的消息类型。

用法:

rostopic type [topic]

运行(非hydro版):

$ rostopic type /turtle1/command_velocity
  • 你应该会看到:
    turtlesim/Velocity

hydro版请运行:

$ rostopic type /turtle1/cmd_vel
  • 你应该会看到:
    geometry_msgs/Twist

我们可以使用rosmsg命令来查看消息的详细情况(非hydro版):

$ rosmsg show turtlesim/Velocity
  • float32 linear
    float32 angular

hydro版:

$ rosmsg show geometry_msgs/Twist
  • geometry_msgs/Vector3 linear
      float64 x
      float64 y
      float64 z
    geometry_msgs/Vector3 angular
      float64 x
      float64 y
      float64 z

现在我们已经知道了turtlesim节点所期望的消息类型,接下来我们就可以给turtle发布命令了。

继续学习 rostopic

现在我们已经了解了什么是ROS的消息,接下来我们开始结合消息来使用rostopic。

使用 rostopic pub

rostopic pub可以把数据发布到当前某个正在广播的话题上。

用法:

rostopic pub [topic] [msg_type] [args]

示例(非hydro版):

$ rostopic pub -1 /turtle1/command_velocity turtlesim/Velocity  -- 2.0  1.8

示例(hydro版):

$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

以上命令会发送一条消息给turtlesim,告诉它以2.0大小的线速度和1.8大小的角速度开始移动。

  • turtle(rostopicpub).png

这是一个非常复杂的例子,因此让我们来详细分析一下其中的每一个参数。

  • rostopic pub
    • 这条命令将会发布消息到某个给定的话题。
  •  -1
    • (单个破折号)这个参数选项使rostopic发布一条消息后马上退出。
  • /turtle1/command_velocity
    • 这是消息所发布到的话题名称。
  • turtlesim/Velocity
    • 这是所发布消息的类型。
  • --
  • (双破折号)这会告诉命令选项解析器接下来的参数部分都不是命令选项。这在参数里面包含有破折号-(比如负号)时是必须要添加的。

  • 2.0 1.8
  • 正如之前提到的,在一个turtlesim/Velocity消息里面包含有两个浮点型元素:linear和angular。在本例中,2.0是linear的值,1.8是angular的值。这些参数其实是按照YAML语法格式编写的,这在YAML文档中有更多的描述。

你可能已经注意到turtle已经停止移动了。这是因为turtle需要一个稳定的频率为1Hz的命令流来保持移动状态。我们可以使用rostopic pub -r命令来发布一个稳定的命令流(非hydro版):

$ rostopic pub /turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0  -1.8

hydro版:

$ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

这条命令以1Hz的频率发布速度命令到速度话题上。

  • turtle(rostopicpub)2.png

我们也可以看一下rqt_graph中的情形,可以看到rostopic发布器节点(红色)正在与rostopic echo节点(绿色)进行通信:

rqt_graph_pub.png

正如你所看到的,turtle正沿着一个圆形轨迹连续运动。我们可以在一个新终端中通过rostopic echo命令来查看turtlesim所发布的数据。

使用 rostopic hz

rostopic hz命令可以用来查看数据发布的频率。

用法:

rostopic hz [topic]

我们看一下turtlesim_node发布/turtle/pose时有多快:

$ rostopic hz /turtle1/pose

你会看到:

  • subscribed to [/turtle1/pose]
    average rate: 59.354
            min: 0.005s max: 0.027s std dev: 0.00284s window: 58
    average rate: 59.459
            min: 0.005s max: 0.027s std dev: 0.00271s window: 118
    average rate: 59.539
            min: 0.004s max: 0.030s std dev: 0.00339s window: 177
    average rate: 59.492
            min: 0.004s max: 0.030s std dev: 0.00380s window: 237
    average rate: 59.463
            min: 0.004s max: 0.030s std dev: 0.00380s window: 290

现在我们可以知道了turtlesim正以大约60Hz的频率发布数据给turtle。我们也可以结合rostopic type和rosmsg show命令来获取关于某个话题的更深层次的信息(非hydro版):

$ rostopic type /turtle1/command_velocity | rosmsg show

hydro版:

rostopic type /turtle1/cmd_vel | rosmsg show

到此我们已经完成了通过rostopic来查看话题相关情况的过程,接下来我将使用另一个工具来查看turtlesim发布的数据。

使用 rqt_plot

注意:如果你使用的是electric或更早期的ROS版本,那么rqt命令是不可用的,请使用rxplot命令来代替。

rqt_plot命令可以实时显示一个发布到某个话题上的数据变化图形。这里我们将使用rqt_plot命令来绘制正在发布到/turtle1/pose话题上的数据变化图形。首先,在一个新终端中运行rqt_plot命令:

$ rosrun rqt_plot rqt_plot

这会弹出一个新窗口,在窗口左上角的一个文本框里面你可以添加需要绘制的话题。在里面输入/turtle1/pose/x后之前处于禁用状态的加号按钮将会被使能变亮。按一下该按钮,并对/turtle1/pose/y重复相同的过程。现在你会在图形中看到turtle的x-y位置坐标图。

rqt_plot.png

按下减号按钮会显示一组菜单让你隐藏图形中指定的话题。现在隐藏掉你刚才添加的话题并添加/turtle1/pose/theta,你会看到如下图所示的图形:

rqt_plot2.png

本部分教程到此为止,请使用Ctrl-C退出rostopic命令,但要保持turtlesim继续运行。

到此我们已经理解了ROS话题是如何工作的,接下来我们开始学习理解ROS服务和参数。

ROS总结——ROS话题 理解ROS话题本博客是对http://wiki.ros.org/上ROS教程的学习总结,欢迎大家交流学习。本节介绍ROS话题(topics)以及如何使用rostopic 和 rxplot 命令行工具。1.运行turtlesim 首先确保roscore已经运行, 打开一个新的终端:$ roscore在一个新的终端中运行:$ rosrun turtlesim turtlesim_node需要通过键 阅读详情

相关推荐

ROS学习--(六)理解ROS节点和话题

ROS系统包括多个独立的节点,每个节点通过一个发布/订阅的消息范式与其他节点联系 !如下图中,publisher和subscriber都可以是节点(node) (http://img.blog.youkuaiyun.com/20150726220005225) 举个具体例子: ROS starts with the ROS Master. Let’s say we have a camera on o

BenjaminYoung29的博客 4570

理解ros话题--6

理解ROS话题(原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/) Description: 本教程介绍ROS话题(topics)以及如何使用rostopic 和 rxplot 命令行工具。目录如下:   1.开始   1.1.首先确保roscore已经运行, 打开一个新的终端: root@zxwubuntu-Aspire-V3...

weixin_34194551的博客 359

ROS2—理解话题(Topic)

大道至简,ROS2将复杂的机器人系统拆解成许多模块节点,而这些节点之间则是通过一个至关重要的通道完成数据交换的,这个通道就是“话题”。 一个节点可以通过多个话题向外发布数据,也可以同时订阅多个其他节点发布的话题,相当于话题是一个多对多的订阅/发布模型。 可见,话题是节点之间实现数据传输的重要途径,也是机器人各个子系统之间交换数据的重要方式。 1.启动小海龟仿真器 还是先来启动小海龟仿真器吧,相信你已经很熟练了: ros2 run turtlesim turtlesim_node ..

hx1113的博客 5088

rostopic list 能查看到消息,但是echo未接收到发布的消息

在ros小车中,我想自己利用py文件单独发布一次导航的命令,后来发现,发出的命令始终接收不到消息,利用rostopic list能查看到消息,但是用rostopic echo 却始终查不到消息的发布,经过多次实验,发现如果在publis()多次则会接收到消息,第一次总是发布不出消息,原来是在初始化节点的时候时间太短,初始化是需要一个时间的,所以在初始化节点的后加一个延时。一般就能解决 ...

qq_56483645的博客 6246

4、理解ros话题

一、准备工作1.roscore首先启动ros:rosrun已经启动过则无需此步。2.turtlesim启动一个小海龟rosrun turtlesim turtlesim_node3.远程操控小海龟再一个新终端里运行:rosrun turtlesim turtle_teleop_key得到:Reading from keyboard --------------------------- Use ar

_明灭的专栏 1172

机器人操作系统ROS2之理解话题

节点通过话题发布信息,它允许任意数量的其他节点订阅和获取数据。本节中,您使用rqt_graph和命令行工具检查了多个节点通过话题建立的连接关系。

关注智践行,一起学机器人和AI技术 995

ROS2入门教程—理解话题(Topic)

ROS2入门教程—理解话题(Topic)1 启动小海龟仿真器2 rqt_graph3 ros2 topic list4 ros2 topic echo5 ros2 topic info6 ros2 interface show7 ros2 topic pub8 ros2 topic hz   ros2将复杂系统分解为许多模块化节点,而这些节点之间则是通过一个至关重要的通道完成数据交换的,这个通道就是“话题”。   一个节点可以通过多个话题向外发布数据,也可以同时订阅多个其他节点发布的话题,相当于话题是一个

Roar冷颜的博客 5012

深入了解ROS的细节,ROS文件系统、创建ROS程序包、编译ROS程序包、理解ROS节点、理解ROS话题(topic)

深入了解ROS的细节 这篇博客旨在深入地了解ROS平台,详细解析多个命令的功能以及利用场景,这里要用到一个模拟器产生一个小乌龟的节点来演示各个命令的使用 这篇文章讲的是关于ROS平台的细节信息,建立在安装好ROS的前提下,安装过程和创建工作空间参考 ROS文件系统介绍 文件系统概念 Packages:软件包是ROS应用层程序代码的组织单元,每个软件包都可以包含程序库、可执行文件、脚本或者其它手动...

习惯积淀的博客 1483

ROS入门_1.9 理解ROS话题

目录 开始 roscoreturtlesim通过键盘远程控制turtle ROS Topics 使用 rqt_graphrostopic介绍使用 rostopic echo使用 rostopic list ROS Messages 使用 rostopic type 继续学习 rostopic 使用 rostopic pub使用 rostopic hz 使用 r

ShuaiWang优快云的博客 1339

ros监控激光雷达 IMU 数据是否正常发送(python节点代码)

监控思路很简单,就是用计数器不断统计激光雷达,IMU的数据数量,如果在变化说明一直有数据进来,如果停止了,就说明传感器数据接入出现了问题。

三维点云技术探索 625

ROS系统学习13—界面开发2—ROS消息接收和显示

ROS系统学习13—界面开发2 上一篇文章介绍了如何搭建基于Qt5和librviz的ROS界面框架,这篇文章我们将进一步介绍怎么用这个框架来实现一些常用的GUI显示功能。 接收并显示图像消息 在ROS中,接收消息一般是用spin()或者spinOnce()两个函数实现的。前者是一个阻塞函数,一运行程序则会等待在该函数处接收消息,后者则在调用之时方能接收到消息。如果写过界面程序的老哥肯定清楚,这种性质的函数是不能写在界面程序中的,否则程序将会处于假死状态。因此在Qt中实现ROS消息的接收需要开辟新的线程来实现

weixinhum 1626

ROS入门(六)理解ROS话题

1运行 roscore 运行ROS程序前,必须打开一个窗口先运行roscore $ roscore turtlesim 在本教程中我们也会使用到turtlesim,请在一个新的终端中运行: $ rosrun turtlesim turtlesim_node 通过键盘远程控制turtle 我们也需要通过键盘来控制turtle的运动,请在一个新的终端中运行: $ rosrun turtlesim ...

小鱼儿飞丫飞 843

ros中发布odom的topic

一个ros节点,发布一个话题,名字是odom。odm可以表示机器人的位置

ROS Learning-008 beginner_Tutorials ROS话题

ROS Indigo beginner_Tutorials-07 ROS话题我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14.04.4 LTS ROS 版本:ROS Indigo1. 理解 ROS 话题:我们来通过运行一个 ROS 的例子程序来 感受一下什么是 ROS 话题: 运行下面的命令: (Ctrl+Alt+T 打开一个新终端)

AoboSir.com 1万+

告别地图偏移!手把手教你用MapOnline V1.2在ArcGIS里加载无偏谷歌影像和历史影像

本文详细介绍了如何使用MapOnline V1.2插件在ArcGIS中加载无偏谷歌影像和历史影像,解决GIS工程师长期面临的地图偏移问题。通过三步安装配置、无偏影像加载和时空分析功能,提升地理信息数据的精确度和工作效率,特别适用于城市规划、环境监测等场景。

weixin_29252171的博客 232

SAP生产版本导入避坑大全:从‘黄灯’到‘绿灯’,详解CM_FV_MKAL_CONSISTENCY_CHECK检查函数

本文深入解析SAP生产版本导入过程中的常见问题,特别是通过`CM_FV_MKAL_CONSISTENCY_CHECK`检查函数从‘黄灯’异常到‘绿灯’正常的修复方法。涵盖静态与动态校验机制、典型异常场景诊断及批量导入最佳实践,帮助SAP运维人员高效解决生产版本管理难题。

weixin_30568591的博客 387

ROS2官网学习笔记 理解ROS2话题篇

ROS2官网学习笔记 理解ROS2话题篇背景要准备的条件学习内容1. 启动节点2. rqt_graph3. ros2 topic list4. ros2 topic echo5. ros2 topic info6. ros2 msg show7. ros2 topic pub8. ros2 topic hz9. 关闭节点总结 学习目标:使用rqt_graph和命令行工具查看ROS2的话题. 背景 ...

dckwin的博客 1632

AOSP 8.0.0编译中的ANDROID_DATA缺失问题解决方案

在AOSP编译过程中,环境变量和路径设置的正确性至关重要。遇到相关的错误时,检查并修正环境配置通常是解决问题的关键。希望本文提供的分析和解决方案能帮助你顺利编译AOSP。

m0_74337424的博客 398

ROS2教程(入门级):理解ROS 2话题(topics)

目标: 使用rqt_graph和命令行工具讲解ROS 2 的话题(ROS 2 topic)。 背景知识 ROS 2将复杂的系统分见为许多模块化的节点。话题(topics)是ROS graph(图)中非常重要的的组成部分,它像交通工具一样,为各个节点交换信息。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kBOOIY2e-1624290284959)(https://docs.ros.org/en/foxy/_images/Topic-SinglePublisherandSi

D109的博客 2068

Transformer实战(38)——视觉Transformer (Vision Transformer, ViT)

Transformer 在自然语言处理 (NLP) 领域取得了显著成就,在许多不同的任务中都表现出色。在本节中,我们将探索视觉 Transformer (Vision Transformer, ViT) 模型。正如 NLP 领域创建了多种模型一样,视觉领域也开发了多种模型,每种模型都为计算机视觉提供了新的视角。通过本节,将学习如何使用 ViT 等模型进行计算机视觉任务,了解基于 Transformer 的预训练计算机视觉模型的工作原理,以及如何针对特定任务进行微调。

盼小辉丶的博客 2862

GFPS技术原理(一)-简介

GFPS(谷歌快速配对服务)利用BLE技术简化设备配对流程,相比传统方式大幅提升用户体验。首次配对时,设备广播包含型号ID和安全密钥的BLE信号,手机检测后弹出配对通知,用户点击即可完成安全连接并将设备与Google账户绑定。该技术支持跨设备同步、电量显示、找回设备等功能,后续配对更加便捷。GFPS通过BLE实现快速发现、一键配对和安全连接,结合Google后端服务提供元数据支持,已成为出海设备的认证标准。其核心优势在于简化操作步骤并增强功能性,特别适合非技术用户群体。

十多年蓝牙协议软件开发,擅长蓝牙协议分析 2062

【ROS2】Beginner : CLI tools - 理解 ROS 2 话题

ROS2 CLI tools Topic

Ray Home 1123

一文整理深度学习【深度学习linux的docker+pytorch+cuda+nvidia-docker+vscode配置】

docker+pytorch+cuda+nvidia-docker+vscode

Edward的博客 1335

ros::spin()的理解

ros::spin()的理解 在程序到达ros::spin()之前按照一系列规则,设定一系列话题订阅者。 这些订阅者就开始嗷嗷待哺,等待话题进来,但这时候订阅者的嘴还没有打开。 然后就到ros::spin(),这可以理解为一个动作,打开订阅者的嘴。这样订阅者们可以开始接受话题,最重要的是进入回调函数! 当然,最开始的时候,没有话题进来,spin()是堵塞在这里的。 一旦有话题进来, 一系列订阅、回...

一只小菜鸟的博客 2万+

Supreme小程序自动化抢购终端——源码架构与执行流程全解析

本系统是一套基于开发的桌面端小程序自动化抢购终端。把只有开发者能跑的脚本,包装成普通用户也能操作的桌面工具。参数自动捕获 → 商品多关键词检索 → sku/尺码/库存映射 → 多商品任务队列 → 定时/立即抢购 → 订单创建 → 支付参数拉取 → 本地服务生成支付链接 → 手机微信扫码付款这套 Supreme 抢购终端,表面上看是一个"下单工具"。但从工程角度审视,它已经具备了一个小型桌面自动化系统GUI 层:CustomTkinter 现代化界面,线程安全业务层:多商品队列、定时调度、任务编排。

猫敷雪 203

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: ROS教程(五):理解 ROS节点
下一篇: ROS教程(七):理解ROS服务和参数
沫尘雪痕
博客等级 码龄16年 166粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值