《ROS機(jī)器人操作系統(tǒng)基礎(chǔ)》 課件 項(xiàng)目5、6 話(huà)題通信機(jī)制的實(shí)現(xiàn)、服務(wù)通信機(jī)制的實(shí)現(xiàn)_第1頁(yè)
《ROS機(jī)器人操作系統(tǒng)基礎(chǔ)》 課件 項(xiàng)目5、6 話(huà)題通信機(jī)制的實(shí)現(xiàn)、服務(wù)通信機(jī)制的實(shí)現(xiàn)_第2頁(yè)
《ROS機(jī)器人操作系統(tǒng)基礎(chǔ)》 課件 項(xiàng)目5、6 話(huà)題通信機(jī)制的實(shí)現(xiàn)、服務(wù)通信機(jī)制的實(shí)現(xiàn)_第3頁(yè)
《ROS機(jī)器人操作系統(tǒng)基礎(chǔ)》 課件 項(xiàng)目5、6 話(huà)題通信機(jī)制的實(shí)現(xiàn)、服務(wù)通信機(jī)制的實(shí)現(xiàn)_第4頁(yè)
《ROS機(jī)器人操作系統(tǒng)基礎(chǔ)》 課件 項(xiàng)目5、6 話(huà)題通信機(jī)制的實(shí)現(xiàn)、服務(wù)通信機(jī)制的實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

任務(wù)一話(huà)題通信機(jī)制基礎(chǔ)概述01任務(wù)二使用話(huà)題通信機(jī)制實(shí)現(xiàn)節(jié)點(diǎn)通信02任務(wù)三使用話(huà)題通信機(jī)制控制小海龜移動(dòng)03146任務(wù)一

話(huà)題通信機(jī)制基礎(chǔ)概述1471.?掌握話(huà)題通信機(jī)制的原理和特點(diǎn)2.?了解話(huà)題通信機(jī)制的消息類(lèi)型3.?了解話(huà)題通信機(jī)制在機(jī)器人系統(tǒng)中的應(yīng)用任務(wù)目標(biāo)148一、話(huà)題通信機(jī)制的原理和特點(diǎn)項(xiàng)目二任務(wù)三已經(jīng)初步介紹了話(huà)題通信機(jī)制的基本原理。話(huà)題通信機(jī)制定義了一種發(fā)布/訂閱模式,在這種模式下,一個(gè)節(jié)點(diǎn)可以作為消息的發(fā)布者,將數(shù)據(jù)發(fā)布到特定的話(huà)題上;而其他節(jié)點(diǎn)可以作為訂閱者,通過(guò)訂閱相應(yīng)的話(huà)題來(lái)接收發(fā)布者發(fā)送的消息?;A(chǔ)知識(shí)149150在發(fā)布/訂閱模式中,發(fā)布者和訂閱者之間通過(guò)話(huà)題傳遞消息,發(fā)布者節(jié)點(diǎn)負(fù)責(zé)將消息發(fā)布到話(huà)題上,而無(wú)須了解訂閱該話(huà)題的節(jié)點(diǎn)的存在。這使發(fā)布者與訂閱者之間解耦(一種計(jì)算機(jī)科學(xué)中的設(shè)計(jì)原則,指的是減少模塊、組件或系統(tǒng)之間的依賴(lài)性,使它們能夠獨(dú)立地進(jìn)行修改、擴(kuò)展或替換,而不會(huì)對(duì)其他部分產(chǎn)生過(guò)多的影響),并允許節(jié)點(diǎn)之間進(jìn)行松散耦合的通信。由于話(huà)題通信機(jī)制為異步通信,因此對(duì)節(jié)點(diǎn)的啟動(dòng)順序沒(méi)有嚴(yán)格的要求。節(jié)點(diǎn)可以按照不同的順序啟動(dòng),而不會(huì)影響消息的傳遞。發(fā)布者和訂閱者之間的通信不需要實(shí)時(shí)連接,消息可以在發(fā)布時(shí)被緩存,直到訂閱者準(zhǔn)備好接收它們,這為節(jié)點(diǎn)之間的數(shù)據(jù)交流提供了靈活性和可靠性。二、話(huà)題通信機(jī)制的消息類(lèi)型話(huà)題通信可以支持多種消息類(lèi)型,包括字符串型、整型、浮點(diǎn)型、數(shù)組型等以及這些類(lèi)型組合而成的結(jié)構(gòu)體,且ROS允許用戶(hù)創(chuàng)建自定義的消息類(lèi)型。ROS提供了標(biāo)準(zhǔn)消息(std_msgs)以及常用消息類(lèi)型(包括geometry_msgs、sensor_msgs、nav_msgs等),用戶(hù)可以直接調(diào)用這些消息,ROS的消息類(lèi)型見(jiàn)下表。151152ROS的消息類(lèi)型153ROS的消息類(lèi)型三、話(huà)題通信機(jī)制在機(jī)器人系統(tǒng)中的應(yīng)用話(huà)題通信機(jī)制在機(jī)器人系統(tǒng)中有廣泛的應(yīng)用。例如,在自主移動(dòng)機(jī)器人系統(tǒng)中,攝像頭、激光雷達(dá)等感知節(jié)點(diǎn)將感知到的環(huán)境數(shù)據(jù)發(fā)布到相應(yīng)的話(huà)題上,導(dǎo)航節(jié)點(diǎn)通過(guò)訂閱這些話(huà)題,獲取環(huán)境數(shù)據(jù)并進(jìn)行路徑規(guī)劃、避障等操作。又如,在機(jī)器人控制系統(tǒng)中,機(jī)器人控制節(jié)點(diǎn)可以通過(guò)發(fā)布控制命令的話(huà)題,向執(zhí)行器節(jié)點(diǎn)發(fā)送控制指令,實(shí)現(xiàn)機(jī)器人的運(yùn)動(dòng)控制、姿態(tài)調(diào)整等功能。此外,多個(gè)機(jī)器人之間可以通過(guò)話(huà)題通信實(shí)現(xiàn)協(xié)作與協(xié)調(diào)。154任務(wù)二

使用話(huà)題通信機(jī)制實(shí)現(xiàn)節(jié)點(diǎn)通信1551.?掌握節(jié)點(diǎn)發(fā)布話(huà)題函數(shù)的用途和使用方法2.?掌握節(jié)點(diǎn)訂閱話(huà)題函數(shù)的用途和使用方法3.?能創(chuàng)建節(jié)點(diǎn)文件和節(jié)點(diǎn)程序并編寫(xiě)相應(yīng)的代碼,實(shí)現(xiàn)節(jié)點(diǎn)話(huà)題通信任務(wù)目標(biāo)156一、節(jié)點(diǎn)發(fā)布話(huà)題函數(shù)節(jié)點(diǎn)發(fā)布話(huà)題的方法非常簡(jiǎn)單,只需使用rospy.publisher()函數(shù)即可創(chuàng)建一個(gè)發(fā)布者?;A(chǔ)知識(shí)157創(chuàng)建發(fā)布者發(fā)布者創(chuàng)建完成后,使用publish()函數(shù)即可發(fā)布消息到話(huà)題中,代碼如圖所示。需要注意的是,發(fā)布的消息類(lèi)型需要與創(chuàng)建發(fā)布者時(shí)的消息類(lèi)型一致。創(chuàng)建發(fā)布者“pub”指定的消息類(lèi)型為字符串型,則使用publish()函數(shù)時(shí)也要用字符串型數(shù)據(jù)。158發(fā)布消息到話(huà)題二、節(jié)點(diǎn)訂閱話(huà)題函數(shù)訂閱話(huà)題時(shí)需要使用rospy.subscriber()函數(shù)創(chuàng)建一個(gè)訂閱者,由于接收到消息后需要處理消息,所以訂閱者應(yīng)有一個(gè)回調(diào)函數(shù)(可以作為參數(shù)傳遞的函數(shù)),當(dāng)訂閱者接收到話(huà)題的數(shù)據(jù)時(shí),會(huì)調(diào)用一次回調(diào)函數(shù)對(duì)數(shù)據(jù)進(jìn)行處理。159創(chuàng)建訂閱者當(dāng)指定的話(huà)題中輸入消息時(shí),將會(huì)調(diào)用回調(diào)函數(shù)。示例中回調(diào)函數(shù)的作用是獲取消息并將消息輸出到終端中,代碼如圖所示。160回調(diào)函數(shù)rospy.loginfo()函數(shù)可以將括號(hào)內(nèi)的消息作為日志消息輸出,也可以輸出到終端中,訂閱者接收到消息后,可以在終端中查看消息。String類(lèi)型的消息數(shù)據(jù)在data屬性中,所以若要獲取String類(lèi)型的消息數(shù)據(jù),需要讀取回調(diào)函數(shù)形參的data屬性,即data.data。161任務(wù)三

使用話(huà)題通信機(jī)制控制小海龜移動(dòng)1621.?掌握話(huà)題消息類(lèi)型和數(shù)據(jù)結(jié)構(gòu)的查看方法2.?掌握話(huà)題消息數(shù)據(jù)的賦值方法3.?能使用話(huà)題通信機(jī)制控制小海龜移動(dòng)任務(wù)目標(biāo)163一、話(huà)題消息類(lèi)型和數(shù)據(jù)結(jié)構(gòu)的查看在編寫(xiě)的節(jié)點(diǎn)與其他節(jié)點(diǎn)進(jìn)行話(huà)題通信前,需要明確話(huà)題的名稱(chēng)以及話(huà)題的消息類(lèi)型。以小海龜為例,小海龜節(jié)點(diǎn)訂閱“/turtle1/cmd_vel”話(huà)題,并根據(jù)話(huà)題中的速度指令進(jìn)行移動(dòng),可以通過(guò)rostopicinfo命令查看該話(huà)題的具體消息,命令如下(執(zhí)行命令前需要啟動(dòng)turtlesim_node節(jié)點(diǎn)):$rostopicinfo/turtle1/cmd_vel基礎(chǔ)知識(shí)164運(yùn)行后可以得到以下消息:Type:geometry_msgs/TwistPublishers:NoneSubscribers:*/turtlesim(http://ubuntu:35923/)由以上信息可知,話(huà)題“/turtle1/cmd_vel”的消息類(lèi)型為geometry_msgs/Twist,使用rosmsgshow命令可以查看這個(gè)消息的具體數(shù)據(jù)結(jié)構(gòu),具體命令如下:$rosmsgshowgeometry_msgs/Twist165運(yùn)行后可以得到以下消息:geometry_msgs/Vector3linearfloat64xfloat64yfloat64z

geometry_msgs/Vector3angularfloat64xfloat64yfloat64z166geometry_msgs/Twist消息類(lèi)型包含兩個(gè)geometry_msgs/Vector3類(lèi)型的變量:一個(gè)是linear(線(xiàn)速度),另一個(gè)是angular(角速度)。每個(gè)變量都包含三個(gè)?oat64類(lèi)型的變量,分別是x、y和z,表示在X、Y和Z軸上的線(xiàn)速度以及圍繞X、Y和Z軸旋轉(zhuǎn)的角速度大小。167二、話(huà)題消息數(shù)據(jù)的賦值geometry_msgs/Twist是ROS提供的常用消息類(lèi)型之一,可通過(guò)在Python中使用fromgeometry_msgs.msgimportTwist代碼來(lái)調(diào)用。創(chuàng)建話(huà)題發(fā)布者時(shí),可以使用該消息類(lèi)型來(lái)指定發(fā)布的消息格式,代碼如圖所示。168調(diào)用geometry_msgs/Twist消息類(lèi)型并指定發(fā)布的消息格式不同的消息類(lèi)型具有不同的結(jié)構(gòu),可以使用rosmsgshow命令查看消息的數(shù)據(jù)結(jié)構(gòu),并據(jù)此填寫(xiě)消息終端的數(shù)據(jù)。如圖所示是創(chuàng)建一個(gè)geometry_msgs/Twist類(lèi)型的變量并對(duì)其賦值的示例,本例中小海龜以2.0m/s的線(xiàn)速度沿X軸移動(dòng),并以2.0rad/s的角速度繞Z軸旋轉(zhuǎn),在窗口中畫(huà)圓。169創(chuàng)建變量并為變量賦值完成geometry_msgs/Twist類(lèi)型的變量賦值后,使用publish()函數(shù)即可將變量的值發(fā)布到話(huà)題中,控制小海龜移動(dòng),代碼如圖所示。170將數(shù)據(jù)發(fā)布到話(huà)題任務(wù)一服務(wù)通信機(jī)制基礎(chǔ)概述01任務(wù)二創(chuàng)建并編譯自定義服務(wù)數(shù)據(jù)02任務(wù)三使用服務(wù)通信機(jī)制實(shí)現(xiàn)節(jié)點(diǎn)通信03171任務(wù)一

服務(wù)通信機(jī)制基礎(chǔ)概述1721.?掌握服務(wù)通信機(jī)制的原理和特點(diǎn)2.?了解服務(wù)數(shù)據(jù)的類(lèi)型3.?了解服務(wù)通信機(jī)制在機(jī)器人系統(tǒng)中的應(yīng)用任務(wù)目標(biāo)173一、服務(wù)通信機(jī)制的原理和特點(diǎn)服務(wù)通信機(jī)制采用請(qǐng)求—響應(yīng)模型,其中一個(gè)節(jié)點(diǎn)充當(dāng)服務(wù)的提供者,稱(chēng)為服務(wù)服務(wù)器,而另一個(gè)節(jié)點(diǎn)則充當(dāng)服務(wù)的請(qǐng)求者,稱(chēng)為服務(wù)客戶(hù)端。服務(wù)服務(wù)器負(fù)責(zé)接收和處理來(lái)自服務(wù)客戶(hù)端的請(qǐng)求消息。它執(zhí)行特定的任務(wù)或提供特定的功能,并根據(jù)收到的請(qǐng)求消息生成相應(yīng)的響應(yīng)消息,以回應(yīng)服務(wù)客戶(hù)端的需求。基礎(chǔ)知識(shí)174175服務(wù)客戶(hù)端向服務(wù)服務(wù)器發(fā)送請(qǐng)求消息,并等待服務(wù)服務(wù)器的響應(yīng)消息,以獲取特定的服務(wù)或執(zhí)行特定的操作。它通過(guò)發(fā)送請(qǐng)求與服務(wù)服務(wù)器進(jìn)行交互,并根據(jù)收到的響應(yīng)消息做出相應(yīng)的處理,以滿(mǎn)足自己的需求。一般來(lái)說(shuō),服務(wù)通信的流程包括以下步驟:服務(wù)服務(wù)器啟動(dòng)并等待服務(wù)客戶(hù)端的請(qǐng)求;服務(wù)客戶(hù)端發(fā)送請(qǐng)求消息到指定的服務(wù)服務(wù)器;服務(wù)服務(wù)器接收到請(qǐng)求消息后進(jìn)行處理并生成相應(yīng)的響應(yīng)消息;服務(wù)服務(wù)器將響應(yīng)消息發(fā)送給服務(wù)客戶(hù)端;服務(wù)客戶(hù)端接收并處理服務(wù)服務(wù)器的響應(yīng)消息。176與話(huà)題通信機(jī)制不同,服務(wù)通信機(jī)制是一種同步通信方式。服務(wù)客戶(hù)端發(fā)送請(qǐng)求消息后會(huì)等待服務(wù)服務(wù)器的響應(yīng),這種請(qǐng)求和響應(yīng)是一對(duì)一的關(guān)系。服務(wù)客戶(hù)端可以等待響應(yīng),也可以設(shè)置超時(shí)時(shí)間來(lái)處理無(wú)響應(yīng)的情況。在程序中使用服務(wù)通信機(jī)制可以得知節(jié)點(diǎn)發(fā)出的數(shù)據(jù)是否被目標(biāo)節(jié)點(diǎn)接收到,從而保證一些復(fù)雜的任務(wù)能夠正確進(jìn)行。通常情況下,話(huà)題通信機(jī)制中的消息側(cè)重于狀態(tài)信息(位姿、傳感器數(shù)據(jù)、速度等),而服務(wù)通信機(jī)制中的消息側(cè)重于操作(設(shè)定參數(shù)、設(shè)定模式、創(chuàng)建、清除等)。二、服務(wù)數(shù)據(jù)的類(lèi)型在ROS中使用服務(wù)通信機(jī)制時(shí),需要定義特定的服務(wù)數(shù)據(jù)類(lèi)型。服務(wù)數(shù)據(jù)類(lèi)型定義了服務(wù)請(qǐng)求消息和服務(wù)響應(yīng)消息的結(jié)構(gòu)和內(nèi)容:服務(wù)請(qǐng)求消息是由服務(wù)客戶(hù)端發(fā)送給服務(wù)服務(wù)器的消息,它描述了服務(wù)客戶(hù)端希望服務(wù)服務(wù)器執(zhí)行的特定任務(wù)或提供的服務(wù);服務(wù)響應(yīng)消息是服務(wù)服務(wù)器對(duì)服務(wù)請(qǐng)求消息的回應(yīng),它包含了服務(wù)服務(wù)器執(zhí)行任務(wù)后產(chǎn)生的結(jié)果或提供的服務(wù)。服務(wù)請(qǐng)求消息和服務(wù)響應(yīng)消息的結(jié)構(gòu)和內(nèi)容均應(yīng)根據(jù)具體的應(yīng)用場(chǎng)景而定,可以包含不同的字段和數(shù)據(jù)類(lèi)型。177178在ROS中,可以使用服務(wù)描述文件(后綴為“.srv”)來(lái)自定義服務(wù)數(shù)據(jù),服務(wù)描述文件通常放置在功能包的srv文件夾中。服務(wù)數(shù)據(jù)由請(qǐng)求和響應(yīng)兩個(gè)數(shù)據(jù)域組成,請(qǐng)求和響應(yīng)可以包含不同數(shù)量的字段,并且可以指定不同的數(shù)據(jù)類(lèi)型,這些字段之間用“---”進(jìn)行分隔,如圖所示。在下圖中,服務(wù)請(qǐng)求由兩個(gè)整數(shù)字段“a”和“b”組成,而服務(wù)響應(yīng)由一個(gè)整數(shù)字段“sum”組成。通過(guò)定義服務(wù)數(shù)據(jù),可以明確規(guī)定服務(wù)的輸入和輸出格式,以便在節(jié)點(diǎn)間進(jìn)行準(zhǔn)確的請(qǐng)求和響應(yīng)。179服務(wù)數(shù)據(jù)的結(jié)構(gòu)三、服務(wù)通信機(jī)制在機(jī)器人系統(tǒng)中的應(yīng)用服務(wù)通信機(jī)制在機(jī)器人控制、感知數(shù)據(jù)處理、數(shù)據(jù)查詢(xún)與管理、分布式任務(wù)協(xié)作、系統(tǒng)狀態(tài)檢測(cè)與管理等方面都有實(shí)際使用場(chǎng)景。以感知數(shù)據(jù)處理為例,服務(wù)服務(wù)器可以接收來(lái)自服務(wù)客戶(hù)端的感知數(shù)據(jù),如圖像或激光掃描數(shù)據(jù),服務(wù)服務(wù)器會(huì)對(duì)接收到的數(shù)據(jù)進(jìn)行分析和處理,并生成響應(yīng)消息以提供處理結(jié)果。180相比于話(huà)題通信機(jī)制,服務(wù)通信機(jī)制更適用于需要明確請(qǐng)求和響應(yīng)的場(chǎng)景、需要傳遞參數(shù)和獲取結(jié)果的操作以及需要數(shù)據(jù)交互和函數(shù)調(diào)用的任務(wù)。此外,服務(wù)通信機(jī)制具有同步操作和阻塞等待的能力,能夠確保順序性和依賴(lài)關(guān)系,更適合需要同步操作和結(jié)果等待的場(chǎng)景。181任務(wù)二

創(chuàng)建并編譯自定義服務(wù)數(shù)據(jù)1821.?掌握自定義服務(wù)數(shù)據(jù)的創(chuàng)建方法2.?掌握自定義服務(wù)數(shù)據(jù)的編譯方法3.?能創(chuàng)建并編譯自定義服務(wù)數(shù)據(jù)任務(wù)目標(biāo)183一、自定義服務(wù)數(shù)據(jù)的創(chuàng)建在使用服務(wù)通信機(jī)制之前,應(yīng)對(duì)程序需要的服務(wù)數(shù)據(jù)進(jìn)行定義。服務(wù)數(shù)據(jù)通常會(huì)被定義在功能包的srv文件夾中,服務(wù)數(shù)據(jù)文件的后綴為“.srv”,名稱(chēng)可以根據(jù)需求確定,服務(wù)數(shù)據(jù)文件如圖所示。基礎(chǔ)知識(shí)184服務(wù)數(shù)據(jù)文件服務(wù)數(shù)據(jù)的請(qǐng)求和響應(yīng)應(yīng)與希望實(shí)現(xiàn)的程序功能相對(duì)應(yīng)。例如,若客戶(hù)端節(jié)點(diǎn)發(fā)送兩個(gè)整數(shù)到服務(wù)器端,希望得到這兩個(gè)整數(shù)的累加值,則服務(wù)數(shù)據(jù)中的請(qǐng)求為兩個(gè)整數(shù),響應(yīng)為一個(gè)整數(shù)。將以下內(nèi)容添加到服務(wù)數(shù)據(jù)文件中并保存,即可完成服務(wù)數(shù)據(jù)的創(chuàng)建。int64aint64b---int64sum服務(wù)數(shù)據(jù)文件通過(guò)定義請(qǐng)求消息和響應(yīng)消息的結(jié)構(gòu)、數(shù)據(jù)類(lèi)型和字段,確保響應(yīng)能夠按照預(yù)期進(jìn)行。185二、自定義服務(wù)數(shù)據(jù)的編譯由于需要在程序中調(diào)用自定義的服務(wù)數(shù)據(jù),所以需要將服務(wù)數(shù)據(jù)的依賴(lài)添加到功能包清單中,并將服務(wù)數(shù)據(jù)添加到編譯選項(xiàng)文件中。打開(kāi)功能包中的package.xml文件,添加以下兩行內(nèi)容:<build_export_depend>message_generation</build_export_depend>#服務(wù)數(shù)據(jù)生成器<exec_depend>message_runtime</exec_depend>186打開(kāi)功能包中的CMakeLists.txt文件,添加以下內(nèi)容:187添加完成后,編譯功能包時(shí)系統(tǒng)將自動(dòng)根據(jù)創(chuàng)建的服務(wù)數(shù)據(jù)文件生成對(duì)應(yīng)的頭文件(包含代碼聲明的文件,用于在源代碼文件中引入函數(shù)、類(lèi)、變量等聲明。頭文件通常以“.h”或“.hpp”為擴(kuò)展名,并通過(guò)#include指令在源代碼中引入),這些文件存放在工作空間的devel/include目錄下,如圖所示。188系統(tǒng)生成的頭文件任務(wù)三

使用服務(wù)通信機(jī)制實(shí)現(xiàn)節(jié)點(diǎn)通信1891.?掌握服務(wù)器節(jié)點(diǎn)程序相關(guān)函數(shù)2.?掌握客戶(hù)端節(jié)點(diǎn)程序相關(guān)函數(shù)3.?能使用服務(wù)通信機(jī)制實(shí)現(xiàn)節(jié)點(diǎn)通信任務(wù)目標(biāo)190一、服務(wù)器節(jié)點(diǎn)程序若要在程序中使用曾定義過(guò)的服務(wù)數(shù)據(jù),需要在程序的開(kāi)頭添加代碼,用于從頭文件中導(dǎo)入服務(wù)數(shù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論