• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于風(fēng)河VxWorks6.9 系統(tǒng)的自動(dòng)駕駛系統(tǒng)研究

      2021-06-26 08:26:06付建寬李金亮劉蘇楠孫嘉城
      科學(xué)技術(shù)創(chuàng)新 2021年16期
      關(guān)鍵詞:工控機(jī)慣導(dǎo)驅(qū)動(dòng)程序

      付建寬 李金亮 劉蘇楠 孫嘉城 張 佳

      (中汽數(shù)據(jù)(天津)有限公司,天津300000)

      1 概述

      VxWorks是美國(guó)風(fēng)河公司的一款實(shí)時(shí)可裁剪的嵌入式操作系統(tǒng),可以運(yùn)行在X86、ARM、PowerPC、MIPS等多種架構(gòu)的CPU上;VxWorks系統(tǒng)性能強(qiáng)悍、可靠性極高;支持搶占式多任務(wù)的調(diào)度、TCP/IP網(wǎng)絡(luò)協(xié)議棧、文件系統(tǒng)、設(shè)備管理、2D圖形顯示等;跨平臺(tái)的開發(fā)環(huán)境WindRiverWorksbench十分友好,通過交叉編譯生成bootrom啟動(dòng)引導(dǎo)文件和VxWorks內(nèi)核鏡像文件,使用WDB方便開發(fā)和調(diào)試RTP應(yīng)用程序和Kernel程序。

      2 系統(tǒng)設(shè)計(jì)

      本設(shè)計(jì)中計(jì)算單元采用研華ARK-3500工控機(jī),9-34V寬壓直流電源輸入,搭載的是Intel酷睿三代ivy bridge架構(gòu)的CPU,QM77芯片組顯示支持DVI+HDMI+DisplayPort接口,支持PCI擴(kuò)展,還有6路USB口和8路DB9串口可供連接外設(shè),計(jì)算單元上運(yùn)行VxWorks6.9 的操作系統(tǒng)。我們的毫米波雷達(dá)、超聲波雷達(dá)、車輛底盤、Mobileye都是通過CAN總線和計(jì)算單元進(jìn)行連接的,組合慣導(dǎo)通過RS232異步串口接入計(jì)算單元,激光雷達(dá)通過以太網(wǎng)接入計(jì)算單元,計(jì)算單元通過連接工業(yè)4G路由器和云服務(wù)器進(jìn)行交互。系統(tǒng)的硬件組成框圖如圖1所示。

      圖1 系統(tǒng)組成框圖

      3 軟件設(shè)計(jì)

      3.1 啟動(dòng)程序及BSP設(shè)計(jì)

      VxWorks系統(tǒng)在6.9 版本以前多采用基于bootrom加載內(nèi)核或者DOS引導(dǎo)裝載bootrom再加載內(nèi)核的方法,在6.9 版本及以后大多采用grub或syslinux或UEFI來啟動(dòng)引導(dǎo),本文采用的是syslinux啟動(dòng)裝載,首先需要格式化啟動(dòng)盤為FAT32的主分區(qū)文件系統(tǒng),并激活盤符,然后解壓syslinux.zip文件到啟動(dòng)盤,使用管理員權(quán)限啟動(dòng)cmd,在命令行內(nèi)輸入以下命令:

      X:>syslinux-m-a-d-f-iX:

      X代表的是啟動(dòng)盤所在的盤符,比方說啟動(dòng)盤是F盤則X替換為F,最后我們的系統(tǒng)最終是運(yùn)行在工控機(jī)內(nèi)置硬盤上的,需要將硬盤取下使用SATA轉(zhuǎn)USB線連接PC來制作啟動(dòng)盤。啟動(dòng)盤制作好后開機(jī)引導(dǎo)界面如圖2所示。

      圖2 syslinux開機(jī)引導(dǎo)界面

      BSP是板級(jí)支持包的英文縮寫,主要完成系統(tǒng)中斷向量初始化、時(shí)鐘初始化、內(nèi)存映射、外設(shè)初始化等功能[1]。我們?cè)谕ㄓ玫膖arget/config/itl_x86路徑下的BSP基礎(chǔ)上修改,首先復(fù)制該文件夾并重命名,然后在config.h文件中添加如下宏定義:

      根據(jù)工控機(jī)內(nèi)存大小調(diào)整SYSTEM_RAM_SIZE宏,程序中如果不跑特別消耗內(nèi)存的任務(wù)也可以使用缺省值。

      3.2 驅(qū)動(dòng)程序設(shè)計(jì)

      3.2.1 以太網(wǎng)網(wǎng)卡驅(qū)動(dòng)

      ARK3500工控機(jī)的LAN1是Intel 82579LM以太網(wǎng)控制器,LAN2是Intel I-210IT以太網(wǎng)控制器,通過使能INCLUDE_GEI825XX_VXB_END、INCLUDE_MII_BUS、INCLUDE_GENERICPHY三個(gè)宏,系統(tǒng)會(huì)調(diào)用函數(shù)muxDevLoad()即可完成網(wǎng)絡(luò)初始化。

      3.2.2 SATA固態(tài)硬盤驅(qū)動(dòng)

      針對(duì)SATA電子盤的驅(qū)動(dòng),需要配置AHCI相關(guān)的組件,AHCI驅(qū)動(dòng)為vxBus架構(gòu),在VxWorks shell下用vxBusShow能看到設(shè)備成功注冊(cè),因?yàn)橹С諨MA讀寫,因此速度非??靃2]。需要注意的是BIOS的配置要從IDE模式改為AHCI模式。如果需要對(duì)VxWorks下的磁盤分區(qū)重命名為ata0a,可以在usrAppInit.c中添加如下代碼來實(shí)現(xiàn)。

      3.2.3 USB鍵鼠驅(qū)動(dòng)

      在文本模式下,VxWorks6.9 默認(rèn)支持USB鍵鼠,在圖形模式下,需要添加對(duì)UHCI、OHCI、EHCI的USB協(xié)議棧的支持。

      3.2.4 串口驅(qū)動(dòng)

      工控機(jī)提供了8路串口,其中4路固定232串口,4路可變232/422/485串口,我們因?yàn)橹挥袘T導(dǎo)使用了一路232串口,因此只需要初始化1路232串口,在config.h文件中對(duì)CONSOLE_TTY、CONSOLE_BAUD_RATE兩個(gè)宏進(jìn)行設(shè)置,另外BSP中串口配置一定要和BIOS的IO ADDRESS、INT LEVEL保持一致[3]。在命令行在輸入devs回顯的/tyCo/0就是我們要使用的串口設(shè)備。

      3.2.5 芯片組QM77集成顯卡驅(qū)動(dòng)

      VxWorks支持集顯驅(qū)動(dòng),可以編譯內(nèi)核態(tài)的WindML-5.3 顯示庫,進(jìn)而使用tilcon或者QT進(jìn)行圖形界面程序的開發(fā)。

      3.2.6 PCI-CAN驅(qū)動(dòng)

      由于工控機(jī)不帶CAN總線,因此我們外接了一塊基于SJA1000控制器PCI的CAN接口卡設(shè)備,自行編寫設(shè)備驅(qū)動(dòng),步驟如下:

      3.2.6.1 調(diào)用pciFindDevice()函數(shù),根據(jù)vender id和device id查找設(shè)備的總線號(hào)、設(shè)備號(hào)、功能號(hào)。

      3.2.6.2 調(diào)用pciConfigInLong()函數(shù);獲取配置空間、內(nèi)存空間、I/O空間的地址(偏移地址)。

      3.2.6.3 根據(jù)獲取偏移地址最低位,判斷訪問方式是I/O訪問,還是內(nèi)存訪問。IO訪問為1,內(nèi)存訪問為0。

      3.2.6.4 往bar的地址寫-1,然后重新讀取,獲取bar空間大小。

      3.2.6.5 根據(jù)獲取的bar2地址,配置板卡寄存器。

      3.2.6.6 調(diào)用pciConfigInByte()函數(shù)獲取中斷號(hào)。

      3.2.6.7 調(diào)用pciIntConnect()連接中斷向量,中斷號(hào)加0x20,調(diào)用sysIntEnablePIC()使能中斷。

      3.2.6.8 編寫open、read、write、ioctl、close等設(shè)備訪問函數(shù)。

      3.2.6.9 使用iosDrvInstall()函數(shù)創(chuàng)建驅(qū)動(dòng),將驅(qū)動(dòng)程序的入口寫入到驅(qū)動(dòng)程序表中。

      3.2.6.10 使用iosDevAdd()函數(shù)創(chuàng)建設(shè)備描述符結(jié)構(gòu),將設(shè)備添加到設(shè)備列表中[4]。

      3.3 傳感器解析程序設(shè)計(jì)

      3.3.1 組合慣導(dǎo)定位感知

      組合慣導(dǎo)內(nèi)部集成的工業(yè)級(jí)MEMS陀螺儀、加速度計(jì)和雙頻GNSS接收機(jī),RTK狀態(tài)良好穩(wěn)定,配置RS232串口波特率230400Kbps,解析輸出穩(wěn)定連續(xù)的位置、方向、速度、姿態(tài)以及授時(shí)信息。

      3.3.2 激光雷達(dá)感知

      激光雷達(dá)完成三維測(cè)量相關(guān)數(shù)據(jù)輸出,包括激光測(cè)距值、回波的反射率值、水平旋轉(zhuǎn)角度值等,通過UDP發(fā)送到指定IP和端口上,給融合模塊、決策模塊使用。

      3.3.3 毫米波雷達(dá)感知

      首先將車輛的速度、半徑曲率等信息發(fā)送給毫米波雷達(dá)進(jìn)行初始化,輸出64個(gè)障礙物的三個(gè)維度的距離、角度和速度信息,還可以輸出目標(biāo)分組、車道變換檢測(cè)等信息,CAN總線設(shè)備之間通信波特率為500Kbps。

      3.4 自動(dòng)駕駛程序設(shè)計(jì)

      3.4.1 高精地圖制作

      我們使用配置有GPS、IMU、Mobieye、Camera傳感器的采集車來獲取集原始數(shù)據(jù),使用慣導(dǎo)采集GPS數(shù)據(jù)、使用Mobieye采集GPS數(shù)據(jù)到左右車道的距離,用來推算左右車道點(diǎn)的數(shù)據(jù)、使用相機(jī)采集車前信息,用于回放時(shí)用來提取車道點(diǎn)進(jìn)行參考,采集后的數(shù)據(jù)為文本格式,使用自研工具進(jìn)行車道擬合,區(qū)域之間采用貝塞爾曲線相連,加入了車道實(shí)線虛線信息等道路標(biāo)志。

      3.4.2 路徑規(guī)劃

      使用自研工具設(shè)置目標(biāo)點(diǎn),進(jìn)行全局路徑規(guī)劃,暫時(shí)不支持動(dòng)態(tài)切換;而局部路徑規(guī)劃實(shí)時(shí)變化,可至少規(guī)劃60m的距離,考慮路徑、場(chǎng)景、交規(guī)等,生成原始路徑,包含路徑長(zhǎng)度,左右邊界等,同時(shí)規(guī)劃目標(biāo)速度,規(guī)避動(dòng)態(tài)障礙物。

      3.4.3 決策控制實(shí)現(xiàn)

      采用PID橫縱向控制算法,通過計(jì)算障礙物信息、橫向位置和角度誤差、縱向位置和速度誤差,自適應(yīng)動(dòng)力學(xué)模型算法,參數(shù)自動(dòng)整定;添加速度補(bǔ)償,在車輛轉(zhuǎn)彎半徑允許條件下,盡量小誤差范圍內(nèi)動(dòng)作;預(yù)測(cè)碰撞時(shí)間,計(jì)算出油門、剎車、方向盤角度值,實(shí)現(xiàn)自動(dòng)駕駛自動(dòng)循跡,自主避障、自主泊車等功能[5];工控機(jī)通過CAN總線直接下發(fā)命令給車輛底盤,決策時(shí)間不大于20ms。

      3.5 系統(tǒng)運(yùn)行實(shí)況

      將需要編譯進(jìn)kernel的用戶任務(wù)寫進(jìn)usrAppInit.c文件中,驅(qū)動(dòng)程序編譯成模塊動(dòng)態(tài)加載,經(jīng)測(cè)試,實(shí)車運(yùn)行穩(wěn)定可靠,響應(yīng)迅速及時(shí),系統(tǒng)運(yùn)行實(shí)況畫面如圖3所示。

      圖3 系統(tǒng)運(yùn)行實(shí)況畫面

      4 總結(jié)與展望

      本設(shè)計(jì)僅做了適配研究,很多算法工具庫在VxWorks下并沒有,需要單獨(dú)移植,例如opencv這個(gè)開源的計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)庫,github倉庫上只有對(duì)VxWorks7.0 的支持,VxWorks6.9下需要自行開發(fā),我們只能暫時(shí)使用Mobileye這種通過CAN總線輸出對(duì)目標(biāo)的識(shí)別結(jié)果的智能相機(jī)。功能安全是智能網(wǎng)聯(lián)汽車的一項(xiàng)重要要求,風(fēng)河的VxWorks系統(tǒng)雖然生態(tài)上相對(duì)Linux要差很多,但是在實(shí)時(shí)性、安全性上有極大的優(yōu)勢(shì),相信VxWorks系統(tǒng)在自動(dòng)駕駛領(lǐng)域會(huì)有不錯(cuò)的前景。

      猜你喜歡
      工控機(jī)慣導(dǎo)驅(qū)動(dòng)程序
      定制工控機(jī)在老舊線路計(jì)算機(jī)聯(lián)鎖設(shè)備中的應(yīng)用
      自適應(yīng)模糊多環(huán)控制在慣導(dǎo)平臺(tái)穩(wěn)定回路中的應(yīng)用
      中壓電子束焊工控機(jī)Windows NT系統(tǒng)文件丟失故障的修復(fù)方法
      無人機(jī)室內(nèi)視覺/慣導(dǎo)組合導(dǎo)航方法
      基于Bagging模型的慣導(dǎo)系統(tǒng)誤差抑制方法
      基于多線程的慣導(dǎo)邏輯仿真器設(shè)計(jì)
      中國(guó)工控機(jī)市場(chǎng)新Style
      新漢 前插拔CoreTM-i系列無風(fēng)扇工控機(jī)
      驅(qū)動(dòng)程序更新與推薦
      驅(qū)動(dòng)程序更新與推薦
      延寿县| 元谋县| 鄂托克前旗| 苍梧县| 隆林| 阿合奇县| 古浪县| 额尔古纳市| 封丘县| 长顺县| 银川市| 酉阳| 鄂托克前旗| 阿拉善盟| 福安市| 延安市| 陵水| 灵丘县| 佳木斯市| 石屏县| 台南市| 当雄县| 乌鲁木齐县| 扎鲁特旗| 登封市| 泽州县| 额尔古纳市| 拉萨市| 龙川县| 舟山市| 台东县| 剑河县| 体育| 贵溪市| 洪洞县| 沙雅县| 乌鲁木齐县| 东至县| 花莲市| 石林| 华池县|