出品 | 智東西公開(kāi)課
講師 | 陳超 極智嘉研發(fā)總監(jiān)
課件 | 關(guān)注智東西公開(kāi)課公眾號(hào),并回復(fù)關(guān)鍵詞“英特爾03” ,即可獲取課件。
回放 | https://appoSCMf8kb5033.h5.xeknow.com/st/8Nl2ftuYV
導(dǎo)讀:
4月7日,極智嘉研發(fā)總監(jiān)陳超在智東西公開(kāi)課進(jìn)行了一場(chǎng)的直播講解,主題為《物流機(jī)器人視覺(jué)感知和定位技術(shù)的創(chuàng)新和實(shí)踐》,這也是英特爾AI百佳創(chuàng)新激勵(lì)計(jì)劃系列專(zhuān)場(chǎng)的第3講。
在本次講解中,陳超老師圍繞物流機(jī)器人對(duì)視覺(jué)感知與定位的要求、智能叉車(chē)托盤(pán)檢測(cè)算法、利用OpenVINO加速托盤(pán)檢測(cè)算法部署,以及極智嘉VXSLAM定位技術(shù)與實(shí)踐,進(jìn)行深入地講解。
本文為此次專(zhuān)場(chǎng)主講環(huán)節(jié)的圖文整理:
正文:
晚上好,我是來(lái)自極智嘉的陳超,今天很高興能跟大家一起分享物流機(jī)器人視覺(jué)感知和定位技術(shù)的創(chuàng)新和實(shí)踐。本次分享主要包含4個(gè)方面:
1、物流機(jī)器人對(duì)視覺(jué)感知與定位的要求
2、極智嘉的智能叉車(chē)托盤(pán)檢測(cè)算法的解析
3、利用OpenVINO加速托盤(pán)檢測(cè)算法部署
4、基于VXSLAM的AMR定位技術(shù)與實(shí)踐
物流機(jī)器人對(duì)視覺(jué)感知與定位的要求
對(duì)于普通的消費(fèi)者,接觸比較多的是電商快遞,實(shí)際上一個(gè)完整的物流場(chǎng)景包含工廠(chǎng)物流、倉(cāng)儲(chǔ)物流、快遞物流以及商業(yè)物流。除了電商之外,幾乎所有的實(shí)體產(chǎn)業(yè)都有一套非常完善的物流體系,它們都需要去解決自己的原材料、半成品的存儲(chǔ)運(yùn)輸問(wèn)題。
物流是一個(gè)非常很大的產(chǎn)業(yè),它有很多環(huán)節(jié),因此形成了很多智慧物流的場(chǎng)景,比如智能分揀、智能搬運(yùn)、智能叉車(chē)、智能倉(cāng)儲(chǔ)和智慧工廠(chǎng)。對(duì)于很多電商后臺(tái)的倉(cāng)庫(kù)來(lái)說(shuō),就是一個(gè)典型的智能揀選的場(chǎng)景。這里我們可以采用一些貨架到人的機(jī)器人,把貨架搬到固定地點(diǎn),進(jìn)行人工揀選。智能搬運(yùn)更多的用在工廠(chǎng)產(chǎn)線(xiàn)上進(jìn)行一些物料、原材料的配送。分揀機(jī)器人主要是用在一些郵政以及快遞的系統(tǒng)進(jìn)行包裹的投遞分揀。智能叉車(chē)主要是進(jìn)行一些比較大重量的物品的短途轉(zhuǎn)移運(yùn)輸,還有智能倉(cāng)儲(chǔ)以及智慧工廠(chǎng)。在多種不同的物流場(chǎng)景的背后,就是多種形態(tài)機(jī)器人起到的支撐。

那對(duì)這些機(jī)器人的感知定位有怎樣的要求呢?首先,由于物流場(chǎng)景非常多樣化,這對(duì)機(jī)器人提出不同種類(lèi)的要求,比如有機(jī)械臂類(lèi)的機(jī)器人,它需要對(duì)商品進(jìn)行識(shí)別定位;輥道機(jī)器人,它需要把貨物對(duì)接到指定的一些流水線(xiàn)上;還有一些搬運(yùn)機(jī)器人、無(wú)人叉車(chē)等,不同的機(jī)器人會(huì)去完成一些特定的任務(wù)。
下面一個(gè)是叉車(chē),叉車(chē)的負(fù)載能力非常強(qiáng),但是它的危險(xiǎn)性也會(huì)比較高。在叉車(chē)的工作環(huán)境中,無(wú)論是前面的叉耙碰到人也好,貨物也好,都會(huì)是比較嚴(yán)重的事故,那么就需要高可靠性的算法來(lái)保證機(jī)器人的安全性。
對(duì)于穩(wěn)定性,相對(duì)于其他機(jī)器人,物流機(jī)器人對(duì)穩(wěn)定要求可能是7×24小時(shí)的,在武漢的郵政系統(tǒng)的分揀場(chǎng)景里一共有數(shù)百臺(tái)機(jī)器,不同類(lèi)型的機(jī)器人緊密的協(xié)作進(jìn)行包裹快遞的投送。我們可以想象一下,如果在這么一個(gè)密集的場(chǎng)景內(nèi),機(jī)器人發(fā)生故障,將某些區(qū)域鎖死,那會(huì)造成重大面積的作業(yè)區(qū)域的癱瘓,會(huì)造成訂單的堆積。
右上角是日本豐田的產(chǎn)線(xiàn),機(jī)器人可以進(jìn)行一些零部件的對(duì)接,在這方面對(duì)精度的要求非常高。
極智嘉的智能叉車(chē)托盤(pán)檢測(cè)算法的解析
除了上面提到的高可靠性、安全性的需求外,智能叉車(chē)還有一些獨(dú)特的特點(diǎn),叉車(chē)的托盤(pán)有很多類(lèi)型,有歐標(biāo)的、國(guó)標(biāo)的,還有非標(biāo)的,還有一些是客戶(hù)定制的,它們有不同的材質(zhì),比如塑料的、鐵的、木頭的,它們有不同的形狀,有單孔的,雙孔的、多孔的,那就需要我們對(duì)多種類(lèi)型的目標(biāo)進(jìn)行適配。在精度方面可以看到,其實(shí)叉車(chē)的叉耙還是比較厚的,相對(duì)于插孔,留給它定位的余量其實(shí)就非常小,這就要求我們檢測(cè)算法具有非常高的精度。

叉車(chē)上用的是深度相機(jī),對(duì)于點(diǎn)云的處理,現(xiàn)在已經(jīng)有一些比較典型的方法,比如說(shuō)早期的PointNet、VoxelNet,后期的 Point-GNN等,在這里我們重點(diǎn)介紹下PV-RCNN,通常來(lái)講基于Voxel方法的計(jì)算效率比較高,但是它的定位精度偏低,基于Point方法感受野可變,一般具有較高的精度,PV-RCNN就是結(jié)合兩者的優(yōu)點(diǎn),它利用3D Voxel先做一個(gè)初定位,然后再關(guān)聯(lián)到其中的keypoint,做一個(gè)精細(xì)的定位。具體來(lái)說(shuō)它其實(shí)包含兩個(gè)大的分支,第一是對(duì)原始的點(diǎn)云進(jìn)行3D Voxel的處理,得到一些候選的3D框,在另外一個(gè)方面進(jìn)行一些原始點(diǎn)采樣,把關(guān)鍵點(diǎn)稀疏化,之后通過(guò)索引的方式關(guān)聯(lián)剛才Voxel所提取的多層級(jí)的特征,進(jìn)行融合,再進(jìn)行目標(biāo)的精細(xì)化。其實(shí)基于點(diǎn)云的方法對(duì)我們來(lái)說(shuō)是最直接的,但在實(shí)際使用中,托盤(pán)對(duì)于3D點(diǎn)云數(shù)據(jù)的標(biāo)注成本非常高,可能是圖像標(biāo)注的10倍以上,所以我們還是采用了基于圖像的方法。

上圖左上角是獲取的深度圖,轉(zhuǎn)化成圖像之后,可以用一些大家熟知的兩階段的處理方法如Faster-RCNN和R-FCN,一階段的Yolo與RetinaNet等,在這里介紹一個(gè)比較典型FSAF,我們知道在目標(biāo)檢測(cè)里尺度是一個(gè)比較大的問(wèn)題,為了解決尺度問(wèn)題,現(xiàn)在主流的檢測(cè)器都采用了FPN的結(jié)構(gòu),然后再基于anchor在不同的層上去布置anchor,那么就需要提前的去設(shè)置anchor的位置,以及它的各種尺寸與寬高比,那具體設(shè)置方法很多時(shí)候是基于一些啟發(fā)式方法,簡(jiǎn)單來(lái)說(shuō),把一些目標(biāo)的size框和各個(gè)特征層上的anchor框進(jìn)行一個(gè)IoU的計(jì)算、排序。IoU最大的,我們就認(rèn)為是檢測(cè)層,這其實(shí)并不是一個(gè)最優(yōu)的結(jié)果。FSAF主要針對(duì)特征的選擇問(wèn)題,它在RetinaNet的基礎(chǔ)上構(gòu)建了SAF的分支,我們可以采用一個(gè)anchor-free的分支,輸出目標(biāo)檢測(cè)的熱圖,然后用這個(gè)熱圖去指導(dǎo)anchor-base的方法的進(jìn)行目標(biāo)檢測(cè),這樣可以通過(guò)學(xué)習(xí)訓(xùn)練的方式得到最優(yōu),最終我們能夠選取什么樣的尺寸,什么樣尺度的目標(biāo),應(yīng)該在什么樣層上去檢測(cè)。FSAF它有一個(gè)很大的優(yōu)點(diǎn)是它是一個(gè)模塊化的方法,它可以直接的集中在很多的主流的檢測(cè)算法之后,對(duì)算法的性能都有一定的提升。

最后看下我們的檢測(cè)方法,首先,大家知道主流的目標(biāo)檢測(cè)都是基于bounding box的形式,簡(jiǎn)單來(lái)說(shuō)就是拿一個(gè)bounding box無(wú)論是anchor也好,或者是其他方式,在整個(gè)圖像里去密集的采樣,然后最終回歸出目標(biāo)的類(lèi)別和它的位置。后來(lái)誕生了一些基于關(guān)鍵點(diǎn)的方法,因?yàn)閍nchor的方法,我們要對(duì)anchor進(jìn)行更加精細(xì)的設(shè)計(jì),要預(yù)先有很多的先驗(yàn)在里面,有很多的超參數(shù)。后來(lái)基于關(guān)鍵點(diǎn)的方法主要有兩類(lèi),一類(lèi)是像基于這種左右 left top和right bottom的 CornerNet的方法。還有一類(lèi)是基于CenterNet的方法,是基于目標(biāo)的中心點(diǎn),先把目標(biāo)的中心檢測(cè)出來(lái),然后再去回歸它的屬性,包括它的邊界。這里我們結(jié)合兩種方法的特點(diǎn),采用的是5點(diǎn)去描述,因?yàn)榍懊嬉蔡岬轿覀儗?duì)目標(biāo)的精度要求非常高,那么大家可以想象在圖像的視野里,其實(shí)托盤(pán)并不是一個(gè)真正的矩形框,它其實(shí)是一個(gè)四邊形,我們用額外的4個(gè)點(diǎn)去檢測(cè)會(huì)取得更高的精度。其實(shí)也是先通過(guò)一個(gè)Encoder-Decoder網(wǎng)絡(luò)生成一個(gè)目標(biāo)的中心點(diǎn)的熱圖,熱圖中的熱度就代表了目標(biāo)的概率,得到概率之后進(jìn)行篩選,我們?cè)龠M(jìn)行關(guān)鍵點(diǎn)的回歸。
該方法有一些特點(diǎn),首先是一階段的方法,它沒(méi)有RPN的過(guò)程,沒(méi)有了信息阻塞,前端的特征可以直接傳遞到最終的檢測(cè)層,我們相信這一類(lèi)的方法將來(lái)可能會(huì)有比較高的天花板。另外,由于是非bounding box的方式,沒(méi)有NMS的操作,所以速度會(huì)更快。此外,由于采用的是編解碼的形式,我們可以直接在高分辨率圖上檢測(cè),所以不像一般的目標(biāo)檢測(cè)可能會(huì)在低分辨率或者是FPN的結(jié)果上去檢測(cè),所以也會(huì)有更高的精度。
最后對(duì)于另外一個(gè)分支,我覺(jué)得也是非常重要的一個(gè)分支,它支持整個(gè)托盤(pán)檢測(cè)算法設(shè)計(jì)的一個(gè)重要目標(biāo):高可靠性。那具體怎樣做?我們會(huì)建立另外一個(gè)Verification的分支,它同時(shí)接受網(wǎng)絡(luò)檢測(cè)的輸出與托盤(pán)先驗(yàn)?zāi)P?。因?yàn)槭孪扔幸恍┩斜P(pán)模型的數(shù)據(jù)庫(kù),那么我們可以拿數(shù)據(jù)庫(kù)里的托盤(pán)模型和我們檢測(cè)的結(jié)果做一個(gè)相似性的判斷,判斷出我們檢測(cè)的置信度,還是像剛才提到的在實(shí)際應(yīng)用中,我們寧愿檢出率低一點(diǎn)、漏掉一些目標(biāo),但是一定不能讓叉車(chē)進(jìn)行錯(cuò)誤的叉取,以免造成傷害。這其實(shí)是我們結(jié)合類(lèi)似于領(lǐng)域知識(shí)來(lái)對(duì)網(wǎng)絡(luò)性能的一個(gè)提升。
利用OpenVINO加速托盤(pán)檢測(cè)算法部署
首先,在服務(wù)器端訓(xùn)練網(wǎng)絡(luò)模型,然后基于OpenVINO對(duì)模型進(jìn)行優(yōu)化以及轉(zhuǎn)化,最終利用VINO的部署引擎,在Core i3的計(jì)算平臺(tái)上,在機(jī)器人端進(jìn)行部署。
可能有的朋友對(duì)OpenVINO并不太熟悉,在這里我們簡(jiǎn)單介紹下,OpenVINO是英特爾推出的一款針對(duì)深度學(xué)習(xí)和傳統(tǒng)視覺(jué)的加速優(yōu)化框架。它可以支持英特爾目前絕大多數(shù)的計(jì)算平臺(tái),包括CPU、集成顯卡等等。它提供了統(tǒng)一的API讓我們的算法一次編譯、一次優(yōu)化,快速的在不同的平臺(tái)上進(jìn)行移植。我們重點(diǎn)看一下Deep Learning部分的模型優(yōu)化和推理引擎兩部分,模型優(yōu)化部分可以接收好訓(xùn)練好的模型,然后轉(zhuǎn)化成內(nèi)部特有的IR格式,然后部署推理引擎部分有一些硬件指令級(jí)層面的優(yōu)化,它是一個(gè)非常輕量、高效的部署框架,可以快速的輕量級(jí)的部署在我們的嵌入式平臺(tái)上進(jìn)行模型的推理。在Deep Learning部分其實(shí)里面還提供了很多預(yù)訓(xùn)練好的模型,更重要的是提供了很多非常實(shí)用的工具,比如calibration tool可以進(jìn)行一些量化,后面我們也會(huì)講到,包括模型性能分析,一些可視化的工具等等。在傳統(tǒng)視覺(jué)方面,也對(duì)大家都熟悉的Opencv和OpenVX做了一些指令集的優(yōu)化,同時(shí)也提供了構(gòu)建一個(gè)視覺(jué)處理完整pipeline 所需的一些底層的media SDK。
接下來(lái)講下模型優(yōu)化這部分,模型優(yōu)化器是整個(gè)OpenVINO的框架里最核心的部分之一,它目前支持幾乎所有主流的框架,我們用的是TensorFlow,但是它也支持Pytoech、Caffe等,它可以對(duì)模型的拓?fù)浣Y(jié)構(gòu)進(jìn)行分析,然后進(jìn)行一些優(yōu)化操作,然后轉(zhuǎn)化。

下面重點(diǎn)看下模型優(yōu)化技術(shù),其實(shí)可以看一下右邊這張圖,在很多的網(wǎng)絡(luò)里需要有BN層,BN層大家知道其實(shí)就是一些bias和scale的先行操作,在這里單獨(dú)做一層,其實(shí)計(jì)算效率并不高。是模型優(yōu)化器,可以自動(dòng)的去根據(jù)拓?fù)浣Y(jié)構(gòu)對(duì)這些網(wǎng)絡(luò)進(jìn)行一些合并,可以把的BN層往前合或往后移。可以看到網(wǎng)絡(luò)的結(jié)構(gòu)大為精簡(jiǎn),更重要的是推理的速度會(huì)大幅的提高。
另外還有一些stride的優(yōu)化操作,像在Resnet等一些結(jié)構(gòu)里有很多1×1的卷積,同時(shí)它的stride可能是大于1的,對(duì)于這些操作,我們可以把stride進(jìn)行前移,比如可以看下上圖右下角的例子,前面是56×56的輸入,然后兩個(gè)分支都是在這里進(jìn)行了kernel_size為1,但stride為2的操作,其實(shí)很多先前的一些計(jì)算被丟掉了,我們可以把它往前移,在前面的分支上構(gòu)stride為2,kernel_size為1的操作,讓輸入特征圖從前面就大幅的縮減,那么整個(gè)效率的提升是可想而知的。

最后看下推理引擎,推理引擎其實(shí)可以針對(duì)不同的平臺(tái)進(jìn)行優(yōu)化。我們重點(diǎn)講一下INT8的推理,我們知道INT8相對(duì)于普通的FP16的方式有很多優(yōu)點(diǎn),它的能效更高,單指令執(zhí)行產(chǎn)出更多,帶寬更高,內(nèi)存消耗更低等。
這里面我們可以利用calibration tool進(jìn)行一些模型的量化。具體過(guò)程是可以先在校準(zhǔn)數(shù)據(jù)集上運(yùn)行訓(xùn)練好的模型,然后記錄下在float32下每層的激活數(shù)據(jù),接下來(lái)可以對(duì)所有可能轉(zhuǎn)化的轉(zhuǎn)化成INT8的層級(jí)進(jìn)行轉(zhuǎn)化推理,然后收集一些精度下降的數(shù)據(jù),比如某些層轉(zhuǎn)換完之后,它的精度可能下滑了一個(gè)點(diǎn)是不能接受的,而有些層可能是幾乎沒(méi)有什么變化,我們就去轉(zhuǎn)化它。
在進(jìn)行這些模型的直接量化標(biāo)準(zhǔn)之后,我們可以讓32位的模型可以以INT8的方式進(jìn)行推理。不同的平臺(tái)不一樣,此項(xiàng)操作大概會(huì)有30%的性能的提升?;谇懊娴哪P蛢?yōu)化與推進(jìn)引擎,我們還需要構(gòu)建整個(gè)檢測(cè)流程的一個(gè)pipeline。那就用到了我們之前提到的英特爾的底層的一些媒體處理庫(kù),比如media SDK做一些編解碼的操作,包括Opencv的前端的預(yù)處理,包括后端的后處理等等,中間是我們的IE部分的推理框架。采用了OpenVINO與我們基于傳統(tǒng)Opencl等等手工優(yōu)化的方式來(lái)比,整體性能有了4倍的提升。

最后看下我們的一些落地案例,左圖是疫情期間在歐洲某國(guó)際巨頭醫(yī)藥廠(chǎng)商的倉(cāng)庫(kù)里落地的叉車(chē)。貨物里頭裝的都是藥品,我們可以想象對(duì)叉車(chē)的安全性要求非常高,藥品是非常昂貴的。右圖是一個(gè)石膏板廠(chǎng)的項(xiàng)目,大家看到這里的托盤(pán)類(lèi)型就比較多了,這里頭是雙孔的,其實(shí)嚴(yán)格意義來(lái)講,它并不是托板,這是客戶(hù)就地取材,用他們石膏板的板材進(jìn)行切割,做成了托盤(pán)的樣子。我們看到上面有一些纏繞膜,他們會(huì)有一些垂落,所以這個(gè)項(xiàng)目對(duì)我們的定位精度提出了非常大的挑戰(zhàn)。最終我們也是通過(guò)以5毫米的定位精度,滿(mǎn)足了客戶(hù)的要求,成功的部署。
基于VXSLAM的AMR定位技術(shù)與實(shí)踐
首先,簡(jiǎn)單的介紹下AMR,AMR是自主移動(dòng)機(jī)器人的簡(jiǎn)稱(chēng),與我們所熟悉的AGV相比,它有一些不同,最重要的一點(diǎn)是定位和導(dǎo)航的方式的不同,傳統(tǒng)的AGV主要是基于在地面上的一些引導(dǎo)線(xiàn),比如一些色帶或者一些磁條或者是一些電線(xiàn)等進(jìn)行導(dǎo)航,后期有一些在地面上布置二維碼的方案,還有一些在墻壁貼反光板的方案。
但無(wú)論怎樣,傳統(tǒng)AGV的導(dǎo)航的路徑一般都是比較固定的。與之對(duì)應(yīng)AMR主要是基于SLAM的定位方式,它無(wú)需對(duì)環(huán)境的基礎(chǔ)設(shè)施進(jìn)行改造,事先建立一個(gè)環(huán)境地圖之后就可以進(jìn)行定位?;诓煌亩ㄎ缓蛯?dǎo)航方式,他們有以下的不同,比如說(shuō)AGV更適合執(zhí)行相同的任務(wù),它更適合傳統(tǒng)的業(yè)務(wù),而AMR我們可以對(duì)它進(jìn)行靈活的配置,無(wú)論是線(xiàn)路也好還是任務(wù)也好,它更適合敏捷性的業(yè)務(wù)。比如制造業(yè)一個(gè)典型的場(chǎng)景,它具有作業(yè)點(diǎn)位比較多,業(yè)務(wù)變化頻繁,人機(jī)混行的情況,那AMR可能是一個(gè)更適合的方案。

SLAM技術(shù),傳統(tǒng)SLAM包含激光SLAM、視覺(jué)SLAM,甚至有超聲波的SLAM和防撞條的SLAM,但無(wú)論是哪種SLAM,本質(zhì)上都是一個(gè)狀態(tài)估計(jì)的問(wèn)題。載有傳感器的機(jī)器人在環(huán)境中運(yùn)動(dòng),通過(guò)對(duì)地標(biāo)點(diǎn)進(jìn)行觀(guān)測(cè),來(lái)估計(jì)自身的一個(gè)位置變化。同時(shí)我們把所有的地標(biāo)拼接起來(lái),構(gòu)建一幅地圖,這就是SLAM。
傳統(tǒng)的視覺(jué)SLAM,可能有一些比較好的方案,比如RTAB-Map, LSD-SLAM, VINS-Fusion等。近些年來(lái)隨著深度學(xué)習(xí)技術(shù)的引入,對(duì)于傳統(tǒng)SLAM性能有了一定的提升。這里我可能舉一個(gè)比較有代表性的HF-NET的例子,這里也是分為離線(xiàn)的建圖和在線(xiàn)的定位兩個(gè)部分,在離線(xiàn)建圖部分,我們對(duì)于輸入的圖像序列,通過(guò)HF-NET來(lái)提取它的local feature,這里用的是super point,然后通過(guò)SFM的方式來(lái)構(gòu)建整個(gè)場(chǎng)景的地圖,這里主要是把特征點(diǎn)進(jìn)行三角化。
另一方面,通過(guò)HF-NET來(lái)提取一些全局的特征,之后對(duì)特征進(jìn)行聚合,這里主要是用于后續(xù)的地點(diǎn)識(shí)別。在線(xiàn)定位階段,根據(jù)機(jī)器人端輸入的圖像,HF-NET可以先提取它的全局特征,然后基于地點(diǎn)識(shí)別的模塊,在整個(gè)場(chǎng)景中選取一些候選的位置。另外一個(gè)分支提取一些local feature,將local feature的位置與候選的一些3D點(diǎn)進(jìn)行2D到3D的匹配來(lái)恢復(fù)位置。目前HF-NET的方法對(duì)于一些大場(chǎng)景以及包括一些變化,比如說(shuō)光照變化比較大的場(chǎng)景的效果還是不錯(cuò)的。
目前VSLAM有一些成功的案例,比較有代表性的就是谷歌的VPS,它基于手機(jī)上的一個(gè)攝像頭拍攝的單張的圖像,就可以進(jìn)行室內(nèi)和室外的定位,進(jìn)而導(dǎo)航。另一家是Facebook,最近幾年 Facebook匯集了全世界做VSLAM領(lǐng)域比較有名的人才,包括收購(gòu)了Zurich Eye / Oculus等等,做成了一套視覺(jué)定位的方案,效果還是比較穩(wěn)定的。

VSLAM還存在很多挑戰(zhàn),最重要的可能是動(dòng)態(tài)環(huán)境方面帶來(lái)的挑戰(zhàn),上圖是一個(gè)典型的倉(cāng)庫(kù)里的環(huán)境,可以看到右上角都是紙箱,隨著作業(yè)時(shí)間的不同或者是任務(wù)的不同,這些擺放的料箱都會(huì)發(fā)生巨大的變化,比如機(jī)器人搬東西過(guò)去的時(shí)候可能會(huì)有三個(gè)貨箱,等再回來(lái)搬時(shí)可能一個(gè)都沒(méi)有。另外是光照的變化,通常產(chǎn)線(xiàn)上都是開(kāi)燈的,但是有的時(shí)候有些作業(yè)點(diǎn)位會(huì)隨著時(shí)間進(jìn)行排班等一些變化,導(dǎo)致AMR需要穿過(guò)一些關(guān)燈的區(qū)域。另外在倉(cāng)庫(kù)或者是廠(chǎng)房里,有些區(qū)域有巨型的天窗或者側(cè)窗,陽(yáng)光的變化也會(huì)影響定位。另一方面是空曠場(chǎng)景下定位精度的問(wèn)題。其實(shí)在很多的倉(cāng)庫(kù)里,固定目標(biāo)很少,只有幾個(gè)大的柱子,這些貨品都是隨著時(shí)間變化的,在如此空曠的場(chǎng)景下進(jìn)行精確的定位,也是一個(gè)比困難的問(wèn)題。

最后講下VXSLAM方案。首先說(shuō)明下X的含義,可以從兩個(gè)維度來(lái)看,第一個(gè)維度是有多種不同的視覺(jué)元素,除了最典型的point、edge之外,更重要的是引入了object這種含有語(yǔ)義的信息。從另外一個(gè)維度來(lái)看,進(jìn)行了異構(gòu)傳感器融合,首先最基本的是camera,此外還有IMU、Odom、激光。
我們整個(gè)系統(tǒng)設(shè)計(jì)最重要的目標(biāo)就是高魯棒性,這點(diǎn)和前面提到的叉車(chē)是一致的。上圖是整個(gè)算法的框架,最主要的是建圖和定位以及地圖管理。首先,建圖部分接受傳感器輸入的圖像以及各種數(shù)據(jù)之后,進(jìn)行BA優(yōu)化來(lái)構(gòu)建地圖,同時(shí)比較特殊之處在于我們有一個(gè)object estimation模塊進(jìn)行動(dòng)態(tài)目標(biāo)的去除和一些靜態(tài)目標(biāo)的位置估計(jì),把它加到地圖里。另外地點(diǎn)識(shí)別模塊可以用來(lái)進(jìn)行回環(huán)的校正,在地圖管理模塊里,我們維護(hù)了各種異構(gòu)的地圖,比如剛才提到的各種feature的地圖。從另外一個(gè)角度看,地圖是多層的,后面會(huì)向大家介紹。在定位階段,基于已經(jīng)建立好的地圖及地點(diǎn)識(shí)別模塊給到的一些結(jié)果,綜合來(lái)對(duì)位機(jī)器人的位置進(jìn)行估計(jì)。
首先講下異構(gòu)地圖,大家知道激光SLAM,特別是單線(xiàn)激光SLAM,在機(jī)器人領(lǐng)域還是比較成熟的,它有很多的優(yōu)勢(shì)。首先要融合的是激光的grid map,在這里融合其實(shí)有很多的問(wèn)題,可以看到兩種異構(gòu)的傳感器,他們的幀率不同、數(shù)據(jù)類(lèi)型不同、特性不同,比如對(duì)于激光,它的全局一致性非常好,但是他在局部的卻存在抖動(dòng)的情況,而視覺(jué)局部其實(shí)精度非常高,非常平滑,但是卻存在尺度漂移等問(wèn)題。我們采用聯(lián)合優(yōu)化的方式,能夠把激光的grid map和視覺(jué)的feature map做一個(gè)很好的融合,這樣在集成定位時(shí),提升定位的魯棒性與精度。
另外一方面是object map,基于OpenVINO的平臺(tái),其實(shí)還運(yùn)行著一個(gè)目標(biāo)檢測(cè)與pose estimation的模塊,對(duì)于人包括臨時(shí)擺放目標(biāo),會(huì)進(jìn)行一些去除,來(lái)防止對(duì)于建圖和定位的干擾。對(duì)于一些靜態(tài)目標(biāo),還會(huì)進(jìn)行位置的估計(jì)。比如在產(chǎn)線(xiàn)上有一些固定的重型設(shè)備,包括一些柱子、墻面、消防栓等,我們會(huì)把它加到地圖里面。
基于目標(biāo)的定位精度并不是很高,但是對(duì)魯棒性的提升卻非常大,在很多時(shí)候特別是動(dòng)態(tài)場(chǎng)景下,我們可以?xún)H基于一個(gè)目標(biāo),就對(duì)位置進(jìn)行估算,或者是對(duì)整個(gè)位姿進(jìn)行一些不完全的約束。這對(duì)于提升機(jī)器人整體定位的魯棒性至關(guān)重要。

還有多層地圖,剛才已經(jīng)提到一些地圖可能面臨的幾個(gè)比較重要的挑戰(zhàn),其中第一個(gè)是動(dòng)態(tài)環(huán)境,動(dòng)態(tài)環(huán)境包括布局的變化,光照的變化,在倉(cāng)庫(kù)里可能早晨、中午和晚上的光照非常不同。另外包括不同的作業(yè)區(qū)域,貨物的擺放可能也是隨著時(shí)間在發(fā)生變化,我們需要去建立一種多層的地圖,上圖是在不同時(shí)間段對(duì)同一個(gè)區(qū)域建立的地圖,我們可以把它放到一起進(jìn)行聯(lián)合的優(yōu)化。在整個(gè)地圖里我們構(gòu)建了靜態(tài)的參考地圖,在集成定位階段,可以根據(jù)各自的匹配程度與一些先驗(yàn)來(lái)判斷基于哪個(gè)地圖進(jìn)行定位。

最后看下客戶(hù)現(xiàn)場(chǎng)的落地,上圖左邊是它的一條產(chǎn)線(xiàn),可以看到在產(chǎn)線(xiàn)的兩邊堆了很多的物料箱,每天清晨的時(shí)候,這些物料箱就會(huì)被機(jī)器人搬運(yùn)到此處,隨著作業(yè)的進(jìn)行,這些物料箱會(huì)被搬運(yùn)至其他地點(diǎn)進(jìn)行補(bǔ)貨,所以這個(gè)場(chǎng)景的動(dòng)態(tài)性非常高。中間上面的圖像是建立的激光地圖,下面是視覺(jué)地圖,紅線(xiàn)是視覺(jué)定位的結(jié)果。
基于可靠穩(wěn)定的感知和定位技術(shù),AMR機(jī)器人可以實(shí)現(xiàn)1-3個(gè)月的快速部署,對(duì)產(chǎn)線(xiàn)的物流有2-3倍的效率提升,憑借高投資回報(bào)率、高可靠性和敏捷性,我們相信在物流領(lǐng)域及AMR將會(huì)有更廣泛的應(yīng)用。
最后總結(jié)下,以AI技術(shù)為核心,實(shí)現(xiàn)高可靠性的AMR感知與定位。我們一再?gòu)?qiáng)調(diào)可靠性與智能是我們?cè)诩夹g(shù)方面的兩個(gè)最重要的目標(biāo)?;诖?,我們希望打造高效、穩(wěn)定的智能物流機(jī)器人解決方案,賦能全球企業(yè)實(shí)現(xiàn)物流智能化升級(jí)。