3-4 完成ROS通信系統(tǒng)的構(gòu)建_第1頁(yè)
3-4 完成ROS通信系統(tǒng)的構(gòu)建_第2頁(yè)
3-4 完成ROS通信系統(tǒng)的構(gòu)建_第3頁(yè)
3-4 完成ROS通信系統(tǒng)的構(gòu)建_第4頁(yè)
3-4 完成ROS通信系統(tǒng)的構(gòu)建_第5頁(yè)
已閱讀5頁(yè),還剩44頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《ROS原理與技術(shù)應(yīng)用》能力模塊三掌握自動(dòng)駕駛系統(tǒng)的安裝與使用方法

任務(wù)四完成ROS通信系統(tǒng)的構(gòu)建導(dǎo)入在ROS的世界里面,最小的進(jìn)程單元就是節(jié)點(diǎn)(node),通常來(lái)說(shuō)一個(gè)節(jié)點(diǎn)負(fù)責(zé)整個(gè)機(jī)器人系統(tǒng)中某一個(gè)單獨(dú)的功能往往實(shí)際情況中,整體系統(tǒng)的功能多,運(yùn)行節(jié)點(diǎn)數(shù)量也非常龐大,了解節(jié)點(diǎn)分布結(jié)構(gòu)以及各節(jié)點(diǎn)之間如何通信就成為了學(xué)習(xí)ROS必不可少的一步。目錄

CONTENTS010203ROS系統(tǒng)常見(jiàn)術(shù)語(yǔ)節(jié)點(diǎn)(node)ROS通信新授一、ROS系統(tǒng)常見(jiàn)術(shù)語(yǔ)01節(jié)點(diǎn)(node)

02主節(jié)點(diǎn)(master)03消息(msg)04話題(topic)05服務(wù)(service)06動(dòng)作(action)一、ROS系統(tǒng)常見(jiàn)術(shù)語(yǔ)1.節(jié)點(diǎn)(note)節(jié)點(diǎn)是指在ROS中運(yùn)行的最小進(jìn)程單元??梢园阉醋饕粋€(gè)可執(zhí)行程序或一個(gè)小的功能模塊。例如,自動(dòng)駕駛車輛可能會(huì)把激光雷達(dá)定義為一個(gè)節(jié)點(diǎn),深度攝像頭是另一個(gè)節(jié)點(diǎn),線控底盤(pán)也是一個(gè)節(jié)點(diǎn)。在ROS中注重各個(gè)功能模塊的復(fù)用,經(jīng)常將較復(fù)雜的功能細(xì)分為多個(gè)節(jié)點(diǎn),提升節(jié)點(diǎn)的可復(fù)用型,有利于提升變成效率。一、ROS系統(tǒng)常見(jiàn)術(shù)語(yǔ)2.主節(jié)點(diǎn)(master)主節(jié)點(diǎn)負(fù)責(zé)節(jié)點(diǎn)到節(jié)點(diǎn)的連接和消息通信,類似于節(jié)點(diǎn)管理器的作用。當(dāng)節(jié)點(diǎn)運(yùn)行時(shí),需要向主節(jié)點(diǎn)注冊(cè)自己的信息(節(jié)點(diǎn)名,發(fā)布/接收的話題名、服務(wù)名、消息類型等),通過(guò)主節(jié)點(diǎn)建立起節(jié)點(diǎn)間的訪問(wèn)和消息的傳遞。智慧貓的決策單元就充當(dāng)了這個(gè)主節(jié)點(diǎn)的角色。

一、ROS系統(tǒng)常見(jiàn)術(shù)語(yǔ)3.消息(msg)節(jié)點(diǎn)之間通過(guò)消息來(lái)發(fā)送和接收數(shù)據(jù)。消息里包括消息的簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu)。使用消息的通信方法包括TCPROS,UDPROS等。每一條消息都要發(fā)布到相應(yīng)的話題。例如定義一個(gè)名為障礙物的消息類型,消息中包含的五個(gè)字段,分別是障礙物的長(zhǎng)度、寬度、高度、運(yùn)動(dòng)線速度和運(yùn)動(dòng)角速度。一、ROS系統(tǒng)常見(jiàn)術(shù)語(yǔ)4.話題(topic)話題可以理解為是某一類消息的總稱,發(fā)布者(publisher)和訂閱者(subscriber)通過(guò)向主節(jié)點(diǎn)注冊(cè)話題名,來(lái)建立相互之間的連接,通過(guò)TCPROS/UDPROS來(lái)實(shí)現(xiàn)具體消息的傳遞。話題是一種異步通信方式,一個(gè)話題可以有多個(gè)訂閱者,發(fā)布者和訂閱者之間是相互解耦的,發(fā)布者發(fā)布話題時(shí)不需要有訂閱者,訂閱者訂閱話題時(shí)不需要有發(fā)布者。話題的名稱在功能包里必須具有唯一性。例如自動(dòng)駕駛車輛的攝像頭、驅(qū)動(dòng)系統(tǒng)和制動(dòng)系統(tǒng)都被分別定義為單獨(dú)的一個(gè)節(jié)點(diǎn)。攝像頭節(jié)點(diǎn)發(fā)布一個(gè)檢測(cè)路面是否出現(xiàn)行人的主題,頻率為20Hz,攝像頭此時(shí)就充當(dāng)一個(gè)主題發(fā)布者的角色。再定義動(dòng)系統(tǒng)和制動(dòng)系統(tǒng)三個(gè)節(jié)點(diǎn)都去訂閱這個(gè)檢測(cè)路面行人的主題,那么這三個(gè)節(jié)點(diǎn)就充當(dāng)該主題的訂閱者。如果前方出現(xiàn)行人,驅(qū)動(dòng)系統(tǒng)停止工作,制動(dòng)系統(tǒng)則會(huì)同步開(kāi)啟制動(dòng)車輛。二、節(jié)點(diǎn)(node)節(jié)點(diǎn)間通信的架構(gòu)如圖:節(jié)點(diǎn)名在系統(tǒng)中必須唯一。節(jié)點(diǎn)可以采用C++或Python語(yǔ)言來(lái)進(jìn)行編寫(xiě)。所有節(jié)點(diǎn)啟動(dòng)的時(shí)候都要在主節(jié)點(diǎn)進(jìn)行注冊(cè),因此在運(yùn)行節(jié)點(diǎn)的時(shí)候,必須要先啟動(dòng)主節(jié)點(diǎn)(master),否則啟動(dòng)的時(shí)候會(huì)報(bào)錯(cuò)。rosnode是節(jié)點(diǎn)處理的工具,與之匹配的命令如圖二、節(jié)點(diǎn)(node)啟動(dòng)主節(jié)點(diǎn)的常用命令如下:主節(jié)點(diǎn)啟動(dòng)后,才能夠啟動(dòng)的其它節(jié)點(diǎn)。啟動(dòng)其它節(jié)點(diǎn)命令的格式如下:$rosrun[功能包名][可執(zhí)行文件名]1.啟動(dòng)節(jié)點(diǎn)啟動(dòng)主節(jié)點(diǎn):在新窗口中啟動(dòng)小海龜節(jié)點(diǎn):在新窗口中啟動(dòng)鍵盤(pán)控制節(jié)點(diǎn):2.查看當(dāng)前運(yùn)行的節(jié)點(diǎn):命令執(zhí)行后,可以看到當(dāng)前運(yùn)行的節(jié)點(diǎn)如圖所示其中“/turtlesim”節(jié)點(diǎn)是小海龜節(jié)點(diǎn),“/teleop_turtle”節(jié)點(diǎn)是鍵盤(pán)控制節(jié)點(diǎn),“/rosout”是用于接收所有節(jié)點(diǎn)輸出的節(jié)點(diǎn),該節(jié)點(diǎn)一般可以不用關(guān)注。二、節(jié)點(diǎn)(node)3.查看節(jié)點(diǎn)信息(以/turtlesim為例):查看到的節(jié)點(diǎn)信息如圖所示,可以看到節(jié)點(diǎn)訂閱的話題,發(fā)布的話題,以及節(jié)點(diǎn)包含的服務(wù)。二、節(jié)點(diǎn)(node)詳細(xì)節(jié)點(diǎn)內(nèi)容如下:二、節(jié)點(diǎn)(node)查看節(jié)點(diǎn)關(guān)系圖:在新的命令窗口中輸入如下命令:顯示的節(jié)點(diǎn)關(guān)系如圖三、ROS通信ROS系統(tǒng)中主要的通信方式有話題(Topic)、服務(wù)(Service)和動(dòng)作(Action)三種。話題(Topic)是最常用的一種。對(duì)于實(shí)時(shí)性、周期性的消息,使用話題(Topic)來(lái)傳輸是最佳的選擇。話題(Topic)是一種點(diǎn)對(duì)點(diǎn)的單向通信方式,這里的“點(diǎn)”指的是節(jié)點(diǎn)(node)。話題(Topic)通信時(shí),首先需要publisher節(jié)點(diǎn)和subscriber節(jié)點(diǎn)都到節(jié)點(diǎn)管理器進(jìn)行注冊(cè),然后publisher會(huì)發(fā)布topic,subscriber在master的指揮下會(huì)訂閱該topic,從而建立起sub-pub之間的通信。注意整個(gè)過(guò)程是單向的。服務(wù)(Service)方式在通信模型上與topic做了區(qū)別。服務(wù)(Service)通信是雙向的,它不僅可以發(fā)送消息,同時(shí)還會(huì)有反饋。所以服務(wù)(Service)包括兩部分,一部分是請(qǐng)求方(Clinet),另一部分是應(yīng)答方/服務(wù)提供方(Server)。這時(shí)請(qǐng)求方(Client)就會(huì)發(fā)送一個(gè)request,要等待server處理,反饋回一個(gè)reply,這樣通過(guò)類似“請(qǐng)求-應(yīng)答”的機(jī)制完成整個(gè)服務(wù)通信。動(dòng)作(Action)通信中,Actionlib是ROS中一個(gè)很重要的庫(kù),類似service通信機(jī)制,actionlib也是一種請(qǐng)求響應(yīng)機(jī)制的通信方式,actionlib主要彌補(bǔ)了service通信的一個(gè)不足,就是當(dāng)機(jī)器人執(zhí)行一個(gè)長(zhǎng)時(shí)間的任務(wù)時(shí),假如利用service通信方式,那么publisher會(huì)很長(zhǎng)時(shí)間接受不到反饋的reply,致使通信受阻。當(dāng)service通信不能很好的完成任務(wù)時(shí)候,actionlib則可以比較適合實(shí)現(xiàn)長(zhǎng)時(shí)間的通信過(guò)程,actionlib通信過(guò)程可以隨時(shí)被查看過(guò)程進(jìn)度,也可以終止請(qǐng)求,這樣的一個(gè)特性,使得它在一些特別的機(jī)制中擁有很高的效率。123三、ROS通信(一)話題(Topic)1.消息(msg) Message就是節(jié)點(diǎn)間話題通信時(shí)傳遞的具體信息,msg的類型包括bool、int、uint、float、string、array]等,自定義的消息文件后綴為“.msg”。msg我們可以理解為是一個(gè)“類”,那么我們每次發(fā)布的內(nèi)容可以理解為“對(duì)象”,以圖像的消息sensor_msg/image中的image.msg為例,消息文件定義內(nèi)容如下:std_msg/Headerheaderuint32seq//消息序號(hào)timestamp//存儲(chǔ)ROS中的時(shí)間戳信息stringframe_id//綁定的坐標(biāo)系uint32height//圖像的高度uint32width//圖像的寬度stringencoding//圖像的編碼格式

uint8is_bigendian//圖像數(shù)據(jù)的大小端存儲(chǔ)模式uint32step//一行圖像數(shù)據(jù)的字節(jié)數(shù)量,作為數(shù)據(jù)的步長(zhǎng)(以字節(jié)為單位)uint8[]data//存儲(chǔ)圖像數(shù)據(jù)的數(shù)組,大小為step*height個(gè)字節(jié)message相關(guān)的操作命令如右圖三、ROS通信(一)話題(Topic)有些時(shí)候我們需要保存一些消息文件,例如在調(diào)試的時(shí)候,我們需要保存一些調(diào)試信息,這個(gè)時(shí)候我們就需要用到rosbag這個(gè)工具。rosbag可以記錄訂閱消息并將消息打包為一個(gè)文件,這種記錄格式性能較好,對(duì)磁盤(pán)也較友好,為了減少磁盤(pán)使用空間,可以在創(chuàng)建包文件時(shí)壓縮它們。rosbag的主要命令如右圖三、ROS通信(一)話題(Topic)訂閱者和發(fā)布者在主節(jié)點(diǎn)中注冊(cè)話題名及消息的類型,訂閱者通過(guò)查詢?cè)谥鞴?jié)點(diǎn)中注冊(cè)的話題名稱,找到與之相匹配的發(fā)布者并建立連接,來(lái)實(shí)現(xiàn)話題的具體消息的接收。話題訂閱和發(fā)布的通信結(jié)構(gòu)示意圖如圖訂閱者和發(fā)布者有以下三種對(duì)應(yīng)關(guān)系:(1)一對(duì)一:(2)一對(duì)多:(3)多對(duì)多:三、ROS通信(一)話題(Topic)話題常用的操作命令如下:常見(jiàn)命令運(yùn)用示例如下:(1)首先在兩個(gè)不同窗口分別輸入以下命令,啟動(dòng)主節(jié)點(diǎn)和小海龜節(jié)點(diǎn):查看當(dāng)前話題列表:查看到的話題列表如圖查看“/turtle1/cmd_vel”話題的消息類型:查詢得到的消息類型如圖三、ROS通信(一)話題(Topic)發(fā)布運(yùn)動(dòng)控制話題到小海龜,讓小海龜運(yùn)動(dòng),命令如下:命令執(zhí)行后,會(huì)發(fā)現(xiàn)小海龜以1m/s的線速度和1m/s的角速度進(jìn)行運(yùn)動(dòng),如圖三、ROS通信(二)服務(wù)(Service)服務(wù)文件定義的模板如下:請(qǐng)求的格式——————應(yīng)答的格式服務(wù)文件定義的示例如下:int64xint64y---int64sum(1)服務(wù)文件(srv)類似msg文件,srv文件是用來(lái)描述service數(shù)據(jù)類型的,service通信的數(shù)據(jù)格式定義在*.srv中。它聲明了一個(gè)服務(wù),包括請(qǐng)求(request)和響應(yīng)(reply)兩部分。三、ROS通信(二)服務(wù)(Service)(2)服務(wù)(service)服務(wù)(service)的特點(diǎn)如下:自定義的服務(wù)文件后綴為“.srv”。服務(wù)包含有客戶端(client)和服務(wù)端(server)服務(wù)的通信是同步雙向通信,不僅可以發(fā)送消息,而且還會(huì)有應(yīng)答,會(huì)形成阻塞??蛻舳撕头?wù)端分別在主節(jié)點(diǎn)中注冊(cè)發(fā)布的服務(wù)名及請(qǐng)求的服務(wù)名等。服務(wù)的發(fā)布和訂閱的通信結(jié)構(gòu)如圖服務(wù)(service)常用的操作命令如下:三、ROS通信(三)動(dòng)作(Action)(1)動(dòng)作文件模板類似msg文件,action文件是用來(lái)描述action相關(guān)信息的,action通信的數(shù)據(jù)格式定義在*.action中。它聲明了一個(gè)動(dòng)作,目標(biāo)、反饋、結(jié)果三個(gè)部分。動(dòng)作文件定義的模板如下:目標(biāo)---結(jié)果---反饋動(dòng)作文件定義的示例如下:uint32lunch_id---uint32total_lunch_finished---float32percent_complete三、ROS通信(三)動(dòng)作(Action)(2)動(dòng)作特點(diǎn)動(dòng)作(Action)的特點(diǎn)如下:動(dòng)作和服務(wù)一樣,都包含請(qǐng)求和應(yīng)答;動(dòng)作比服務(wù)多了中途反饋,客戶端可以在多種執(zhí)行中獲得動(dòng)作的狀態(tài)信息、結(jié)果信息或取消動(dòng)作;動(dòng)作的消息傳輸方式屬于異步雙向通信,不會(huì)形成阻塞。動(dòng)作(Action)的通信結(jié)構(gòu)如圖任務(wù)實(shí)施一、任務(wù)準(zhǔn)備(一)軟件、硬件準(zhǔn)備(二)安全要求及注意事項(xiàng)1.安裝好ROS系統(tǒng)的電腦一臺(tái)。11.創(chuàng)建的文件名要前后一致,創(chuàng)建文件的后綴名不要寫(xiě)錯(cuò);22.創(chuàng)建功能包的依賴項(xiàng)不能有缺項(xiàng)。

實(shí)施步驟有:二、實(shí)施步驟ROS服務(wù)通信的構(gòu)建ROS動(dòng)作通信的構(gòu)建ROS話題通信的構(gòu)建010302二、實(shí)施步驟(一)創(chuàng)建工作空間并初始化

步驟1:ROS話題通信的構(gòu)建

接下來(lái)我們將了解如何創(chuàng)建兩個(gè)節(jié)點(diǎn),一個(gè)發(fā)布數(shù)據(jù),另一個(gè)接收數(shù)據(jù)。在創(chuàng)建節(jié)點(diǎn)前,首先準(zhǔn)備好已創(chuàng)建成功的工作空間“inwinic_ws”,并創(chuàng)建了功能包“inwinic_topic”,功能包的依賴項(xiàng)包含std_msgs、roscpp。二、實(shí)施步驟(一)創(chuàng)建工作空間并初始化

步驟1:ROS話題通信的構(gòu)建

(1)創(chuàng)建Publisher的節(jié)點(diǎn)在inwinic_topic功能包中的src文件夾下創(chuàng)建pub_topic.cpp文件(通過(guò)cd指令進(jìn)入到cd./inwinic_ws/src/inwinic_topic/src目錄中,通過(guò)touchpub_topic.cpp創(chuàng)建文件)。在文件內(nèi)添加如下代碼:二、實(shí)施步驟(一)創(chuàng)建工作空間并初始化

步驟1:ROS話題通信的構(gòu)建

(2)創(chuàng)建一個(gè)Subscriber節(jié)點(diǎn)在inwinic_topic功能包中的src文件夾下創(chuàng)建sub_topic.cpp文件,具體創(chuàng)建過(guò)程如上一個(gè)文件所示。同樣,在sub_topic.cpp文件內(nèi)添加如下代碼并保存:二、實(shí)施步驟(一)創(chuàng)建工作空間并初始化

步驟1:ROS話題通信的構(gòu)建

(3)修改CMakeList.txt文件添加編譯規(guī)則,來(lái)構(gòu)建pub_topic、sub_topic兩個(gè)可執(zhí)行文件。打開(kāi)inwinic_topic功能包里面的CMakeList.txt文件,找到如下代碼位置:在上面代碼的后面添加如下代碼:二、實(shí)施步驟(一)創(chuàng)建工作空間并初始化

步驟1:ROS話題通信的構(gòu)建

(4)編譯功能包:(5)測(cè)試:新打開(kāi)三個(gè)不同的終端,分別輸入以下三個(gè)命令來(lái)分別啟動(dòng)主節(jié)點(diǎn)、話題發(fā)布節(jié)點(diǎn)、話題訂閱節(jié)點(diǎn):(6)在以上節(jié)點(diǎn)都正常啟動(dòng)后,在新的窗口中查看當(dāng)前運(yùn)行的節(jié)點(diǎn)列表,命令如下:可以看到當(dāng)前運(yùn)行的節(jié)點(diǎn)主要有“/pub_msg”、“/sub_msg”和“/rosout”三個(gè)節(jié)點(diǎn)。二、實(shí)施步驟(一)創(chuàng)建工作空間并初始化

步驟1:ROS話題通信的構(gòu)建

(7)“/pub_msg”和“/sub_msg”兩個(gè)節(jié)點(diǎn)之間的關(guān)系可以通過(guò)查看節(jié)點(diǎn)圖(如圖)得到,命令如下:通過(guò)節(jié)點(diǎn)圖可以看到“/pub_msg”發(fā)布了“/message”話題,而這個(gè)話題又被“/sub_msg”節(jié)點(diǎn)接收了。二、實(shí)施步驟(一)創(chuàng)建工作空間并初始化

步驟1:ROS話題通信的構(gòu)建

(8)如果需要知道“/message”話題里包含的具體信息是什么,可以在新終端中輸入如下命令:可以看到話題的具體內(nèi)容會(huì)在終端里顯示出來(lái)。二、實(shí)施步驟(一)創(chuàng)建工作空間并初始化

步驟2:ROS服務(wù)通信的構(gòu)建

假定已經(jīng)創(chuàng)建成功工作空間“inwinic_ws”,并在其目錄下創(chuàng)建成功新功能包“inwinic_srv”,功能包的依賴項(xiàng)包含std_msgs、roscpp、message_generation、message_runtime。(1)創(chuàng)建用于描述服務(wù)數(shù)據(jù)格式的文件AddTwoInt.srv。<1>創(chuàng)建srv文件,以及用于存放srv文件的目錄:<2>在文件AddTwoInt.srv文件中添加如下內(nèi)容并保存:二、實(shí)施步驟(一)創(chuàng)建工作空間并初始化

步驟2:ROS服務(wù)通信的構(gòu)建

(2)創(chuàng)建服務(wù)通信的服務(wù)端和客戶端<1>在功能包“inwinic_srv”的src文件夾中創(chuàng)建服務(wù)端的server.cpp文件,在文件內(nèi)添加如下代碼:二、實(shí)施步驟(一)創(chuàng)建工作空間并初始化

步驟2:ROS服務(wù)通信的構(gòu)建

<2>在功能包“inwinic_srv”的src文件夾中創(chuàng)建客戶端的client.cpp文件,在文件內(nèi)添加如下代碼:二、實(shí)施步驟(一)創(chuàng)建工作空間并初始化

步驟2:ROS服務(wù)通信的構(gòu)建

(3)修改CmakeList.txt文件<1>打開(kāi)功能包“inwinic_srv”中的CmakeList.txt文件,找到如下代碼位置:<2>并在上面代碼后面添加如下代碼:二、實(shí)施步驟(一)創(chuàng)建工作空間并初始化

步驟2:ROS服務(wù)通信的構(gòu)建

<3>打開(kāi)功能包“inwinic_srv”中的CmakeList.txt文件,找到如下代碼位置:<4>并在上面代碼后面添加如下代碼:二、實(shí)施步驟(一)創(chuàng)建工作空間并初始化

步驟2:ROS服務(wù)通信的構(gòu)建

(4)編譯功能包:(5)測(cè)試:新打開(kāi)三個(gè)不同的終端,分別輸入以下三個(gè)命令來(lái)分別啟動(dòng)主節(jié)點(diǎn)、話題發(fā)布節(jié)點(diǎn)、話題訂閱節(jié)點(diǎn):客戶端節(jié)點(diǎn)中的數(shù)字6和2代表兩個(gè)相加的數(shù),在對(duì)應(yīng)的服務(wù)端,我們會(huì)看到如下輸出:二、實(shí)施步驟(一)創(chuàng)建工作空間并初始化

步驟3:ROS動(dòng)作通信的構(gòu)建

假定已經(jīng)創(chuàng)建成功工作空間“inwinic_ws”,并在其目錄下創(chuàng)建成功新功能包“inwinic_action”,功能包的依賴項(xiàng)包含std_msgs、roscpp、actionlib、actionlib_msgs、message_generation、message_runtime。(1)創(chuàng)建用于描述動(dòng)作內(nèi)容的文件Eacdtlunch.action。<1>創(chuàng)建srv文件,以及用于存放srv文件的目錄:<2>在文件Eatlunch.action文件中添加如下內(nèi)容并保存:二、實(shí)施步驟(一)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論