精华内容
下载资源
问答
  • 1.Robotics Toolbox工具箱简介 Robotics Toolbox工具箱是一个功能强大的机器人工具箱,包含了机器人正、逆向运动学,正、逆向动力学,轨迹规划等,其中可视化仿真使得学习抽象的机器人学变得相对直观、好理解。学习...

    1.Robotics Toolbox工具箱简介
    Robotics Toolbox工具箱是一个功能强大的机器人工具箱,包含了机器人正、逆向运动学,正、逆向动力学,轨迹规划等,其中可视化仿真使得学习抽象的机器人学变得相对直观、好理解。学习这个工具箱,对理解机器人学很有帮助;然而MATLAB发行版中并没有自带该工具箱,需要自行安装;

    2.Robotic Box工具箱安装

    安装方式官网上已给出,可自行参考:
    https://petercorke.com/toolboxes/robotics-toolbox/
    在这里插入图片描述
    在这里插入图片描述
    简单来说有两种安装方式,这里使用的压缩包文件进行安装,即上面第一种。
    安装步骤:
    第一步:下载工具箱,这里直接给出一个链接打开后的界面如下,点击“DOWNLOAD”进行下载,下载速度颇慢,需要耐心等待;
    链接:https://petercorke.com/resources/downloads/
    在这里插入图片描述
    第二步:将下载的文件进行解压至matlab安装目录toolbox中,解压文件和目录如下;
    在这里插入图片描述
    在这里插入图片描述
    第三步:设置路径,打开matlab,单击设置路径,进行添加文件,添加完成后保存;
    在这里插入图片描述
    在这里插入图片描述
    第四步:安装及验证
    a、在命令行窗口输入:startup_rvc 进行安装;
    在这里插入图片描述
    b、在命令行窗口输入ver查看是否安装成功;
    在这里插入图片描述

    3.常用函数介绍
    主要介绍Link类和SerialLink类;前者用于初始化机器人的运动参数、动力学参数、刚体惯性矩参数、电机参数和传动参数。后者用于创建机器人,并对动机器人进行正运动学、逆运动学、动力学求解等;
    1、Link类
    操作函数:
    % A 连杆变换矩阵
    % RP 关节类型: ‘R’ 或 ‘P’
    % friction 摩擦力
    % nofriction 摩擦力忽略
    % dyn 显示动力学参数
    % islimit 测试关节是否超出软限制
    % isrevolute 测试是否为旋转关节
    % isprismatic 测试是否为移动关节
    % display 连杆参数以表格形式显示
    % char 转为字符串
    运动学参数:
    % theta 关节角度
    % d 连杆偏移量
    % a 连杆长度
    % alpha 连杆扭角
    % sigma 旋转关节为0,移动关节为1
    % mdh 标准的D&H为0,否则为1
    % offset 关节变量偏移量
    % qlim 关节变量范围[min max]
    动力学参数:
    % m 连杆质量
    % r 连杆相对于坐标系的质心位置3x1
    % I 连杆的惯性矩阵(关于连杆重心)3x3
    % B 粘性摩擦力(对于电机)1x1或2x1
    % Tc 库仑摩擦力1x1或2x1
    电机和传动参数:
    % G 齿轮传动比
    % Jm 电机惯性矩(对于电机)

    2、SerialLink类
    操作函数:
    % plot 以图形形式显示机器人
    % teach 驱动机器人
    % isspherical 测试机器人是否有球腕关节
    % islimit 测试机器人是否抵达关节极限
    % fkine 前向运动学求解
    % ikine6s 6旋转轴球腕关节机器人的逆向运动学求解
    % ikine3 3旋转轴机器人的逆向运动学求解
    % ikine 采用迭代方法的逆向运动学求解
    % jacob0 在世界坐标系描述的雅克比矩阵
    % jacobn 在工具坐标系描述的雅克比矩阵
    % maniplty 可操纵性度
    % jtraj 关节空间轨迹
    % accel 关节加速度
    % coriolis 关节柯氏力
    % dyn 显示连杆的动力学属性
    % fdyn 关节运动
    % friction 摩擦力
    % gravload 关节重力
    % inertia 关节惯性矩阵
    % nofriction 设置摩擦力为0
    % rne 关节的力/力矩
    % payload 在末端坐标系增加负载
    % perturb 随机扰动连杆的动力学参数
    属性:
    % links 连杆向量(1xN)
    % gravity 重力的方向[gx gy gz]
    % base 机器人基座的位姿(4x4)
    % tool 机器人的工具变换矩阵[ T6 to tool tip] (4x4)
    % qlim 关节范围[qmin qmax] (Nx2)
    % offset 偏置(Nx1)
    % name 机器人名字(在图形中显示)
    % manuf 注释, 制造商名
    % comment 注释, 总评
    % plotopt options for plot() method (cell array)
    % n 关节数
    % config 机器人结构字符串, 例如 ‘RRRRRR’
    % mdh 运动学中约定的布尔数 (0=DH, 1=MDH)
    4.简单案例
    仿真一个三自由度机械臂,其中z0,z1,z2为旋转关节,根据DH约定建立以下坐标系;
    在这里插入图片描述

    在这里插入图片描述
    仿真源码见公众号:在这里插入图片描述

    下篇预告:
    7自由度机械臂实例,工作空间求解,轨迹规划等;

    展开全文
  • MATLAB-robotic-toolbox工具箱学习笔记,入门资料整理,使用MATLAB进行机器人仿真必备工具箱。
  • robotics toolbox工具箱使用

    千次阅读 2019-02-26 18:59:13
    要建立PUMA560的机器人对象,首先我们要了解PUMA560的D-H参数,之后我们可以利用Robotics Toolbox工具箱中的link和robot函数来建立PUMA560的机器人对象。 其中link函数的调用格式: L = LIN...

    原文:https://blog.csdn.net/dxuehui/article/details/42528685
    另外有一篇文章写了工具箱中的常用函数 链接:https://blog.csdn.net/linuxarmsummary/article/details/25618049

    1. PUMA560的MATLAB仿真

    要建立PUMA560的机器人对象,首先我们要了解PUMA560的D-H参数,之后我们可以利用Robotics Toolbox工具箱中的link和robot函数来建立PUMA560的机器人对象。

    注意

    不知道是因为我用的robotic toolbox工具箱版本问题还是其他问题,貌似与下面的参数顺序有所不同,我目前调用如下:

    %      theta     d          a     alpha    sigma
    
    L1=Link([0      0.4       0.025    pi/2      0     ]);
    L2=Link([pi/2    0        0.56     0         0     ]);
    L3=Link([0       0        0.035    pi/2      0     ]);
    L4=Link([0       0.515    0        pi/2      0     ]);
    L5=Link([pi      0        0        pi/2      0     ]);
    L6=Link([0       0.08     0        0         0     ]);
    

    而官方解释如下:其中link函数的调用格式:

       L = LINK([alpha A theta D])
    
       L =LINK([alpha A theta D sigma])
    
       L =LINK([alpha A theta D sigma offset])
    
       L =LINK([alpha A theta D], CONVENTION)
    
       L =LINK([alpha A theta D sigma], CONVENTION)
    
       L =LINK([alpha A theta D sigma offset], CONVENTION)
    

    参数CONVENTION可以取‘standard’和‘modified’,其中‘standard’代表采用标准的D-H参数,‘modified’代表采用改进的D-H参数。参数‘alpha’代表扭转角 ,参数‘A’代表杆件长度,参数‘theta’代表关节角,参数‘D’代表横距,参数‘sigma’代表关节类型:0代表旋转关节,非0代表移动关节。另外LINK还有一些数据域:

       LINK.alpha      %返回扭转角
    
       LINK.A        %返回杆件长度
    
       LINK.theta       %返回关节角
    
       LINK.D        %返回横距
    
       LINK.sigma     %返回关节类型
    
       LINK.RP           %返回‘R’(旋转)或‘P’(移动)
    
       LINK.mdh      %若为标准D-H参数返回0,否则返回1
    
       LINK.offset     %返回关节变量偏移
    
       LINK.qlim        %返回关节变量的上下限 [min max]
    
       LINK.islimit(q)   %如果关节变量超限,返回 -1, 0, +1
    
       LINK.I         %返回一个3×3 对称惯性矩阵
    
       LINK.m              %返回关节质量
    
       LINK.r         %返回3×1的关节齿轮向量
    
       LINK.G              %返回齿轮的传动比
    
       LINK.Jm      %返回电机惯性
    
       LINK.B              %返回粘性摩擦
    
       LINK.Tc      %返回库仑摩擦
    
       LINK.dh             return legacy DH row
    
       LINK.dyn        return legacy DYN row
    

    其中robot函数的调用格式:

       ROBOT                           %创建一个空的机器人对象
    
       ROBOT(robot)             %创建robot的一个副本
    
       ROBOT(robot, LINK)     %用LINK来创建新机器人对象来代替robot
    
       ROBOT(LINK, ...)        %用LINK来创建一个机器人对象
    
       ROBOT(DH, ...)            %用D-H矩阵来创建一个机器人对象
    
       ROBOT(DYN, ...)            %用DYN矩阵来创建一个机器人对象
    

    2.变换矩阵

    利用MATLAB中Robotics Toolbox工具箱中的transl、rotx、roty和rotz可以实现用齐次变换矩阵表示平移变换和旋转变换。下面举例来说明:

    A 机器人在x轴方向平移了0.5米,那么我们可以用下面的方法来求取平移变换后的齐次矩阵:

    >> transl(0.5,0,0)
    
    ans =
    
    1.0000         0         0    0.5000
    
         0    1.0000         0         0
    
         0         0    1.0000         0
    
         0         0         0    1.0000
    

    B 机器人绕x轴旋转45度,那么可以用rotx来求取旋转后的齐次矩阵:

    >> rotx(pi/4)
    
    ans =
    
    1.0000         0         0         0
    
         0    0.7071   -0.7071         0
    
         0    0.7071    0.7071         0
    
         0         0         0    1.0000
    

    C 机器人绕y轴旋转90度,那么可以用roty来求取旋转后的齐次矩阵:

    >> roty(pi/2)
    
    ans =
    
    0.0000         0         1.0000         0
    
         0        1.0000         0              0
         
    -1.0000        0             0              0
    
         0         0             0         1.0000
    

    D 机器人绕z轴旋转-90度,那么可以用rotz来求取旋转后的齐次矩阵:

    >> rotz(-pi/2)
    
    ans =
    
      0.0000    1.0000       0         0
    
     -1.0000    0.0000       0         0
    
         0         0       1.0000      0
    
         0         0         0       1.0000
    

    当然,如果有多次旋转和平移变换,我们只需要多次调用函数在组合就可以了。另外,可以和我们学习的平移矩阵和旋转矩阵做个对比,相信是一致的。

    3 轨迹规划

    利用Robotics Toolbox提供的ctraj、jtraj和trinterp函数可以实现笛卡尔规划、关节空间规划和变换插值。

    其中ctraj函数的调用格式:

       TC = CTRAJ(T0, T1, N)
    
       TC = CTRAJ(T0, T1, R)
    

    参数TC为从T0到T1的笛卡尔规划轨迹,N为点的数量,R为给定路径距离向量,R的每个值必须在0到1之间。

    其中jtraj函数的调用格式:

       [Q QD QDD] = JTRAJ(Q0, Q1, N)
    
       [Q QD QDD] = JTRAJ(Q0, Q1, N, QD0, QD1)
    
       [Q QD QDD] = JTRAJ(Q0, Q1, T)
    
       [Q QD QDD] = JTRAJ(Q0, Q1, T, QD0, QD1)
    

    参数Q为从状态Q0到Q1的关节空间规划轨迹,N为规划的点数,T为给定的时间向量的长度,速度非零边界可以用QD0和QD1来指定。QD和QDD为返回的规划轨迹的速度和加速度。

    其中trinterp函数的调用格式:

    TR = TRINTERP(T0, T1, R)

    参数TR为在T0和T1之间的坐标变化插值,R需在0和1之间。

    要实现轨迹规划,首先我们要创建一个时间向量,假设在两秒内完成某个动作,采样间隔是56ms,那么可以用如下的命令来实现多项式轨迹规划:t=0:0.056:2; [q,qd,qdd]=jtraj(qz,qr,t);

    其中t为时间向量,qz为机器人的初始位姿,qr为机器人的最终位姿,q为经过的路径点,qd为运动的速度,qdd为运动的加速度。其中q、qd、qdd都是六列的矩阵,每列代表每个关节的位置、速度和加速度。如q(:,3)代表关节3的位置,qd(:,3)代表关节3的速度,qdd(:,3)代表关节3的加速度。

    4 运动学的正问题

    利用Robotics Toolbox中的fkine函数可以实现机器人运动学正问题的求解。

    其中fkine函数的调用格式:

    TR = FKINE(ROBOT, Q)

    参数ROBOT为一个机器人对象,TR为由Q定义的每个前向运动学的正解。

    以PUMA560为例,定义关节坐标系的零点qz=[0 0 0 0 0 0],那么fkine(p560,qz)将返回最后一个关节的平移的齐次变换矩阵。如果有了关节的轨迹规划之后,我们也可以用fkine来进行运动学的正解。比如:

    t=0:0.056:2; q=jtraj(qz,qr,t); T=fkine(p560,q);

    返回的矩阵T是一个三维的矩阵,前两维是4×4的矩阵代表坐标变化,第三维是时间。

    5 运动学的逆问题

    利用Robotics Toolbox中的ikine函数可以实现机器人运动学逆问题的求解。

    其中ikine函数的调用格式:

       Q = IKINE(ROBOT, T)
    
       Q = IKINE(ROBOT, T, Q)
    
       Q = IKINE(ROBOT, T, Q, M)
    

    参数ROBOT为一个机器人对象,Q为初始猜测点(默认为0),T为要反解的变换矩阵。当反解的机器人对象的自由度少于6时,要用M进行忽略某个关节自由度。

    有了关节的轨迹规划之后,我们也可以用ikine函数来进行运动学逆问题的求解。比如:

    t=0:0.056:2; T1=transl(0.6,-0.5,0); T2=transl(0.4,0.5,0.2); T=ctraj(T1,T2,length(t)); q=ikine(p560,T);

    我们也可以尝试先进行正解,再进行逆解,看看能否还原。

    Q=[0 –pi/4 –pi/4 0 pi/8 0]; T=fkine(p560,q); qi=ikine(p560,T);

    6 动画演示

    有了机器人的轨迹规划之后,我们就可以利用Robotics Toolbox中的plot函数来实现对规划路径的仿真。

    puma560;T=0:0.056:2; q=jtraj(qz,qr,T); plot(p560,q);

    当然,我们也可以来调节PUMA560的六个旋转角,来实现动画演示。

    drivebot(p560)

    展开全文
  • Crestron Toolbox工具箱

    2018-09-18 00:23:24
    Crestron调试工具——Toolbox版本2.42。下载后,第四步安装此程序
  • ArcGIS10 Toolbox 工具箱中文帮助文档

    热门讨论 2013-08-19 00:30:36
    ArcGIS10 Toolbox 工具箱中文帮助文档。 根据ArcGIS10.0中文帮助文档提取制作而成,版权归ESRI所有
  • Robotic Toolbox工具箱学习笔记(一) 软件:matlab2016a 工具箱:Matlab Robotic Toolbox v9.8 Matlab Robotic Toolbox工具箱学习笔记根据Robot Toolbox demonstrations目录,将分三大部分阐述: 1、General...

    Robotic Toolbox工具箱学习笔记(一)
    软件:matlab2016a
    工具箱:Matlab Robotic Toolbox v9.8
    Matlab Robotic Toolbox工具箱学习笔记根据Robot Toolbox demonstrations目录,将分三大部分阐述:

    1、General(Rotations,Transformations,Trajectory)
    2、Arm(Robot,Animation,Forwarw kinematics,Inverse kinematics,Jacobians,Inverse dynamics,Forward dynamics,Symbolic,Code generation)
    3、Mobile(Driving to a pose,Quadrotor,Braitenberg,Bug,D*,PRM,SLAM,Particle filter) General/Rotations

    %绕x轴旋转pi/2得到的旋转矩阵
    (1)r = rotx(pi/2);
    %matlab默认的角度单位为弧度,这里可以用度数作为单位
    
    (2)R = rotx(30, 'deg') * roty(50, 'deg') * rotz(10, 'deg');
    %求出R等效的任意旋转变换的旋转轴矢量vec和转角theta
    
    (3)[theta,vec] = tr2angvec(R);
    %旋转矩阵用欧拉角表示,R = rotz(a)*roty(b)*rotz(c)
    
    (4)eul = tr2eul(R);
    %旋转矩阵用roll-pitch-yaw角表示, R = rotx(r)*roty(p)*rotz(y)
    
    (5)rpy = tr2rpy(R);
    %旋转矩阵用四元数表示
    

    在这里插入图片描述
    在这里插入图片描述

     (6)q = Quaternion(R);
     %将四元数转化为旋转矩阵
       
    (7)q.R;
     %界面,可以是“rpy”,“eluer”角度单位为度。
     
    (8)tripleangle('rpy');
    

    在这里插入图片描述

    General/Transformations

    %沿x轴平移0.5,绕y轴旋转pi/2,绕z轴旋转-pi/2
     (1)t = transl(0.5, 0.0, 0.0) * troty(pi/2) * trotz(-pi/2)
    %将齐次变换矩阵转化为欧拉角
    (2)tr2eul(t)
    %将齐次变换矩阵转化为roll、pitch、yaw角
    (3) tr2rpy(t)
    

    General/Trajectory

    clear;
    clc;
    p0 = -1;% 定义初始点及终点位置
    p1 = 2;
    p = tpoly(p0, p1, 50);% 取步长为50
    figure(1);
    plot(p);%绘图,可以看到在初始点及终点的一、二阶导均为零
    [p,pd,pdd] = tpoly(p0, p1, 50);%得到位置、速度、加速度
    %p为五阶多项式,速度、加速度均在一定范围内
    figure(2);
    subplot(3,1,1); plot(p); xlabel('Time'); ylabel('p');
    subplot(3,1,2); plot(pd); xlabel('Time'); ylabel('pd');
    subplot(3,1,3); plot(pdd); xlabel('Time'); ylabel('pdd');
    

    在这里插入图片描述

    %另外一种方法:
    [p,pd,pdd] = lspb(p0, p1, 50);
    figure(3);
    subplot(3,1,1); plot(p); xlabel('Time'); ylabel('p');
    subplot(3,1,2); plot(pd); xlabel('Time'); ylabel('pd');% 可以看到速度是呈梯形
    subplot(3,1,3); plot(pdd); xlabel('Time'); ylabel('pdd');
    

    在这里插入图片描述

    %三维的情况:
    p = mtraj(@tpoly, [0 1 2], [2 1 0], 50);
    figure(4);
    plot(p)
    

    在这里插入图片描述

    %对于齐次变换矩阵的情况
    T0 = transl(0.4, 0.2, 0) * trotx(pi);% 定义初始点和目标点的位姿
    T1 = transl(-0.4, -0.2, 0.3) * troty(pi/2) * trotz(-pi/2);
    T = ctraj(T0, T1, 50);
    first=T(:,:,1);%初始位姿矩阵
    tenth=T(:,:,10);%第十个位姿矩阵
    figure(5);
    tranimate(T);%动画演示坐标系自初始点运动到目标点的过程
    
    展开全文
  • 标题Matlab深度学习——安装deep learning toolbox工具箱 步骤: 1、在GitHub下载deep Learning toolbox: https://github.com/rasmusbergpalm/DeepLearnToolbox 2、查看matlab的安装根目录: 在matlab的命令窗口...

    步骤:
    1、GitHub下载deep Learning toolbox: https://github.com/rasmusbergpalm/DeepLearnToolbox

    2、查看matlab的安装根目录:
    在matlab的命令窗口(command window)中输入“matlabroot”并回车;
    在这里插入图片描述
    可知我的根目录为 D:\matlab\MATLAB2

    3、解压后的deep Learning toolbox文件夹(自动命名为DeepLearnToolbox-master)放到matlab安装根目录的toobox文件夹里。
    我的路径为
    在这里插入图片描述

    4、在matlab命令行窗口输入addpath(genpath(‘D:\matlab\MATLAB2\toolbox\DeepLearnToolbox-master’))
    在这里插入图片描述
    注意:要将安装目录换成自己的哦!!!

    展开全文
  • pls_toolbox工具箱可以解决统计领域多个问题的matlab求解问题,比如偏最小二乘问题、多向主元问题、主元分析等等,集成的工具箱方便,而且不需要验证码!
  • 软件:matlab2013a ...Matlab Robotic Toolbox工具箱学习笔记根据Robot Toolbox demonstrations目录,将分三大部分阐述: 1、General(Rotations,Transformations,Trajectory) 2、Arm(Robot,Animation,Forw...
  • Matlab 关于使用Deep Learning Toolbox 工具箱出错的问题
  • MatlabRobotic Toolbox工具箱学习笔记(一) 转自http://blog.sina.com.cn/s/blog_a16714bf0101hygu.html 软件:matlab2013a 工具箱:Matlab Robotic Toolboxv9.8 Matlab RoboticToolbox工具箱学习笔记根据...
  • MATLAB OPTI Toolbox工具箱,包括OPTI-OPTI_Toolbox_v2.28_Released.zip、optiMEXFiles_mexw64_2_28.zip、scip.mexw64和sedumi-1.3.4.zip文件,是目前求解器相对比较全的安装文件,在本人博客中有配套的安装说明。
  • Matlab Robotic Toolbox工具箱学习笔记

    万次阅读 2015-01-08 19:21:05
    1. PUMA560的MATLAB仿真 要建立PUMA560的机器人对象,... Toolbox工具箱中的link和robot函数来建立PUMA560的机器人对象。 其中link函数的调用格式: L = LINK([alpha A theta D])  L =LINK([alpha A th
  • tensor_toolbox工具箱

    2015-05-16 20:58:08
    突然记起matlab没法做高维矩阵运算,简单运算的可以用for循环或者降维的技巧来实现,但是当比较复杂,特别是实现一些张量运算的时候就很麻烦,因为一些简洁的公式用一片for循环代码去...于是找到这个工具箱给大家分享
  • Matlab Robotic Toolbox工具箱学习笔记(二)

    万次阅读 多人点赞 2014-05-12 14:25:09
    Matlab Robotic Toolbox工具箱学习笔记(二) Arm/Robots 机器人是由多个连杆连接而成的,机器人关节分为旋转关节和移动关节。创建机器人的两个最重要的函数是:Link和SerialLink。 1、Link类 一个Link包含了...
  • 日前Kingston金士顿官网更新了其SSD固态硬盘的管理工具Toolbox,版本号为2.07A。功能依然比较少,也不支持中文。推荐需要的用户下载使用。 支持的产品型号: SSDNow 300、KC380、KC300、E100、E50、HyperX S
  • 3.matlab的Machine Learning Toolbox工具箱中也可以使用SVM。官网上 https://ww2.mathworks.cn/help/stats/examples/classification.html 有给出具体的例子,该工具箱较低版本的matlab并没有,我现在用的R2016b...
  • 1.默认p560关节空间的定义 1.1 关节空间都为0 First_Theta = [0 0 0 0 0 0]; p560.plot(First_Theta); %显示机器人的图像 1.2 关节空间绕不同关节旋转 First_Theta = [0 0 0 0 0 0];... ...
  • 现在matlab里面安装robotics toolbox工具箱已经没问题了,但是运行基本的程序会出一些错误,百度也不知道怎么修改,还请网友大神指教一二!感谢! ![图片说明]...
  • 上传内容主要为基于matlab版本的非下采样conturlet变换的图像融合函数库,可用于图像特征滤波和融合等功能实现。
  • 有时当我们进入Enterprise Architect作图的时候,在创建完图后会发现toolbox并没有按预期显示出来。其实,只要一个快捷键就可以手动调出工具箱啦~
  • 转载文章:https://blog.csdn.net/sinat_27088253/article/details/70197066
  • 如何安装Parallels Toolbox工具箱

    千次阅读 2016-12-19 15:37:00
    在使用Parallels Desktop12时,Parallels Toolbox工具箱是这个版本的一大特色,而学会这项功能操作的安装则是我们使用它的前提,在之前的教程“如何安装Parallels Toolbox工具箱(教程一)”中已经了解到如何在安装...
  • 工具箱版本10.3.1 使用改进DH法建立连杆坐标系,连杆数据可以改变,文中代码是直接从matlab编辑器里copy过来的,可以忽略那些数据.对机器人工具箱使用不熟的同学推荐 ... 先上结果 ...L(1)=Link([0 0 0 0 0],'modified'...
  • conturlet变换-nsct_toolbox工具箱源码简要分析

    千次阅读 多人点赞 2019-05-25 23:48:16
    因为大创项目的关系,需要编写关于contourlet的相关代码,苦于网上没有太多的相关资料,无奈,硬着头皮强行啃食nsct_toolbox的源码,现总结出一些经验和自己的理解,供苦×的广大学子参考,有错误之处还请指正。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,131
精华内容 852
关键字:

toolbox工具箱