机器人 URDF学习笔记

机器人仿真-gazebo学习笔记(3)URDF和机器人模型 摆烂才是王道 阅读详情

目录

URDF(Unified Robot Description Format)

✅ URDF 描述的内容包括:


URDF(Unified Robot Description Format)


意思是:统一机器人描述格式。

它是一种用 XML 编写的格式,专门用于描述机器人模型的结构、几何、关节、连杆等信息。


✅ URDF 描述的内容包括:

内容说明
🤖 机器人各个部分(link)如底座、关节、机械臂段、末端执行器等
⚙️ 连接方式(joint)关节类型(旋转、滑动、固定)、关节位置
📐 几何信息各部分的大小、形状(box、cylinder、mesh 等)
🧲 质量/惯性信息模拟物理属性:质量、惯性张量
🗺️ 坐标变换各部分之间的相对位置和姿态
🎨 材质/颜色(可选)可视化用,如 RViz 显示颜色或纹理

xacro可扩展的 URDF,支持变量、宏(简化写法)
robot_state_publisher用 URDF 发布 TF(坐标变换)
rviz可视化 URDF 模型
gazebo用 URDF 或 SDF 加载机器人仿真模型
moveit用 URDF + SRDF 进行路径规划和机械臂控制
ROS学习笔记(12)-- SolidWorks导出机器人URDF文件 1. 工具下载与安装 下载SolidWorks to URDF Exporter插件后按照网站上的步骤进行安装(目前该插件已经在Win 10 64位系统+Solidworks 2018上验证过。 打开Solidworks 2018的插件对话框,可以看到SW2URDF插件已经加载并启动: 2.创建参考系 移动机器人的四个轮子和主体base分别有不同的坐标系,建立各自的坐标... 阅读详情

相关推荐

深入解析Android SoundTrigger架构:从HIDL到AIDL的演进与实践

本文深入解析Android SoundTrigger架构,从HIDL到AIDL的演进与实践。SoundTrigger是Android系统中低功耗语音唤醒的关键技术,通过分层设计和硬件协同实现高效语音识别。文章详细介绍了核心组件、HIDL与AIDL的对比及优化技巧,帮助开发者掌握语音模型优化和功耗管理。

brown的博客 225

ROS学习笔记:从零构建URDF机器人模型

本文详细介绍了ROS中从零开始构建URDF机器人模型的完整流程。内容涵盖URDF文件的基本结构、Link与Joint标签的使用、通过Launch文件在RViz中可视化模型、解决模型显示问题以及使用关节状态发布器让模型动起来。文章以实践为导向,帮助初学者掌握ROS机器人建模的核心技能,为后续的仿真与开发奠定基础。

weixin_29204749的博客 123

STM32F103到F407移植OLED,为啥F4屏幕不亮?一个延时函数搞定时序问题

本文详细分析了STM32F103到F407移植OLED时屏幕不亮的问题,指出时钟频率差异导致的时序问题是关键原因。通过对比F103和F407的时钟架构差异,提供了精确延时函数的实现方法,并指导在I2C通信关键点插入适当延时,确保OLED正常显示。文章还涵盖了完整的测试方案和高级优化技巧,帮助开发者彻底解决移植中的时序问题。

weixin_30642561的博客 538

【ROS2学习笔记】URDF 机器人建模

本文是ROS2学习笔记,主要介绍URDF(统一机器人描述格式)的基础知识与应用。URDF通过XML格式描述机器人的硬件结构,包含link(刚体)和joint(关节)两大核心元素。link定义机器人的外观、碰撞属性和惯性;joint则描述刚体之间的连接方式和运动类型。文章详细讲解了URDF文件的基本结构、标签语法,并通过一个四轮移动机器人的实例演示了如何编写URDF文件、配置link和joint参数,以及使用RViz和urdf_to_graphviz工具进行模型可视化和结构分析。最后总结了URDF建模的关键要

YZYZYYNO_2的博客 1963

FoundationPose实战:从零部署到Demo运行全记录

本文详细记录了FoundationPose从零部署到Demo运行的全过程,包括Ubuntu环境配置、项目部署、依赖安装及常见问题解决方案。特别针对复现过程中的关键步骤如CUDA版本选择、Eigen3安装等提供了实用技巧,帮助开发者高效完成FoundationPose的部署与调试。

weixin_27102543的博客 261

STM32F407编译下载全流程:从CubeMX到HEX烧录

嵌入式固件开发中,编译与下载是连接代码与硬件的关键闭环。其本质是将高级语言描述的逻辑,经交叉编译(ARM GCC)、链接(ELF生成)、格式转换(HEX/BIN)后,通过调试接口(SWD/UART)写入MCU Flash存储器的过程。该流程涉及工具链协同、二进制格式特性(如Intel HEX的地址映射与无元数据设计)、启动模式(System Memory Bootloader)、Flash选项字节(RDP/WRP)等底层机制,直接决定固件可运行性与安全性。典型应用场景包括STM32F407开发板调试、量产固

weixin_28840811的博客 256

【ROS2学习笔记】URDF 机器人建模。

URDF(Unified Robot Description Format)是ROS中用于描述机器人模型的XML格式文件。通过URDF文件,可以定义机器人的连杆(link)和关节(joint),从而构建完整的机器人模型。URDF支持树状结构,适合描述轮式机器人、机械臂等。URDF(Unified Robot Description Format)是ROS中用于描述机器人模型的XML格式文件。通过URDF文件,可以定义机器人的连杆(link)和关节(joint),从而构建完整的机器人模型。

XVs_qsia的博客 405

PAT|中国大学MOOC-浙江大学翁恺-C语言程序设计习题集(更新中)

##2-0. 整数四则运算 时间限制:400 ms 内存限制:65536 kB 代码长度限制:8000 B 判题程序:Standard 作者:乔林(清华大学) 本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。 输入格式: 输入在一行中给出2个正整数A和B。 输出格式: 在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。 输入样例: 3 ...

小鱼波波波 6万+

创建一个urdf机器人_Robotics System Toolbox学习笔记(一):简单建立一个机器人

这个是CSDN xuuyann帮我整理版本一共6节 看起来比较舒服,我自己写的适合跑代码,互相对比看把软件介绍 Robotics System Toolbox提供了用于设计,模拟和测试操纵器,移动机器人和类人机器人的工具和算法。对于机械手和类人机器人,该工具箱包括用于碰撞检查,轨迹生成,正向和反向运动学以及使用刚体树表示的动力学的算法。对于移动机器人,它包括用于映射,本地化,路径规划,路径跟踪和...

weixin_36195837的博客 867

vivado实现SDI接口

XAPP1249,用来介绍UHD_SDI的实现。

Huskar_Liu的博客 7060

【异常检测】新版异常检测库anomalib的使用

异常检测库anomalib的使用。

胡侃有料的博客 4382

【嵌入式应用学习笔记 04】ROS-URDF机器人建模

URDF,全称为统一机器人描述格式(Unified Robot Description Format),是一个基于XML的语法框架,用于在机器人操作系统(ROS)中描述和定义机器人模型。

m0_74112520的博客 2020

目标检测基础

目标检测是计算机视觉的核心任务,需同时对图像中的物体进行定位与识别。传统方法存在速度慢、精度低等问题,而深度学习显著推动了该领域发展,使实时高精度检测成为可能。检测的核心是为每个物体预测边界框坐标和类别标签。为实现高效检测,引入了锚框机制,通过预设多尺度、多宽高比的候选区域,缩小预测偏移量,提升定位精度。训练时,通过计算锚框与真实边界框的交并比 (IoU) 确定正负样本,并基于此生成类别标签和坐标偏移量作为监督信号。该方法提升了检测器对多尺度目标和复杂场景的鲁棒性。

盼小辉丶的博客 2613

ROS基础学习笔记二(URDF机器人建模)

学习ROS主要是想建立一个turtlrbot小车模型在固定仿真环境中实现机器人的自动建立地图与定位功能,可以再扩展的就是通过使用路径规划算法实现机器人的导航功能。核心的步骤就是要建立一个机器人,所以开始学习使用URDF建立一个机器人。上一讲主要学习ROS如何创建工作空间、如何创建功能包以及ROS的三种通信编程方式:动作、服务、参数编程。学习任何东西一定要学会总结,这样可以加深理解学习,推荐给大家,...

sunshine 1901

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ROS学习笔记(十六) 统一机器人描述格式URDF

统一机器人描述格式URDF URDF(Unified Robot DScription Fornat)机器人统一描述格式(XML格式)。 语法规范:参考链接:http://wiki.ros.org/urdf/XML URDF组件,是由不同的功能包和组件组成: urdf_paser_plugin是URDF基础的插件,衍生出了urdfdom(面向URDF文件)collar_parser(面向相互文件)(\qquad其中urdf_parser和urder_interface已经在hydro之后的版本中去除了)。

weixin_44682965的博客 1254

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

《ROS理论与实践》学习笔记(四)URDF机器人建模

《ROS理论与实践》学习笔记(四)URDF机器人建模课程内容1.URDF建模方法2.机器人建模功能包创建3.检查urdf模型结构本讲作业创建一个自己的机器人模型结语 在学习《ROS理论与实践》课程时,记录了学习过程中的编程练习,课后作业以及发现的问题,后续会对尚未解决的问题继续分析并更新,纯小白,仅供参考。 本次学习笔记关于课程中的第五讲:URDF机器人建模 。主要学习了ROS的URDF建模方法。 课程内容 1.URDF建模方法 < link > 描述机器人某个刚体部分的外观和物理属性 &l

Sakurazzy的博客 794

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

创建一个urdf机器人_ROS学习笔记十一:创建URDF 文件并在RVIZ中查看模型

Unified Robot Description Format,简称为URDF(标准化机器人描述格式),是一种用于描述机器人及其部分结构、关节、自由度等的XML格式文件。一、创建第一个URDF文件将要创建的URDF文件描述的是一种最常见的移动机器人,它有四个轮子、一个带有抓取器的手臂。为了打好基础,我们先做一个带有四个轮子的机器人底座。在 chapter7_tutorials/robot1_de...

weixin_39867066的博客 1326

ROS学习笔记07、机器人系统仿真(URDF、Xacro、Arbotix、Gazebo)

马上开学,目前学校很多实验室都是人工智能这块,大部分都是和机器人相关,然后软件这块就是和cv、ros相关,就打算开始学习一下。本章节是虚拟机安装Ubuntu18.04以及安装ROS的环境。学习教程:【Autolabor初级教程】ROS机器人入门,博客中一些知识点是来源于赵老师的笔记在线笔记,本博客主要是做归纳总结,如有侵权请联系删除。视频中的案例都基本敲了遍,这里给出我自己的源代码文件: 所有博客文件目录索引:博客目录索引(持续更新)**机器人系统仿真:**是通过计算机对实体机器人系统进行模拟的技术,在 R

每个人都是独一无二的,把握好自己的节奏,跟着自己的心走。 2284

Moveit学习笔记 (一) ——如何使用urdf建立一个简单的机器人模型

工作环境:ubuntu+ros 需要用到的package: rviz,urdf,joint_state_publisher 学习之前需要掌握的技能: 新建工作空间 新建package 安装package 本文我们教大家学习怎么用urdf建如下的两自由度机器人模型 1.什么是urdf以及xacro? urdf(unified robot discription format)统一机器人描述格式...

zhelijun的博客 4926

ROS2学习笔记6 URDF

由于赵虚左没有更新后续内容,从这章开始将转入小鱼的教程 视频 docs GIthub 仓库 URDF语法和ROS相同 功能包不需要任何依赖 表明使用的证书是Apache 2.0 urdf 如下 可以使用将 urdf 坐标关系用 PDF 查看安装包 公布包下新建 launch 目录,编写 python launch 文件 配置 Cmake 全 Cmake 编译完整 launch 文件 Cmake 修改 6.2.3 xacro 简化 urdf 新建 .xacro 文件 安装软件包 使用 xacro 可以将 xa

tech1001的博客 1036

ROS学习笔记11:URDF

本人ROS小白,利用寒假时间学习ROS,在此以笔记的方式记录自己每天的学习过程。争取写满20篇(11/20)。:严格按照下方学习链接的教程配置,基本一次成功。笔记绝大部分代码使用编写。:基本流程,link标签,joint标签,urdf工具(Unified Robot Description Format)是ROS中用于描述机器人的一种XML格式。它允许用户定义机器人的物理结构、关节、传感器等属性,以及它们之间的相对位置和运动学关系。

S13352784013的博客 1690

ROS理论与实践学习笔记——5 ROS机器人系统仿真之URDF(Unified Robot Description Format)语法详解

URDF(统一机器人描述格式)是 ROS 中用于描述机器人模型的标准 XML 文件格式。它主要用于定义机器人的几何、运动学和动力学属性,支持在仿真工具如 Gazebo 和可视化工具 Rviz 中展示和仿真机器人。

心有所信,方能远行! 3623

URDF通用机器人格式化描述文件学习笔记

一、添加依赖 CMakelist.txt的find_package中增加urdf依赖。 package.xml中增加urdf依赖: &lt;build_depend&gt;urdf&lt;/build_depend&gt; &lt;run_depend&gt;urdf&lt;/run_depend&gt; 二、写一个urdf文件 一般的urdf文件test.urdf起来像是这样: ...

山不厌高,海不厌深。 8048

ubuntu16.04下ROS操作系统学习笔记(四 )机器人系组成、URDF机器人建模、xacro模型优化

机器人的定义与组成 机器人系统构建 机器人系统的构建主要有以下几点: 执行机构的实现:轮子、电机、舵机等。 驱动系统的实现:电源子系统、电机驱动子系统、传感器接口等。 内部传感系统的实现:机器人里程计: 通过电机带动光删计数,实现对机器人运动速度的求取,然后计算积分得到里程。惯性测量单元(IMU):测量物体速度姿态,主要包括三轴陀螺仪、三轴加速...

小小何先生的学习之旅 3110

ROS仿真机器人---URDF的XML格式描述学习笔记(wiki教程)

一.link <link>标签用于描述机器人某个刚体部分的外观和物理属性,包括尺寸(size)、颜色(color)、形状(shape)、惯性矩阵(inertial matrix)、碰撞参数(collision properties)等。 link结构一般如下所示: <link name="link_name"> <inertial> .........

芃晟的博客 2964
上一篇: VLA学习笔记 2025
下一篇: cannot import name ‘TextKwargs‘ from ‘transformers.processing_utils‘
AI算法网奇
AI算法网奇 优质创作者: python技术领域 优质创作者: python技术领域 领域专家: 数据科学与机器学习技术领域 领域专家: 数据科学与机器学习技术领域
博客等级 码龄17年 9万+粉丝 6830原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值