news 2026/6/6 8:48:03

AR3六轴机械臂实操开发包:带ARCS控制软件、Teensy/Arduino双固件、校准参数与接线实拍图

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AR3六轴机械臂实操开发包:带ARCS控制软件、Teensy/Arduino双固件、校准参数与接线实拍图

本文还有配套的精品资源,点击获取

简介:这个开发包专为动手调试AR3六轴机械臂设计,开箱即用。包含Windows平台下的ARCS.exe主控程序,支持Xbox手柄实时操控;提供Teensy和Arduino两套完整可编译固件源码(.ino格式),均已通过实际烧录与运动联调验证;内置预设校准文件ARbot.cal,配合default calibration values.jpg等多张实拍图,清晰展示默认参数设置逻辑;还有IMG_20190930系列接线图、display setting.jpg显示配置参考、CAD render 4.jpg结构示意,以及play-icon.gif、stop-icon.gif等UI资源和AR.ico图标。错误日志模块ErrorLog可记录运行异常,便于排查通信或驱动问题。所有内容组织在扁平化目录中,无嵌套冗余,README.md文档说明详细,适合高校机器人课程实验、毕业设计搭建,也适合自学六轴逆解算法、串口上下位机交互、舵机PWM控制等核心环节。

1. 项目概述:为什么这套AR3开发包值得你花时间拆开细看

如果你正在高校自动化、机器人工程或电子信息类专业做课程设计,或者正卡在“六轴机械臂怎么动起来”这个坎上——不是理论推导卡壳,而是连舵机怎么接线、串口怎么通信、校准参数往哪填都得翻三四个文档反复试错——那这套AR3六轴机械臂实操开发包,就是为你省下至少80小时无效调试时间的“物理版说明书”。它不讲大道理,不堆公式,所有内容都来自真实桌面级搭建现场:Teensy板子焊点上的松香残留、Arduino Nano引脚旁手写的PWM通道标注、ARCS.exe运行时弹出的ErrorLog.txt里那一行行带时间戳的“SERIAL_TIMEOUT: no response from controller”,甚至IMG_20190930_183426006.jpg里摄像头拍到的舵机接线端子上胶布缠绕角度——全是实打实的“我亲手干过”的痕迹。

核心关键词“AR3机械臂”“ARCS控制软件”“Teensy固件”“Arduino机器人”“机械臂校准”,不是标签,而是五个可触摸的操作锚点。AR3不是抽象模型,是铝型材+MG996R舵机+3D打印关节构成的实体;ARCS.exe不是演示Demo,是带Xbox手柄映射表、运动轨迹缓存、实时舵机角度显示的完整Windows客户端;Teensy固件和Arduino固件不是同一套代码改个头文件就完事,而是针对两块板子硬件特性的深度适配——Teensy用USB虚拟串口实现毫秒级响应,Arduino则靠优化中断服务程序(ISR)压榨Nano的ATmega328P性能;校准不是调几个数字,而是把default calibration values.jpg里的12组数值(q0偏移、L1-L6臂长、DH参数α/θ/d/a)和ARbot.cal文本文件里逐行对应的浮点数一一对照,再对着IMG_20190930系列接线图确认每个舵机信号线是否插进正确引脚。这套资源的价值,不在“全”,而在“真”——所有文件都经过烧录-上电-联调-报错-修复-再验证的闭环,连README.md里写“建议使用Arduino IDE 1.6.12编译Teensy固件”这种细节,都是因为高版本IDE会默认启用USB CDC串口,导致ARCS.exe识别不到设备。

它适合谁?不是只适合能自己推导DH参数的研究生,恰恰相反,最适合那些第一次把舵机拧上铝支架、第一次用万用表测TX/RX电压、第一次在串口监视器里看到乱码然后意识到波特率设错了的大二学生。因为它的设计逻辑是“错误前置”:ErrorLog模块不是等你崩溃了才记录,而是在每次串口读取前就启动超时计时器,一旦50ms没收到完整帧,立刻写入“[2024-03-15 14:22:03] SERIAL_READ_FAIL: expected 12 bytes, got 3”,连时间戳都精确到秒——这比任何教材里的“检查接线”四个字都管用。所以别把它当下载包,当成一个已经帮你踩过所有坑、把解决方案贴在对应位置的实体工作台。

2. 整体架构与方案选型:为什么是Teensy+Arduino双平台,而不是单片机或树莓派?

这套开发包最常被问的问题是:“既然有Teensy,为什么还要留Arduino固件?”答案藏在硬件层的真实约束里,而不是技术参数表的纸面优势上。我们先拆解AR3的底层控制需求:六路舵机需要独立PWM输出(每路频率≥50Hz,占空比精度需达0.5°),同时要处理来自PC的串口指令(协议为ASCII文本帧,如“MOVE Q0=15.2 Q1=-23.7 Q2=45.0”),还要实时采集电位器反馈(用于关节限位保护)、监控电源电压(防止舵机堵转烧毁)。这些任务对控制器提出三个硬性要求:确定性响应、低延迟通信、外设资源冗余

Teensy 3.2(开发包中ARCS_teensy_sketch.ino默认目标)胜在确定性。它基于ARM Cortex-M4内核,主频72MHz,自带硬件PWM模块(FlexPWM),6路独立通道可同步刷新,误差<1μs。更重要的是其USB堆栈——当ARCS.exe通过USB虚拟串口发送指令时,Teensy的USB ISR能在200μs内完成数据包解析并触发运动控制中断,而Arduino Nano(ATmega328P,16MHz)依赖软件模拟USB,实际响应延迟常达8~12ms,导致快速连续指令(如手柄摇杆微调)出现丢帧。但Teensy的短板是调试门槛:没有板载LED指示灯,无法直观判断USB枚举状态;烧录需按住按钮进入Bootloader模式,新手常因松手过早导致烧录失败。这时Arduino固件的价值就凸显了——它不是备胎,而是教学阶梯。Nano的引脚定义与面包板生态完全兼容,D2-D7六个数字口直接接舵机信号线,无需电平转换;串口监视器(Serial Monitor)能实时打印DH逆解中间变量(如“IK_SOLVED: theta1=-12.3°, theta2=45.6°”),让学生亲眼看到输入坐标如何一步步分解为各关节角度。更关键的是,Arduino固件里刻意保留了“慢速模式”开关(#define SLOW_MODE 1),此时所有运动速度降为1/4,配合Serial.print()输出,你能清晰观察到PID调节过程:舵机从目标角度开始震荡→超调→回稳→最终停在±0.3°误差内。

双平台设计的本质,是把“可靠性”和“可理解性”解耦。Teensy负责生产环境下的稳定运行(课程实验验收、毕业设计演示),Arduino负责学习环境下的透明调试(课堂讲解、课后复现)。这种分离在资源包目录结构中也有体现:ARCS_teensy_sketch文件夹下只有.ino主文件和必要的库引用,而Arduino固件目录里额外包含debug_output.h头文件,里面定义了20多个DEBUG_PRINT宏,覆盖从串口初始化、校准加载、指令解析到PWM输出的全链路日志。比如当你在Arduino固件中启用DEBUG_PRINT_MOTION,串口监视器会输出:

[DEBUG] CMD_PARSE: 'MOVE Q0=15.2 Q1=-23.7' → parsed to q0=15.20, q1=-23.70 [DEBUG] IK_CALC: x=120.5mm y=-85.3mm z=210.0mm → theta0=-15.2°, theta1=23.7° [DEBUG] PWM_WRITE: ch0=1520us (q0), ch1=1763us (q1)

这种颗粒度的日志,在Teensy固件中是被刻意精简的——因为USB虚拟串口带宽有限,高频日志会挤占运动控制指令通道。所以你看,选型不是比参数,而是比场景:Teensy的72MHz主频解决的是“能不能动”,Arduino的16MHz主频解决的是“为什么这样动”。

3. 核心细节解析:校准参数、接线逻辑与ARCS软件交互机制

校准不是配置,而是重建坐标系。AR3的default calibration values.jpg里列出的12个数值,表面看是DH参数(d1, a1, α1…),实则对应三个物理层级的修正:机械装配误差、传感器零点漂移、运动学模型简化偏差。以q0关节为例,图纸标称旋转中心到基座平面距离为d1=150mm,但实际装配中铝支架螺纹孔加工公差±0.15mm、舵机轴心与齿轮箱同心度偏差±0.08mm,叠加后真实d1可能为150.23mm。ARbot.cal文件中d1 = 150.23这一行,就是用激光测距仪实测基座到第一关节旋转轴心距离后填入的。同理,q0_offset = -2.1表示当舵机信号为1500μs(中位)时,机械臂实际姿态并非理论零位,需向负方向补偿2.1°才能对齐。这些数值绝非凭空设定,而是通过“三点法校准”获得:先固定其他五轴,仅让q0转动,用游标卡尺测量末端执行器在x-z平面的轨迹圆心,反推旋转轴心偏移量;再用倾角仪测量q0中位时末端姿态角,计算offset。整个过程在README.md的“Calibration Procedure”章节有分步图示,但关键细节藏在IMG_20190930_183517340.jpg里——照片中游标卡尺的副尺读数被红圈标出,旁边手写备注“Δx=0.17mm → d1_adj = +0.17”。

接线逻辑的魔鬼在细节。AR3采用“舵机直驱+电位器反馈”架构,每路舵机信号线(黄色)接控制器PWM输出,电源线(红色/黑色)并联至外部5V/3A电源,而电位器(蓝色三线)的VCC/GND接电源,信号线(中间线)接控制器模拟输入口。这里有个易错点:IMG_20190930系列接线图中,q3关节的电位器信号线被特意用绿色胶布缠绕,因为该关节电位器阻值为10kΩ(其他为5kΩ),若接错模拟口参考电压,ADC读数会整体偏移。更隐蔽的是display setting.jpg揭示的UI配置逻辑:ARCS.exe的“Display Settings”窗口里,“Joint Angle Range”设为-180°~+180°,但实际舵机物理限位仅±135°。这是因为软件层做了安全冗余——当用户拖动滑块至±150°时,界面会弹出警告框,而真正发送给舵机的指令已自动钳位至±135°。这种软硬协同设计,在ARCS_teensy_sketch.ino的motion_control.cpp里有对应实现:

// 舵机指令钳位(单位:度) float clamp_angle(int joint_id, float target) { const float limits[6][2] = { {-135.0, 135.0}, // q0 {-120.0, 120.0}, // q1 {-135.0, 135.0}, // q2 {-90.0, 90.0 }, // q3 (电位器特殊限位) {-180.0, 180.0}, // q4 {-180.0, 180.0} // q5 }; return constrain(target, limits[joint_id][0], limits[joint_id][1]); }

ARCS软件与固件的通信协议是ASCII文本帧,而非二进制,这是为教学可读性妥协的设计。一帧典型指令MOVE Q0=15.2 Q1=-23.7 Q2=45.0 Q3=12.5 Q4=0.0 Q5=0.0共58字符,固件解析时先用strtok()按空格分割,再用strstr()匹配”Q0=”等关键字,最后atof()转浮点。这种解析方式虽慢于二进制协议,但好处是你可以用任意串口工具(如Putty)手动发送指令调试,无需专用上位机。ErrorLog模块正是利用此特性,在解析失败时直接记录原始接收缓冲区内容,例如:

[2024-03-15 14:22:03] PARSE_ERROR: raw_buffer='MOVE Q0=15.2 Q1=-23.7 Q2=45.0 Q3=12.5' → missing Q4/Q5 fields, using default 0.0

这种“失败即文档”的设计,让错误本身成为学习线索。

4. 实操全流程:从烧录固件到手柄操控的完整链路拆解

现在我们把开发包变成一台能动的机械臂。整个流程分为四个不可跳过的阶段:环境准备→固件烧录→硬件联调→软件操控,每个阶段都有必须跨过的“物理门槛”。

4.1 环境准备:避开IDE版本陷阱

Teensy固件必须用Arduino IDE 1.6.12(非最新版!)。原因在于Teensyduino 1.23插件(开发包指定版本)与高版本IDE的USB CDC驱动存在兼容性问题。实测中,IDE 1.8.19烧录后,Windows设备管理器显示“Teensy USB Serial”但ARCS.exe无法打开串口,错误日志写“OPEN_PORT_FAIL: Access is denied”。解决方案是彻底卸载高版本IDE,从https://downloads.arduino.cc/arduino-1.6.12-windows.exe下载旧版,安装时勾选“Install USB drivers”。Arduino固件则推荐IDE 1.8.5,因其Serial Monitor对ATmega328P的缓冲区管理更稳定。安装后,在“文件→首选项”中粘贴开发包提供的附加开发板管理器URL(见README.md),添加Teensy和Arduino AVR支持。

4.2 固件烧录:Teensy的“黄金3秒”与Arduino的“心跳灯”

Teensy烧录的关键是时机。将Teensy 3.2通过Micro-USB线接入电脑,按下板载按钮不放,此时LED应熄灭(进入Bootloader模式),立即在IDE中点击上传。松手时机必须在IDE显示“Compiling sketch…”之后、“Uploading to I/O board…”之前——约3秒窗口期。错过则LED常亮,IDE报错“Timed out waiting for upload port”。成功标志是IDE底部状态栏显示“Done uploading”,且设备管理器中出现“Teensy USB Serial (COMx)”。Arduino烧录更简单:选择“Arduino Nano”板型、“ATmega328P (Old Bootloader)”处理器,端口选对COM口,点击上传。成功后板载LED会以1Hz频率闪烁,这是固件内置的“心跳检测”——每秒调用一次digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)),证明主循环正常运行。

4.3 硬件联调:用万用表验证三组电压

烧录完成后,不急着通电舵机,先做三组电压测量:
1.舵机电源:将万用表调至DC 20V档,黑表笔接地(GND),红表笔测外部电源输出端,应为4.8~5.2V。低于4.8V会导致舵机力矩不足,高于5.2V可能烧毁。
2.控制器逻辑电平:测Teensy的3.3V引脚(非5V!),应为3.3±0.1V。若用5V电源给Teensy供电,此处电压异常预示稳压芯片故障。
3.电位器反馈电压:任选一个关节(如q1),黑表笔接电位器GND线,红表笔测信号线,缓慢转动关节,电压应在0.2~4.8V间线性变化。若全程0V或5V,说明电位器断路或短路。

完成电压验证后,才接入舵机。注意:AR3的MG996R舵机工作电流峰值达2A,务必使用独立电源,严禁从Teensy或Arduino的5V引脚取电——否则瞬间电流会烧毁板载稳压器。接线顺序严格按IMG_20190930_183426006.jpg:舵机信号线(黄)→控制器PWM口,电源红线→外部电源+,黑线→外部电源-,电位器VCC→外部电源+,GND→外部电源-,信号线→控制器A0-A5。

4.4 软件操控:Xbox手柄的映射逻辑与安全机制

ARCS.exe启动后,首先进入“Settings”窗口配置串口。关键设置有三处:1)Port选择正确的COM号(Teensy为“Teensy USB Serial”,Arduino为“Arduino Nano”);2)Baud Rate必须为115200(固件硬编码,改则通信失败);3)“Enable Safety Limits”必须勾选,否则手柄摇杆满行程会触发舵机硬限位撞击。Xbox手柄映射遵循“右手笛卡尔,左手关节”原则:右摇杆XY轴控制末端执行器在水平面(x,y)移动,右扳机控制z轴升降;左摇杆XY轴直接映射q0/q1关节角度,左扳机控制q2。这种设计源于人体工学——右手更擅长空间定位,左手更擅长精细角度调节。实际操作中,你会发现按住右扳机的同时推动右摇杆,末端会沿z轴平稳升降,这是因为ARCS.exe内部实现了速度前馈补偿:当z轴指令变化率>5mm/s时,自动降低x/y轴运动增益,防止末端抖动。这个逻辑在ARCS源码的motion_engine.cpp中有注释说明,但开发包未提供源码,所以你只能通过现象反推——这正是实操学习的价值:从行为倒推设计意图。

5. 常见问题与排查技巧实录:ErrorLog日志解读与物理级排障

ErrorLog不是摆设,它是你的第一诊断助手。开发包中的ErrorLog.txt文件按日期分卷(如ErrorLog_20240315.txt),每条记录包含时间戳、错误类型、上下文描述。以下是实操中高频出现的5类错误及对应排障路径:

错误类型ErrorLog示例物理根源排查步骤解决方案
SERIAL_TIMEOUT[2024-03-15 14:22:03] SERIAL_TIMEOUT: no response from controller控制器未运行或USB连接中断1. 检查设备管理器中COM口是否存在
2. 测Teensy 3.3V引脚电压
3. 观察板载LED是否呼吸闪烁
重新烧录固件;更换USB线(劣质线缆导致USB枚举失败)
PARSE_ERROR[2024-03-15 14:25:11] PARSE_ERROR: raw_buffer='MOVE Q0=15.2 Q1=-23.7' → missing Q4/Q5 fieldsARCS.exe发送指令格式错误1. 在串口监视器中发送HELP指令
2. 检查ARCS.exe设置中“Protocol Version”是否为v2.1
升级ARCS.exe至开发包同版本;禁用第三方串口劫持软件
PWM_OVERRUN[2024-03-15 14:30:22] PWM_OVERRUN: ch3 pulse=2150us > max=2000usq3关节电位器反馈失效,舵机失控1. 断电,用万用表测q3电位器信号线电压
2. 手动转动q3关节,观察电压是否变化
更换q3电位器(10kΩ规格);检查电位器焊接点虚焊
CALIB_LOAD_FAIL[2024-03-15 14:35:05] CALIB_LOAD_FAIL: file ARbot.cal not found in C:\ARCS\config\校准文件路径错误1. 确认ARCS.exe所在目录下是否有config文件夹
2. 检查ARbot.cal文件编码是否为UTF-8无BOM
将ARbot.cal复制到ARCS.exe同级目录的config子文件夹;用Notepad++另存为UTF-8编码
JOINT_LIMIT_EXCEED[2024-03-15 14:40:18] JOINT_LIMIT_EXCEED: q1=-125.3° < min=-120.0°机械装配导致关节实际限位小于软件设定1. 断电,手动推动q1关节至极限位置
2. 用角度尺测量实际角度
修改ARbot.cal中q1_min = -125.0;在ARCS.exe中调整“Joint Angle Range”

物理级排障的核心是“分段隔离”。例如遇到舵机抖动,不要一上来就怀疑PID参数,先做三步隔离测试:1)拔掉所有电位器线,仅保留舵机信号线和电源,发送固定角度指令(如MOVE Q0=0.0),若仍抖动则是舵机或电源问题;2)恢复电位器线,但断开ARCS.exe,用串口监视器发送指令,若抖动消失则是软件通信干扰;3)以上均正常,则用示波器测PWM信号波形——正常应为50Hz方波,高电平宽度1000~2000μs。曾有学生发现抖动源于USB线与舵机电源线捆扎过近,电磁干扰导致PWM波形畸变,分开走线后问题消失。这种经验,永远比参数表珍贵。

6. 进阶实践建议:从“让它动”到“理解它为何动”

当你已能让AR3按指令完成基本动作,下一步不是追求更复杂的轨迹,而是拆解每一个动作背后的数学与物理。开发包提供了绝佳的进阶入口:AR3 Robot 手册.pdf里的DH参数表、Structural Components文件夹中的铝型材尺寸图、以及ARCS_teensy_sketch.ino中未注释的ik_solver.cpp文件。

第一个建议是重算DH参数。手册中给出的d1=150mm、a2=200mm等是理论值,但用游标卡尺实测铝支架实物(Structural Components - Nominal Size文件夹中的STEP模型可导入SolidWorks),你会发现a2实际为200.3mm(因CNC加工余量)。将这个新数值代入ik_solver.cpp的逆解公式,对比原结果差异。你会直观感受到:0.3mm的臂长误差,在末端1m处会放大为±1.7°的角度偏差——这就是为什么校准必须实测。

第二个建议是可视化运动学。ARCS.exe界面右下角有隐藏功能:按Ctrl+Shift+V,会弹出“Kinematics Debug”窗口,实时显示当前各关节角度、末端坐标(x,y,z)、雅可比矩阵行列式值。当行列式趋近于0时(如q2≈0°),窗口背景变红,提示“SINGULARITY DETECTED”。此时尝试让末端沿z轴移动,会发现q1/q2剧烈震荡——这正是机械臂的奇异位形。带着这个现象去重读手册第7章“工作空间分析”,理论瞬间变得血肉丰满。

第三个建议是改造通信协议。现有ASCII协议便于调试,但效率低。尝试在ARCS_teensy_sketch.ino中新增二进制协议支持:定义帧头0xAA、长度字节、6个关节角度(各2字节整数,单位0.1°)、CRC校验。修改ARCS.exe的发送模块(需反编译或联系作者获取源码),对比两种协议下100次指令的平均延迟。你会明白:为什么工业机器人普遍采用EtherCAT等实时协议——不是技术炫技,而是物理定律决定的必然选择。

最后分享一个小技巧:在ARCS.exe的“Playback”功能中,录制一段手柄操作轨迹后,点击“Export CSV”,会生成包含时间戳和各关节角度的文本文件。用Python的matplotlib绘图,横轴时间,纵轴角度,六条曲线并列显示。观察q0-q5的相位关系,你会发现:当末端画圆时,q0匀速旋转,q1/q2呈正弦耦合,q4/q5负责姿态调整——运动学不再是抽象公式,而是屏幕上跳动的彩色线条。这才是实操开发包的终极价值:它把教科书里的符号,变成了你指尖可触、眼中可见、脑中可思的活体知识。

本文还有配套的精品资源,点击获取

简介:这个开发包专为动手调试AR3六轴机械臂设计,开箱即用。包含Windows平台下的ARCS.exe主控程序,支持Xbox手柄实时操控;提供Teensy和Arduino两套完整可编译固件源码(.ino格式),均已通过实际烧录与运动联调验证;内置预设校准文件ARbot.cal,配合default calibration values.jpg等多张实拍图,清晰展示默认参数设置逻辑;还有IMG_20190930系列接线图、display setting.jpg显示配置参考、CAD render 4.jpg结构示意,以及play-icon.gif、stop-icon.gif等UI资源和AR.ico图标。错误日志模块ErrorLog可记录运行异常,便于排查通信或驱动问题。所有内容组织在扁平化目录中,无嵌套冗余,README.md文档说明详细,适合高校机器人课程实验、毕业设计搭建,也适合自学六轴逆解算法、串口上下位机交互、舵机PWM控制等核心环节。


本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/6 8:34:55

计算机毕业设计之基于Android的智能健康管理系统的设计与实现

为解决传统健康管理方式中信息获取零散、用户难以系统掌握自身健康状况及高效反馈健康诉求的不足&#xff0c;助力大众提升健康管理效率&#xff0c;本研究运用 Android 开发技术&#xff0c;采用 Java 编程语言&#xff0c;以 MySQL 作为数据库&#xff0c;开发设计了基于 And…

作者头像 李华
网站建设 2026/6/6 8:30:01

计算机小程序毕设实战-基于Android的智慧旅游平台设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/6 8:29:29

智慧树自动刷课插件:三步实现高效自动化学习体验

智慧树自动刷课插件&#xff1a;三步实现高效自动化学习体验 【免费下载链接】zhihuishu 智慧树刷课插件&#xff0c;自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台冗长的在线课程而烦恼吗&#xff1f;智慧…

作者头像 李华
网站建设 2026/6/6 8:28:36

Windows Cleaner终极指南:彻底解决C盘爆红的免费专业方案

Windows Cleaner终极指南&#xff1a;彻底解决C盘爆红的免费专业方案 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 还在为Windows系统C盘空间不足而烦恼吗&…

作者头像 李华