0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MATLAB中的運(yùn)動(dòng)學(xué)機(jī)械臂算法

MATLAB ? 來(lái)源:djl ? 作者:MathWorks ? 2019-09-11 15:08 ? 次閱讀

MATLAB 在 2016 年就推出了 Robotics System Toolbox(RST),其中有很多關(guān)于機(jī)械臂方面的算法。而且隨著客戶(hù)需求的增加,也在加入一些新的功能。為了試圖讓讀者了解更多 RST 在機(jī)械臂方面的支持,讓我們來(lái)看一下機(jī)械臂方面的算法概貌。

MATLAB中的運(yùn)動(dòng)學(xué)機(jī)械臂算法

這些名詞聽(tīng)起來(lái)都比較深?yuàn)W,但是在機(jī)械臂的世界里,這些都非常有用。

讓我們看一個(gè)簡(jiǎn)單的例子。下圖是一個(gè)簡(jiǎn)單的機(jī)械臂示意:機(jī)械臂的 end-effector(末端機(jī)構(gòu))受到 4 個(gè)旋轉(zhuǎn)關(guān)節(jié)和 3 個(gè)連桿的共同作用,可以到達(dá)不同的作業(yè)地點(diǎn),也可以處于不同的旋轉(zhuǎn)角度。

MATLAB中的運(yùn)動(dòng)學(xué)機(jī)械臂算法

為了分析 end-effector 的具體位置和角度,我們看到:

它相對(duì)底座開(kāi)始,做了 4 次旋轉(zhuǎn)(rotation)和 3 次轉(zhuǎn)置(translation)。那這 4 此旋轉(zhuǎn)和 3 此轉(zhuǎn)置的總和,我們可以用一個(gè)矩陣來(lái)表示:

MATLAB中的運(yùn)動(dòng)學(xué)機(jī)械臂算法

這個(gè)矩陣也叫 Homogeneous Transformation(齊次變換)。

有時(shí)候,對(duì)于旋轉(zhuǎn)會(huì)有不同的表達(dá)方式,例如歐拉角(Euler Angles)、四元素(Quaternion)、旋轉(zhuǎn)矩陣(Rotation Matrix)等等;表達(dá)轉(zhuǎn)置,也可使用轉(zhuǎn)置向量(Translation Vector)。有了 RST 這些都可以輕松通過(guò)不同的函數(shù)進(jìn)行互換。下圖為具體的函數(shù)列表:

MATLAB中的運(yùn)動(dòng)學(xué)機(jī)械臂算法

例如:將歐拉角轉(zhuǎn)為Homogeneous Transformation:

>> eul = [0 pi/2 0];

tformZYX = eul2tform(eul)

tformZYX =

0.0000 0 1.0000 0

0 1.0000 0 0

-1.0000 0 0.0000 0

0 0 0 1.0000

由于機(jī)械臂的連桿長(zhǎng)度是已知的,只要確定了各個(gè)關(guān)節(jié)轉(zhuǎn)動(dòng)的角度,我們就可以確定 end-effector 的最終位置和方向。這個(gè)我們稱(chēng)之為 forward kinematics(正向運(yùn)動(dòng)學(xué))。反過(guò)來(lái),如果我們知道了 end-effector 的最終位置和方向,我們也可以推導(dǎo)各個(gè)關(guān)節(jié)的角度,這個(gè)我們稱(chēng)之為 inverse kinematics(反向運(yùn)動(dòng)學(xué))。

機(jī)械臂關(guān)注的主要是反向運(yùn)動(dòng)學(xué)。

如果 end-effector,需要走一段比較長(zhǎng)的路程(path),從甲點(diǎn)運(yùn)行到乙點(diǎn)。我們?yōu)榱耸沟脵C(jī)械臂的 end-effector 的路徑平滑,需要規(guī)劃一系列的路徑點(diǎn)(waypoints),這個(gè)我們叫做路徑規(guī)劃(trajectory planning)或者叫運(yùn)動(dòng)插補(bǔ)(interpolation)。例如下圖,藍(lán)色的曲線叫 path,而各個(gè)時(shí)間經(jīng)過(guò)的路徑點(diǎn)叫 trajectory。如何設(shè)計(jì)經(jīng)過(guò)這些路徑點(diǎn)的 trajectory,比較顯而易見(jiàn)的指標(biāo)是 “平滑” 。那什么是“平滑” ,它可能意味著 “速度連續(xù)” 、“加速度連續(xù)” 、 “沒(méi)有頓挫” 等等。這些指標(biāo),都會(huì)轉(zhuǎn)化成數(shù)學(xué)算法。 RST 也會(huì)有相應(yīng)的算法支持,作者將另外寫(xiě)文章描述。

MATLAB中的運(yùn)動(dòng)學(xué)機(jī)械臂算法

機(jī)械臂的關(guān)節(jié)位置我們一般用電機(jī)來(lái)驅(qū)動(dòng)。電機(jī)通過(guò)產(chǎn)生力矩來(lái)轉(zhuǎn)動(dòng)機(jī)械裝置,驅(qū)動(dòng)機(jī)械臂。不同場(chǎng)合或者時(shí)機(jī),需要的力矩不盡相同。

例如,機(jī)械臂水平放置的時(shí)候需要關(guān)節(jié)電機(jī)產(chǎn)生力矩來(lái)抵消地球引力;當(dāng)機(jī)械臂需要迅速移動(dòng)的時(shí)候,需要的力矩比緩慢移動(dòng)的要大,當(dāng)機(jī)械臂彎曲或者平展時(shí)候,重心發(fā)生變化,由于慣量(I = mr2)的不同,需要的關(guān)節(jié)力矩也不相同;另外,在很多場(chǎng)合,機(jī)械臂需要和人交互(collaborative robots),在碰到人體的時(shí)候,需要做出安全的保護(hù)動(dòng)作,并對(duì)力矩進(jìn)行調(diào)整。

這些需要考慮力矩的因素,我們稱(chēng)之為動(dòng)力學(xué)(dynamics)。和運(yùn)動(dòng)學(xué)類(lèi)似,動(dòng)力學(xué)分為正向動(dòng)力學(xué)(forward dynamics)和反向運(yùn)動(dòng)學(xué)(inverse dynamics)。 RST 里支持兩種都有相應(yīng)的 MATLAB 函數(shù)和Simulink block。作者也會(huì)另外寫(xiě)文章詳細(xì)介紹 RST 關(guān)于動(dòng)力學(xué)的部分。

運(yùn)動(dòng)學(xué)

1. Rigid Body Tree (剛體樹(shù))

我們說(shuō)研究運(yùn)動(dòng)學(xué)(主要是反向運(yùn)動(dòng)學(xué)),就是研究 end-effector 的位置改變會(huì)帶動(dòng)各個(gè)關(guān)節(jié)的角度如何改變。RST 用 Rigid Body Tree 這樣一個(gè)對(duì)象,在這個(gè)對(duì)象上可以使運(yùn)動(dòng)學(xué)設(shè)計(jì)易用且可視化。下圖展示了機(jī)械臂的剛體樹(shù)樣例,可以在 MATLAB 界面中展示各個(gè) body 的詳細(xì)參數(shù)。

MATLAB中的運(yùn)動(dòng)學(xué)機(jī)械臂算法

MATLAB中的運(yùn)動(dòng)學(xué)機(jī)械臂算法

一般來(lái)說(shuō),Rigid Body Tree 都是直接從機(jī)械臂的 CAD 文件或者 URDF(Unified Robot Description Format)文件導(dǎo)入。不過(guò),也支持每個(gè) body 的逐步添加。

我們隨便敲幾行 MATLAB 命令:

robot = importrobot('iiwa14.urdf');

show(robot);

MATLAB中的運(yùn)動(dòng)學(xué)機(jī)械臂算法

讓我們來(lái)改變一下機(jī)器人的各個(gè)關(guān)節(jié)角度(configuration),比如讓MATLAB自動(dòng)給一個(gè)隨機(jī)角度配置,再看一下結(jié)果。顯然各個(gè)角度發(fā)生了變化。

q=randomConfiguration(robot);

show(robot,q);

MATLAB中的運(yùn)動(dòng)學(xué)機(jī)械臂算法

我們看看這個(gè)機(jī)械臂最末端的 end-effector 是什么?

showdetails(robot)

MATLAB中的運(yùn)動(dòng)學(xué)機(jī)械臂算法

我們?cè)倏纯?end-effector 相對(duì)機(jī)器人底座(base)的 Homogeneous Transformation(相對(duì)位置和角度)。

MATLAB中的運(yùn)動(dòng)學(xué)機(jī)械臂算法

2. 反向運(yùn)動(dòng)學(xué)算法

反向運(yùn)動(dòng)學(xué)算法求解分兩種:一種是分析解法(Analytic solutions);一種是數(shù)值解法(Numerical solutions)。

MATLAB 用的是數(shù)值解法,可以理解為迭代尋優(yōu),或者近似解。

MATLAB 里面的反向運(yùn)動(dòng)學(xué)求解器(solver)有兩個(gè):

Inverse Kinematics

Generalized Inverse Kinematics

兩者的區(qū)別是,后者比前者多了很多限制(constraints) 。例如end-effector的方向限制、機(jī)械臂各個(gè)關(guān)節(jié)的角度限制、位置限制等等。

我們先看一下比較簡(jiǎn)單的 Inverse Kinematics:

MATLAB中的運(yùn)動(dòng)學(xué)機(jī)械臂算法

這是一個(gè) 6 軸機(jī)器人,end-effector 是 L6。

MATLAB中的運(yùn)動(dòng)學(xué)機(jī)械臂算法

我們想要的最終結(jié)果就是下圖:

tform 是 L6 相對(duì) base 的位置和方向(合稱(chēng) pose)。

MATLAB中的運(yùn)動(dòng)學(xué)機(jī)械臂算法

下面的 MATLAB 代碼是計(jì)算出最終的各個(gè)關(guān)節(jié)的角度(configSoln),由于是用了迭代的數(shù)值解法,weights 為權(quán)重,initialguess 為給出一個(gè)初始估計(jì)。

MATLAB中的運(yùn)動(dòng)學(xué)機(jī)械臂算法

我們?cè)倏匆幌卤容^復(fù)雜的 Generalized Inverse Kinematics:

下面的代碼,做了這么幾件事情:

導(dǎo)入了一個(gè) 7 自由度的 rethink 機(jī)械臂— sawyer

設(shè)定反向運(yùn)動(dòng)學(xué)的求解限制— 例如機(jī)械臂的 end-effector 永遠(yuǎn)指向地面的一個(gè)物體

對(duì)反向運(yùn)動(dòng)學(xué)進(jìn)行求解

MATLAB中的運(yùn)動(dòng)學(xué)機(jī)械臂算法

如果我們加一段 end-effector 位置變化后,調(diào)用這段代碼的動(dòng)畫(huà)效果,你會(huì)發(fā)現(xiàn) end-effector 的指向沒(méi)有變化 – 帶限制的反向動(dòng)力學(xué)求解成功了:

3. Simulink 示例

在安裝 RST 之后,Simulink 的 library 里就會(huì)出現(xiàn)幾個(gè)和機(jī)械臂(manipulator)相關(guān)的 block:

其中 Inverse Kinematics 就是反向運(yùn)動(dòng)學(xué) block,其他的一些模塊顧名思義和動(dòng)力學(xué)有關(guān),在下一篇文章我會(huì)重點(diǎn)介紹。

MATLAB中的運(yùn)動(dòng)學(xué)機(jī)械臂算法

在 MATLAB Central File Exchange 上搜索 “Designing Robot Manipulator Algorithms”,這是一個(gè)基于 Simulink 和 Stateflow 的例子。我們先看一下運(yùn)行結(jié)果:

這個(gè)例子展現(xiàn)了機(jī)械臂的 end-effector 抓了紅色物體,沿著規(guī)劃好的紫色 trajectory,進(jìn)行運(yùn)動(dòng)。

下圖的 stateflow 狀態(tài)機(jī)是一個(gè) trajectory tracking 的算法,它的作用是確保 end-effctor 沿著預(yù)設(shè)的 trajectory 運(yùn)行。

MATLAB中的運(yùn)動(dòng)學(xué)機(jī)械臂算法

狀態(tài)機(jī)下面的是運(yùn)動(dòng)控制部分和環(huán)境和物理模型。運(yùn)動(dòng)控制很簡(jiǎn)單 – 直接計(jì)算反向運(yùn)動(dòng)學(xué),將算好的關(guān)節(jié)角度交給物理模型去展現(xiàn)。物理模型構(gòu)建也很簡(jiǎn)單—— 用 SimScape 中的 SimMultibody 直接導(dǎo)入機(jī)械臂的 URDF 文件即可。

MATLAB中的運(yùn)動(dòng)學(xué)機(jī)械臂算法

這里可以看到物理模型并沒(méi)有包含伺服電機(jī),而是“透明傳輸”— 反向運(yùn)動(dòng)學(xué)的結(jié)果直接發(fā)給了機(jī)械模型去展現(xiàn)。實(shí)際上真實(shí)的運(yùn)動(dòng)控制器會(huì)將位置、速度、力矩指令通過(guò)伺服總線(例如 EtherCAT)發(fā)給每個(gè)關(guān)節(jié)的電機(jī)去執(zhí)行,電機(jī)通過(guò)減速器去帶動(dòng)機(jī)械結(jié)構(gòu)。例如,一個(gè) 6 軸機(jī)械臂會(huì)有 6 個(gè)伺服電機(jī),運(yùn)動(dòng)控制器會(huì)將運(yùn)動(dòng)過(guò)程解析為 6 個(gè)電機(jī)可以理解的位置、速度、力矩指令。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16423

    瀏覽量

    178878
  • 機(jī)器人
    +關(guān)注

    關(guān)注

    211

    文章

    28582

    瀏覽量

    207814
  • 運(yùn)動(dòng)學(xué)

    關(guān)注

    0

    文章

    8

    瀏覽量

    7142
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    深度解析!RK3568 加持機(jī)械是如何實(shí)現(xiàn)顏色識(shí)別與抓取的?

    ;2、掌握機(jī)械識(shí)別顏色抓取積木的實(shí)現(xiàn)方法。三、實(shí)驗(yàn)原理顏色識(shí)別抓取積木功能:實(shí)現(xiàn)識(shí)別出不同顏色的積木,機(jī)械夾取后并放在相應(yīng)的位置
    的頭像 發(fā)表于 01-15 08:07 ?73次閱讀
    深度解析!RK3568 加持<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>是如何實(shí)現(xiàn)顏色識(shí)別與抓取的?

    RK3568國(guó)產(chǎn)實(shí)驗(yàn)箱+人工智能機(jī)械:跳舞、疊羅漢、夾方塊、積木搬運(yùn)案例全解!

    基于語(yǔ)音控制實(shí)現(xiàn)機(jī)械特定動(dòng)作的方法。三、實(shí)驗(yàn)原理程序功能通過(guò)語(yǔ)音控制機(jī)械實(shí)現(xiàn)特定復(fù)雜動(dòng)作:機(jī)械
    的頭像 發(fā)表于 12-12 19:01 ?390次閱讀
    RK3568國(guó)產(chǎn)實(shí)驗(yàn)箱+人工智能<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>:跳舞、疊羅漢、夾方塊、積木搬運(yùn)案例全解!

    機(jī)械的高效運(yùn)作,連接器起關(guān)鍵作用

    了眾多危險(xiǎn)、重復(fù)的工作。 機(jī)械的工作原理 ? ? ?機(jī)械運(yùn)動(dòng)控制是通過(guò)控制電機(jī)和傳動(dòng)裝置來(lái)實(shí)現(xiàn)的。控制電機(jī)的作用是將電能轉(zhuǎn)換為
    的頭像 發(fā)表于 11-11 18:07 ?297次閱讀

    【原創(chuàng)】 drawbot 平面機(jī)械scara寫(xiě)字畫(huà)畫(huà)機(jī)器人DIY教程貼

    /1CdGoDr8WFIMfic-iPf5Znw 提取碼:m1ov 項(xiàng)目簡(jiǎn)介:桌面級(jí)scara機(jī)械,運(yùn)動(dòng)機(jī)構(gòu)為兩個(gè)42步進(jìn)電機(jī)和一個(gè)9g舵機(jī),控制板為mega 2560 和ramps 1.4,其他部件主要為3D打印件
    發(fā)表于 08-30 11:54

    OrangePi AIpro應(yīng)用:機(jī)械應(yīng)用開(kāi)發(fā)指南

    2024世界人工智能大會(huì)上,香橙派攜OrangePiAIpro20T在世博展覽館H1-A301展區(qū)亮相,給大家?guī)?lái)AI+互動(dòng)的沉浸式體驗(yàn)。其中,搭載OrangePiAIpro開(kāi)發(fā)板的智能機(jī)械吸引了
    的頭像 發(fā)表于 08-19 16:42 ?629次閱讀
    OrangePi AIpro應(yīng)用:<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>應(yīng)用開(kāi)發(fā)指南

    工業(yè)機(jī)器人和機(jī)械的設(shè)計(jì)、功能和應(yīng)用有哪些區(qū)別?

    自動(dòng)化設(shè)備,專(zhuān)門(mén)用于在工業(yè)生產(chǎn)線或其他工業(yè)環(huán)境執(zhí)行各種操作任務(wù)。它們通常具備多軸關(guān)節(jié)結(jié)構(gòu),能夠在三維空間內(nèi)自由移動(dòng),并搭載各種工具、夾具或傳感器來(lái)完成特定的任務(wù)。 工業(yè)機(jī)器人和機(jī)械都屬于自動(dòng)化設(shè)備,用于執(zhí)行
    的頭像 發(fā)表于 08-16 09:43 ?547次閱讀

    奧比光推出2.0版大模型機(jī)械

    近期,奧比光研發(fā)團(tuán)隊(duì)融合前沿多模態(tài)大模型技術(shù),推出最新2.0版大模型機(jī)械演示方案。新方案搭載公司最新深度相機(jī)Gemini 335L和Femto Bolt,能夠基于語(yǔ)音指令,自動(dòng)執(zhí)行沏茶、插花、滴
    的頭像 發(fā)表于 07-19 16:50 ?769次閱讀

    大象機(jī)器人開(kāi)源協(xié)作機(jī)械機(jī)械接入GPT4o大模型!

    本文已經(jīng)或者同濟(jì)子豪兄作者授權(quán)對(duì)文章進(jìn)行編輯和轉(zhuǎn)載 引言 隨著人工智能和機(jī)器人技術(shù)的快速發(fā)展,機(jī)械在工業(yè)、醫(yī)療和服務(wù)業(yè)等領(lǐng)域的應(yīng)用越來(lái)越廣泛。通過(guò)結(jié)合大模型和多模態(tài)AI,機(jī)械能夠?qū)?/div>
    的頭像 發(fā)表于 07-03 14:09 ?981次閱讀
    大象機(jī)器人開(kāi)源協(xié)作<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b><b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>接入GPT4o大模型!

    國(guó)產(chǎn)Cortex-A55人工智能教學(xué)實(shí)驗(yàn)箱_基于Python機(jī)械跳舞實(shí)驗(yàn)案例分享

    發(fā)行包管理,它也提供一些工具和庫(kù)用于獲取、建立、編寫(xiě)和執(zhí)行多機(jī)融合的程序。 機(jī)械通過(guò)ROS機(jī)器人操控系統(tǒng),簡(jiǎn)化了6自由度串行總線舵機(jī)復(fù)雜運(yùn)動(dòng)控制,可實(shí)現(xiàn)機(jī)械
    發(fā)表于 06-28 14:37

    干貨!國(guó)產(chǎn)Cortex-A55人工智能實(shí)驗(yàn)箱機(jī)械積木搬運(yùn)實(shí)驗(yàn)案例

    的順序疊起來(lái)放到中間灰色的方塊上。二、實(shí)驗(yàn)原理機(jī)械自由度機(jī)械手自由度,是指?jìng)魉蜋C(jī)構(gòu)機(jī)械手的運(yùn)動(dòng)靈活性。通常把傳送機(jī)構(gòu)的
    的頭像 發(fā)表于 06-27 08:32 ?926次閱讀
    干貨!國(guó)產(chǎn)Cortex-A55人工智能實(shí)驗(yàn)箱<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>積木搬運(yùn)實(shí)驗(yàn)案例

    基于六維力傳感器的機(jī)械自動(dòng)裝配應(yīng)用

    外部環(huán)境的關(guān)鍵裝置,六維力傳感器通常安裝于機(jī)器末端執(zhí)行器與機(jī)械之間,用于檢測(cè)作業(yè)的機(jī)器人與環(huán)境之間的多維交互力/力矩,并將交互力/力矩反饋給機(jī)器人力控制系統(tǒng),
    的頭像 發(fā)表于 06-06 13:49 ?836次閱讀
    基于六維力傳感器的<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>自動(dòng)裝配應(yīng)用

    自然語(yǔ)言控制機(jī)械:ChatGPT與機(jī)器人技術(shù)的融合創(chuàng)新(下)

    引言 在我們的上一篇文章,我們探索了如何將ChatGPT集成到myCobot 280機(jī)械臂中,實(shí)現(xiàn)了一個(gè)通過(guò)自然語(yǔ)言控制機(jī)械的系統(tǒng)。我們?cè)敿?xì)介紹了項(xiàng)目的動(dòng)機(jī)、使用的關(guān)鍵技術(shù)如Cha
    的頭像 發(fā)表于 04-11 15:54 ?950次閱讀
    自然語(yǔ)言控制<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>:ChatGPT與機(jī)器人技術(shù)的融合創(chuàng)新(下)

    機(jī)械技術(shù)的前沿探索:年度案例回顧!

    在過(guò)去的幾年里,機(jī)械技術(shù)經(jīng)歷了前所未有的發(fā)展,其應(yīng)用領(lǐng)域從傳統(tǒng)的制造業(yè)擴(kuò)展到了醫(yī)療、服務(wù)、物流等多個(gè)新興行業(yè)。這種跨界擴(kuò)展得益于科技的飛速進(jìn)步,尤其是在傳感器、控制系統(tǒng)和人工智能領(lǐng)域的突破。特別是
    的頭像 發(fā)表于 03-12 15:14 ?1185次閱讀
    <b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>技術(shù)的前沿探索:年度案例回顧!

    如何去提升機(jī)械的位置控制性能?

    1.背景介紹 機(jī)械的位置控制是機(jī)械最重要的功能。機(jī)械的位置控制精度也是研究者及工程師一直關(guān)
    的頭像 發(fā)表于 03-05 08:43 ?1063次閱讀
    如何去提升<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>的位置控制性能?

    【國(guó)產(chǎn)FPGA+OMAPL138開(kāi)發(fā)板體驗(yàn)】(原創(chuàng))2.手把手玩轉(zhuǎn)游戲機(jī)械

    : 提高機(jī)械的定位精度是一個(gè)涉及多個(gè)方面的復(fù)雜問(wèn)題。以下是一些建議,有助于進(jìn)一步提高機(jī)械的定位精度: 離線標(biāo)定與補(bǔ)償 關(guān)節(jié)參數(shù)標(biāo)定:對(duì)機(jī)械
    發(fā)表于 02-01 20:18