《鴻蒙機(jī)器人比賽》課件-10-智能機(jī)器人智慧商場(chǎng)應(yīng)用場(chǎng)景開發(fā)_第1頁(yè)
《鴻蒙機(jī)器人比賽》課件-10-智能機(jī)器人智慧商場(chǎng)應(yīng)用場(chǎng)景開發(fā)_第2頁(yè)
《鴻蒙機(jī)器人比賽》課件-10-智能機(jī)器人智慧商場(chǎng)應(yīng)用場(chǎng)景開發(fā)_第3頁(yè)
《鴻蒙機(jī)器人比賽》課件-10-智能機(jī)器人智慧商場(chǎng)應(yīng)用場(chǎng)景開發(fā)_第4頁(yè)
《鴻蒙機(jī)器人比賽》課件-10-智能機(jī)器人智慧商場(chǎng)應(yīng)用場(chǎng)景開發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

智能機(jī)器人智慧商場(chǎng)應(yīng)用場(chǎng)景開發(fā)課程內(nèi)容課程背景場(chǎng)景程序分析和設(shè)計(jì)機(jī)械臂與攝像頭標(biāo)定人臉識(shí)別程序代碼視覺處理程序啟動(dòng)機(jī)器人驅(qū)動(dòng)程序與功能程序?NXROBO20232課程背景課程背景?NXROBO20234設(shè)計(jì)智能商場(chǎng)場(chǎng)景,客戶只需告訴機(jī)器人想要獲取的商品名字,機(jī)器人會(huì)識(shí)別出客戶的信息并根據(jù)客戶的需求前往對(duì)應(yīng)的位置抓取商品,并返回到客戶的位置。場(chǎng)景的要求與流程如下:1.當(dāng)客戶站在機(jī)器人前面時(shí),機(jī)器人通過人臉識(shí)別識(shí)別客戶(將提供3位客戶的照片)。2.機(jī)器人通過TTS詢問:“您好[客戶姓名],您想購(gòu)買什么產(chǎn)品?”3.客戶說“[產(chǎn)品名稱]”。4.機(jī)器人通過語(yǔ)音識(shí)別接收語(yǔ)音命令,并通過TTS響應(yīng)“我要取[產(chǎn)品名稱],請(qǐng)稍等。”(1分)5.轉(zhuǎn)到特定的產(chǎn)品區(qū)。產(chǎn)品尺寸為0.1mx0.1mx0.1m,帶有AR標(biāo)簽,隨機(jī)放置。6.找到產(chǎn)品并將其取出。7.前往購(gòu)物車區(qū)域,放下產(chǎn)品。8.返回客戶區(qū)域,向客戶報(bào)告“我已將[產(chǎn)品名稱]放到您的購(gòu)物車上”9.返回步驟1。場(chǎng)景程序分析和設(shè)計(jì)?NXROBO20236場(chǎng)景程序分析和設(shè)計(jì)根據(jù)場(chǎng)景的要求進(jìn)行分析,該場(chǎng)景包含了人臉識(shí)別、語(yǔ)音識(shí)別、語(yǔ)音合成、AR碼識(shí)別、建圖導(dǎo)航等機(jī)器人功能。1)人臉識(shí)別客戶信息,能夠分辨提供的三個(gè)人的圖片。采用第八章學(xué)習(xí)到的opencv人臉識(shí)別技術(shù)進(jìn)行編程,需要準(zhǔn)備三張人臉的圖片,尺寸大小盡量一致,如360*480,命名格式為()。然后對(duì)準(zhǔn)備的三張人臉圖片進(jìn)行訓(xùn)練,以生成訓(xùn)練的結(jié)果作人臉識(shí)別使用。2)采用語(yǔ)音合成功能包ros_vosk,通過向指定話題發(fā)布信息即可實(shí)現(xiàn)播放信息,根據(jù)識(shí)別到人臉的不同和聽到的商品的不同,輸出的結(jié)果也不同。3)采用語(yǔ)音識(shí)別功能包ros_vosk,啟動(dòng)功能包后,監(jiān)聽外部語(yǔ)音信息,并將識(shí)別的語(yǔ)音信息輸出,主要傳遞客戶想要的商品名字。4)使用自動(dòng)避障導(dǎo)航到達(dá)特定商品區(qū),在導(dǎo)航前使用slam建立好地圖,并通過amcl定位起始時(shí)自身定位。5)到達(dá)商品區(qū)后,使用AR碼識(shí)別,將AR碼中心點(diǎn)的位置信息傳遞回機(jī)器人,并將該位置信息與攝像頭與機(jī)械臂標(biāo)定文件數(shù)據(jù)結(jié)合,控制機(jī)械臂運(yùn)動(dòng)位置,實(shí)現(xiàn)抓取。6)抓取成功后,再次自動(dòng)導(dǎo)航回起始位置,將商品放下后進(jìn)行語(yǔ)音播報(bào)。待機(jī)等待再次執(zhí)行任務(wù)。機(jī)械臂與攝像頭標(biāo)定?NXROBO20238機(jī)械臂與攝像頭標(biāo)定打開攝像頭與機(jī)械臂標(biāo)定程序。?NXROBO20239機(jī)械臂與攝像頭標(biāo)定此時(shí)打開了這個(gè)界面,我們需要將機(jī)械臂的末端橙色部分對(duì)著圖中綠色方框,可以適當(dāng)調(diào)整攝像頭的拍攝角度來確定位置。?NXROBO202310機(jī)械臂與攝像頭標(biāo)定點(diǎn)擊旁邊的終端,按任意鍵確定。這時(shí),機(jī)械臂開始與攝像頭標(biāo)定。機(jī)械臂與攝像頭標(biāo)定?NXROBO202311這個(gè)是比較好的標(biāo)定過程,周圍沒有其他顏色干擾,所以要注意周圍光線、環(huán)境的影響,同時(shí)也要注意比較相關(guān)的參數(shù),因?yàn)槭褂玫氖且辉€性回歸,圖像位置與機(jī)械臂位置會(huì)有相對(duì)固定的定值增減,所以在標(biāo)定過程中,觀察圖像的x軸與y軸的變化量是否相對(duì)穩(wěn)定。標(biāo)定完成之后,退出即可。人臉識(shí)別程序代碼準(zhǔn)備人臉識(shí)別圖像13?NXROBO2023圖片命名格式為:id.姓名準(zhǔn)備了三張人臉信息圖像,放置在/face_recognizer/faces路徑下訓(xùn)練人臉圖像14?NXROBO2023運(yùn)行人臉識(shí)別訓(xùn)練程序train_date.py(/spark_vision/face_recognizer/script)$cd/home/spark/spark_noetic/src/spark_app/spark_vision/face_recognizer/script$python3train_date.py訓(xùn)練程序講解(頭文件與main函數(shù))?NXROBO2023importcv2importosfromPILimportImageimportnumpyasnpif__name__=='__main__':#獲取當(dāng)前腳本的目錄路徑script_dir=os.path.dirname(os.path.abspath(__file__))#圖片路徑path=os.path.join(script_dir,"../faces")#獲取圖象數(shù)組id標(biāo)簽和姓名faces,ids,names=getImageAndLables(path)#加載識(shí)別源recognizer=cv2.face.LBPHFaceRecognizer_create()#訓(xùn)練recognizer.train(faces,np.array(ids))#保存文件recognizer.write(os.path.join(path,"../data/haarcasades"))訓(xùn)練程序講解(getImageAndLables函數(shù))?NXROBO2023defgetImageAndLables(path):#存儲(chǔ)人臉數(shù)據(jù)faceSamples=[]#存儲(chǔ)id數(shù)據(jù)ids=[]#存儲(chǔ)姓名數(shù)據(jù)names=[]#存儲(chǔ)圖片信息imagePaths=[os.path.join(path,f)forfinos.listdir(path)]#打印數(shù)組imagePathsprint('數(shù)據(jù)排列:',imagePaths)#分類器地址cascade_path=os.path.join(path,"../data/haarcascades/haarcascade_frontalface_default.xml")#加載分類器face_detector=cv2.CascadeClassifier(cascade_path)

#遍歷列表中的圖片forimagePathinimagePaths:#打開圖片,并且灰度化PIL有九種不同的模式:1,L,P,RGB,RGBA,CMYK,YCbCr,I,F.PIL_img=Image.open(imagePath).convert('L')#將圖片轉(zhuǎn)換為數(shù)組,以黑白深淺img_numpy=np.array(PIL_img,'uint8')#獲取人臉特征faces=face_detector.detectMultiScale(img_numpy)#獲取每張有圖片的的ID和姓名id=int(os.path.split(imagePath)[1].split('.')[0])name=str(os.path.split(imagePath)[1].split('.')[1])#預(yù)防無面容圖片forx,y,w,hinfaces:ids.append(id)names.append(name)faceSamples.append(img_numpy[y:y+h,x:x+w])#打印臉部特征和IDprint('name:',name)print('fs:',faceSamples)returnfaceSamples,ids,names識(shí)別程序講解?NXROBO2023defface_detect_demo(self,img):try:#ROS圖像與OpenCV圖像格式之間進(jìn)行轉(zhuǎn)換img=CvBridge().imgmsg_to_cv2(img,"bgr8")exceptCvBridgeErrorase:print(e)#設(shè)置成灰度圖片gary=cv.cvtColor(img,cv.COLOR_BGR2GRAY)#導(dǎo)入人臉檢測(cè)訓(xùn)練好的模型--分類器face_detect=cv.CascadeClassifier(self.cascade_path)#開始檢測(cè)face=face_detect.detectMultiScale(gary,1.15,cv.CASCADE_SCALE_IMAGE)

forx,y,w,hinface:cv.rectangle(img,(x,y),(x+w,y+h),color=(0,0,255),thickness=2)#獲取人臉id與置信度ids,confidence=self.recogizer.predict(gary[y:y+h,x:x+w])print('id:',ids,'confidence:',confidence)#如果置信度超過閾值80,則將人臉標(biāo)記為"unknow",否則將顯示對(duì)應(yīng)的ID。ifconfidence>80:self.warningtime+=1ifself.warningtime>90:self.warningtime=0print("unknowpeople")cv.putText(img,'unknow',(x+10,y-10),cv.FONT_HERSHEY_SIMPLEX,0.75,(0,255,0),1)else:cv.putText(img,str(s[ids-1]),(x+10,y-10),cv.FONT_HERSHEY_SIMPLEX,0.75,(0,255,0),1)cv.imshow('result',img)cv.waitKey(1)人臉識(shí)別與語(yǔ)音合成程序初始化節(jié)點(diǎn),創(chuàng)建發(fā)布者和訂閱者?NXROBO202319初始化ROS節(jié)點(diǎn),創(chuàng)建發(fā)布者和訂閱者,創(chuàng)建發(fā)布語(yǔ)音合成、運(yùn)動(dòng)控制、機(jī)械臂抓取標(biāo)識(shí)話題的發(fā)布者,以及創(chuàng)建訂閱者訂閱語(yǔ)音識(shí)別結(jié)果、機(jī)械臂抓取狀態(tài)和move_base服務(wù)器信息:AMCL定位?NXROBO202320在運(yùn)行導(dǎo)航前,使用amcl讓機(jī)器人進(jìn)行自我定位,并自我旋轉(zhuǎn)一圈,有助于導(dǎo)航的精準(zhǔn):根據(jù)語(yǔ)音識(shí)別結(jié)果,確定目標(biāo)點(diǎn)位置?NXROBO202321根據(jù)識(shí)別到的語(yǔ)音結(jié)果,和商品名字(如蘋果、香蕉、橙子等)進(jìn)行對(duì)比,當(dāng)存在商品名字時(shí),設(shè)置目標(biāo)點(diǎn)為商品位置:Move_base運(yùn)動(dòng)規(guī)劃?NXROBO202322根據(jù)目標(biāo)點(diǎn)的不同,設(shè)置不同的movebase導(dǎo)航點(diǎn),包含目標(biāo)位置與位姿,若成功到達(dá)目標(biāo)點(diǎn),則發(fā)布抓取標(biāo)志信息:抓取成功后返回起始點(diǎn)?NXROBO202323根據(jù)抓取成功與否的標(biāo)志,設(shè)定成功抓取后返回起始點(diǎn),將商品放下:AR碼識(shí)別與機(jī)械臂抓取程序代碼實(shí)現(xiàn)創(chuàng)建發(fā)布者和訂閱者?NXROBO202325創(chuàng)建發(fā)布者發(fā)布機(jī)械臂位姿、機(jī)械臂吸盤、機(jī)械臂狀態(tài)和底盤運(yùn)動(dòng)話題,訂閱機(jī)械臂抓取話題。接收機(jī)械臂狀態(tài)信息,監(jiān)測(cè)圖像?NXROBO202326當(dāng)接收到機(jī)械臂狀態(tài)信息后,對(duì)該內(nèi)容進(jìn)行分析,如果為允許抓取狀態(tài),則訂閱攝像頭數(shù)尋找圖像中的ar碼,并進(jìn)行ar碼識(shí)別,將商品上的ar碼位置中心點(diǎn)返回;若畫面中沒有找到ar碼,則控制機(jī)器人旋轉(zhuǎn):機(jī)械臂抓取?NXROBO202327在抓取之前需要進(jìn)行機(jī)械臂與攝像頭標(biāo)定,獲取標(biāo)定信息,與識(shí)別到的ar碼中心位置相結(jié)合計(jì)算出機(jī)械臂運(yùn)動(dòng)位置:機(jī)械臂釋放?NXROBO202328設(shè)定機(jī)械臂釋放位置,但需要釋放商品時(shí),直接調(diào)用該方法,發(fā)布機(jī)械臂控制話題:?jiǎn)?dòng)機(jī)器人驅(qū)動(dòng)程序與功能程序?NXROBO202330啟動(dòng)機(jī)器人驅(qū)動(dòng)程序與功能程序?qū)⑷四樧R(shí)別程序與語(yǔ)音識(shí)別程序相結(jié)合啟動(dòng),創(chuàng)建face_recogniton.launch,當(dāng)識(shí)別到人臉時(shí),會(huì)自動(dòng)啟動(dòng)ar_grasp.launch?NXROBO202331啟動(dòng)機(jī)器人驅(qū)動(dòng)程序與功能程序結(jié)合前面課程的學(xué)習(xí),若

溫馨提示

  • 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)論