4-2 完成線控底盤通信功能包的調(diào)試_第1頁(yè)
4-2 完成線控底盤通信功能包的調(diào)試_第2頁(yè)
4-2 完成線控底盤通信功能包的調(diào)試_第3頁(yè)
4-2 完成線控底盤通信功能包的調(diào)試_第4頁(yè)
4-2 完成線控底盤通信功能包的調(diào)試_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《ROS原理與技術(shù)應(yīng)用》能力模塊四掌握線控底盤的調(diào)試方法

任務(wù)一實(shí)現(xiàn)自動(dòng)駕駛系統(tǒng)的遠(yuǎn)程登錄導(dǎo)入隨著自動(dòng)駕駛技術(shù)的不斷發(fā)展,在L3級(jí)別的自動(dòng)駕駛面臨的最大的挑戰(zhàn)是循序雙手暫時(shí)離開方向盤,而更高級(jí)別的自動(dòng)駕駛則需要達(dá)到解放雙手雙腳以及眼睛的效果,完全依靠感知層、決策層和執(zhí)行層來控制汽車自動(dòng)駕駛。目錄

CONTENTS0102串口通信的定義串口通信在智慧貓上的應(yīng)用03ros_arduino_bridge通信包的文件結(jié)構(gòu)新授一、串口通信的定義串行接口簡(jiǎn)稱串口,也稱串行通信接口(通常指COM接口),是采用串行通信方式的擴(kuò)展接口。

串口通信(SerialCommunications)是指指外設(shè)和計(jì)算機(jī)間,通過數(shù)據(jù)信號(hào)線、地線、控制線等,按位(bit)發(fā)送和接收字節(jié),進(jìn)行傳輸數(shù)據(jù)的一種通訊方式。盡管比按字節(jié)(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時(shí)用另一根線接收數(shù)據(jù)。它很簡(jiǎn)單并且能夠?qū)崿F(xiàn)遠(yuǎn)距離通信。

串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗(yàn)。對(duì)于兩個(gè)進(jìn)行通信的端口,這些參數(shù)必須匹配。下面將對(duì)波特率、數(shù)據(jù)位、停止位和奇偶校驗(yàn)這幾個(gè)概念進(jìn)行簡(jiǎn)單介紹一、串口通信的定義1波特率這是一個(gè)衡量字符傳輸速率的參數(shù),配置了波特率就知道了傳輸每個(gè)位(bit)所需要的時(shí)間。波特率指的是信號(hào)被調(diào)制以后在單位時(shí)間內(nèi)的變化,即單位時(shí)間內(nèi)載波參數(shù)變化的次數(shù),如每秒鐘傳送240個(gè)字符,而每個(gè)字符格式包含10位(1個(gè)起始位,1個(gè)停止位,8個(gè)數(shù)據(jù)位),這時(shí)的波特率為240Bd,比特率為10位*240個(gè)/秒=2400bps。波特率不能隨意設(shè)定,因?yàn)橥ㄐ烹p方需要事先設(shè)定先溝通的波特率才能通信成功,否則接收不到通信內(nèi)容。一般最常見的波特率是9600或115200(低端單片機(jī)如51常用9600,高端單片機(jī)和嵌入式SOC常用115200)。2數(shù)據(jù)位這是衡量通信中實(shí)際數(shù)據(jù)位的參數(shù)。當(dāng)計(jì)算機(jī)發(fā)送一個(gè)信息包,實(shí)際真正有效數(shù)據(jù)位數(shù)是可以選擇的,標(biāo)準(zhǔn)的值是6~8位。如何設(shè)置取決于你想傳送的信息。比如,標(biāo)準(zhǔn)的ASCII碼是0~127(7位)。擴(kuò)展的ASCII碼是0~255(8位)。如果數(shù)據(jù)使用簡(jiǎn)單的文本(標(biāo)準(zhǔn)ASCII碼),那么每個(gè)數(shù)據(jù)包使用7位數(shù)據(jù)。一、串口通信的定義3停止位用于表示單個(gè)包的最后一位。典型的值為1,1.5和2位。由于數(shù)據(jù)是在傳輸線上定時(shí)的,并且每一個(gè)設(shè)備有其自己的時(shí)鐘,很可能在通信中兩臺(tái)設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計(jì)算機(jī)校正時(shí)鐘同步的機(jī)會(huì)。適用于停止位的位數(shù)越多,不同時(shí)鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時(shí)也越慢。4奇偶校驗(yàn)位在串口通信中一種簡(jiǎn)單的檢錯(cuò)方式。有四種檢錯(cuò)方式:偶、奇、高和低。當(dāng)然沒有校驗(yàn)位也是可以的。對(duì)于偶和奇校驗(yàn)的情況,串口會(huì)設(shè)置校驗(yàn)位(數(shù)據(jù)位后面的一位),用一個(gè)值確保傳輸?shù)臄?shù)據(jù)有偶個(gè)或者奇?zhèn)€邏輯高位。例如,如果數(shù)據(jù)是011,那么對(duì)于偶校驗(yàn),校驗(yàn)位為0,保證邏輯高的位數(shù)是偶數(shù)個(gè)。如果是奇校驗(yàn),校驗(yàn)位為1,這樣就有3個(gè)邏輯高位。高位和低位不真正的檢查數(shù)據(jù),簡(jiǎn)單置位邏輯高或者邏輯低校驗(yàn)。這樣使得接收設(shè)備能夠知道一個(gè)位的狀態(tài),有機(jī)會(huì)判斷是否有噪聲干擾了通信或者是否傳輸和接收數(shù)據(jù)是否不同步。一、串口通信的定義實(shí)際的串口通訊的數(shù)據(jù)包傳輸過程是發(fā)送設(shè)備通過自身的TXD接口傳輸?shù)浇邮赵O(shè)備的RXD接口。其數(shù)據(jù)包內(nèi)容為:起始位、數(shù)據(jù)位、校驗(yàn)位以及停止位組成,通信雙方的數(shù)據(jù)包格式需要約定一致才能正常的收發(fā)數(shù)據(jù),數(shù)據(jù)包的具體構(gòu)成如圖二、串口通信在智慧貓上的應(yīng)用當(dāng)我們想要具體利用決策單元控制智慧貓的底盤之前,我們首先需要了解上位機(jī)與下位機(jī)的概念。上位機(jī)是指可以直接發(fā)出操控命令的計(jì)算機(jī),通常是PC、hostcomputer、mastercomputer、決策模塊。下位機(jī)是指能夠直接控制設(shè)備運(yùn)作、獲取設(shè)備狀態(tài)信息的計(jì)算機(jī),一般是指PLC(可編程邏輯控制器,ProgrammableLogicController)、單片機(jī)、slavecomputer等。上位機(jī)發(fā)出命令傳遞給下位機(jī),下位機(jī)再根據(jù)命令直接控制相應(yīng)設(shè)備。下位機(jī)讀取設(shè)備狀態(tài)數(shù)據(jù)反饋給上位機(jī)。二、串口通信在智慧貓上的應(yīng)用在智慧貓線控底盤通信中上下位機(jī)分別是串口接收決策單元和線控底盤控制單元。想實(shí)現(xiàn)智慧主控制器與底盤控制器的通信,步驟大致分為以下三步:?將行云橋智慧貓自帶的HDMI接口跟桌面顯示器相連,USB接口連接無線鍵鼠接收器。?打開電源,進(jìn)入到Ubuntu系統(tǒng)。?啟動(dòng)ROS與arduino的通信節(jié)點(diǎn)。其中智慧貓的線控底盤控制單元(下位機(jī))通過串口接收決策單元(上位機(jī))發(fā)送過來的底盤行駛的線速度和角速度,同時(shí),下位機(jī)也通過串口向上位機(jī)發(fā)送四個(gè)驅(qū)動(dòng)電機(jī)的實(shí)時(shí)轉(zhuǎn)速。

智慧貓的上位機(jī)采用JetsonNano作為主控模塊(決策模塊),然后通過串口連接至底盤的控制器(ArduinoMega2560)。上位機(jī)JetsonNano上已經(jīng)安裝好了ROS系統(tǒng),并通過ros_arduino_bridge通信功能包實(shí)現(xiàn)與下位機(jī)arduino之間的串行通信。三、ros_arduino_bridge通信包的文件結(jié)構(gòu)os_arduino_bridge功能包集包括了Arduino庫(kù)(ROSArduinoBridge)和一系列用來控制基于Arduino的ROS功能包,它使用的是標(biāo)準(zhǔn)的ROS消息和服務(wù),且不依賴于ROS串口。ros_arduino_bridge包含了一個(gè)底盤控制器(basecontroller),該底盤控制器是用來控制一個(gè)兩輪差速驅(qū)動(dòng)的機(jī)器人,可以接受ROSTwist格式的消息和發(fā)布里程計(jì)數(shù)據(jù)到主控電腦(上位機(jī))。目前ros_arduino_bridge功能包支持的電機(jī)驅(qū)動(dòng)板有PololuVNH5019雙路電機(jī)控制板和PololuMC33926雙路電機(jī)控制板。除了默認(rèn)支持的控制板,我們也可以通過修改代碼來擴(kuò)充其他型號(hào)的電機(jī)驅(qū)動(dòng)板。該軟件包處理支持驅(qū)動(dòng)電機(jī),還有一些其他功能:?直接支持各種超聲波傳感器(如:HY-SRF05超聲波模塊)和Sharp紅外測(cè)距傳感器(如:GP2D12)?可以從通用的模擬和數(shù)字信號(hào)的傳感器讀取數(shù)據(jù)?可以直接控制數(shù)字信息信號(hào)的輸出?能夠支出PWM伺服舵機(jī)控制三、ros_arduino_bridge通信包的文件結(jié)構(gòu)接下來,我們來介紹一下ros_arduino_bridge功能包集的整體文件結(jié)構(gòu)。總的來說,ros_arduino_bridge功能包包括四大部分:ros_arduino_bridge模塊、ros_arduino_firmware模塊、ros_arduino_msgs模塊以及ros_arduino_python模塊。具體的內(nèi)部文件結(jié)構(gòu)如圖三、ros_arduino_bridge通信包的文件結(jié)構(gòu)其中ros_arduino_msgs文件夾內(nèi)部包含了ROS使用的各類信息格式和各類服務(wù)。內(nèi)部的msg文件夾內(nèi)容主要用于定義消息,srv文件夾內(nèi)容用于定義服務(wù)。具體包含的功能文件如圖三、ros_arduino_bridge通信包的文件結(jié)構(gòu)其中ros_arduino_python文件夾內(nèi)部包含了上位機(jī)中需要運(yùn)行的主要代碼,由pythonb編寫。內(nèi)部結(jié)構(gòu)為config、launch、nodes和src/ros_arduino_python文件夾。一一對(duì)應(yīng)的具體功能文件展示如圖三、ros_arduino_bridge通信包的文件結(jié)構(gòu)在實(shí)現(xiàn)實(shí)現(xiàn)線控底盤主機(jī)與底層控制板Arduino的通信之前,需要確認(rèn)線控底盤的主機(jī)通信包已安裝,必須先啟動(dòng)底盤通信節(jié)點(diǎn),相關(guān)命令如下(1)遠(yuǎn)程登錄到線控底盤主機(jī)側(cè):(2)啟動(dòng)底盤通信節(jié)點(diǎn):正確啟動(dòng)后界面顯示如圖任務(wù)實(shí)施一、任務(wù)準(zhǔn)備(一)軟件、硬件準(zhǔn)備(二)安全要求及注意事項(xiàng)1.安裝好ROS系統(tǒng)的桌面電腦一臺(tái);2.燒錄好智慧貓線控底盤控制系統(tǒng)程序的ArduinoMega2560控制板一塊;11.檢查桌面電腦ROS系統(tǒng)是否已經(jīng)安裝好;22.檢查Arduino板的程序是否已經(jīng)燒錄完成。

檢查桌面電腦ROS系統(tǒng)是否已安裝好實(shí)施步驟有:二、實(shí)施步驟首先需要完成工作空間的創(chuàng)建01編譯與環(huán)境配置02配置線控底盤的參數(shù)03啟動(dòng)底盤通信節(jié)點(diǎn)04二、實(shí)施步驟(一)創(chuàng)建工作空間并初始化

步驟1:首先需要完成工作空間的創(chuàng)建

(1)在home/inwinic目錄下創(chuàng)建多級(jí)文件夾目錄:(2)初始化工作空間:二、實(shí)施步驟(一)創(chuàng)建工作空間并初始化

步驟2:編譯與環(huán)境配置

(2)編譯與環(huán)境配置將配套提供的ros_arduino_bridge功能包拷貝到文件夾目錄/home/inwinic/inwinic_ws/src下,并完成編譯和環(huán)境的配置。編譯的指令如下:環(huán)境的配置指令如下:二、實(shí)施步驟(一)創(chuàng)建工作空間并初始化

步驟3:配置線控底盤的參數(shù)

將Arduino控制板連接至桌面電腦的USB端口,如果是在桌面電腦的虛擬機(jī)上安裝的ROS,需要在虛擬機(jī)窗口欄中選擇“虛擬機(jī)”->“可移動(dòng)設(shè)備”,在“可移動(dòng)設(shè)備”列表中找到arduino對(duì)應(yīng)的設(shè)備并連接。具體參數(shù)的配置步驟如下:(1)查詢arduino控制板與虛擬機(jī)的連接端口號(hào)及權(quán)限設(shè)置:首先查詢端口號(hào):顯示如圖所示:二、實(shí)施步驟(一)創(chuàng)建工作空間并初始化

步驟3:配置線控底盤的參數(shù)

常見設(shè)備連接后,端口顯示一般為ttyUSB*或ttyACM*,“*”代表數(shù)字“0,1,2……”,如果不確定,可以在Arduino控制板連接至上位機(jī)控制板前查詢下端口號(hào),然后在Arduino控制板連接至上位機(jī)控制板后,再查詢下端口號(hào),新增加的端口號(hào)即為Arduino控制板的連接端口。在查詢到端口號(hào)為/dev/ttyUSB0后,可以通過如下指令查詢端口的權(quán)限:指令執(zhí)行后,顯示如圖所示:紅色標(biāo)注部分表示端口的權(quán)限,詳情如表所示二、實(shí)施步驟(一)創(chuàng)建工作空間并初始化

步驟3:配置線控底盤的參數(shù)

端口在賦予權(quán)限的時(shí)候是通過數(shù)字來實(shí)現(xiàn)的,每組權(quán)限r(nóng)wx分別對(duì)應(yīng)3位二進(jìn)制數(shù),然后轉(zhuǎn)換成十進(jìn)制數(shù)后的對(duì)應(yīng)關(guān)系如表所示:為了實(shí)現(xiàn)上位機(jī)和下位機(jī)之間通過連接端口傳輸數(shù)據(jù),我們將所有者的權(quán)限、同組用戶權(quán)限、其他用戶權(quán)限都為rwx,即在權(quán)限賦值時(shí)設(shè)置權(quán)限值為777即可。指令如下:指令執(zhí)行后,端口所有的權(quán)限均為rwx。二、實(shí)施步驟(一)創(chuàng)建工作空間并初始化

步驟3:配置線控底盤的參數(shù)

(2)修改通信節(jié)點(diǎn)的啟動(dòng)參數(shù):打開文件夾目錄ros_arduino_bridge/ros_arduino_python/config,然后打開my_arduino_params.yaml文件(如果沒有該文件,可以復(fù)制arduino_params.yaml文件,然后修改文件名為my_arduino_params.yaml),并進(jìn)行參數(shù)的修改,具體操作指令如下:二、實(shí)施步驟(一)創(chuàng)建工作空間并初始化

步驟3:配置線控底盤的參數(shù)

打開my_arduino_params.yaml參數(shù)后,參考如下內(nèi)容來修改my_arduino_params.yaml文件:(行前面如果包含“#”,代表該行設(shè)定的參數(shù)無效):特別需要指出的是這個(gè)參數(shù)設(shè)置文件內(nèi),編碼器分辨率(encoder_resolu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論