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

下載本文檔

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

文檔簡介

智能機器人智慧商場應(yīng)用場景開發(fā)課程內(nèi)容課程背景場景程序分析和設(shè)計機械臂與攝像頭標(biāo)定人臉識別程序代碼視覺處理程序啟動機器人驅(qū)動程序與功能程序?NXROBO20232課程背景課程背景?NXROBO20234設(shè)計智能商場場景,客戶只需告訴機器人想要獲取的商品名字,機器人會識別出客戶的信息并根據(jù)客戶的需求前往對應(yīng)的位置抓取商品,并返回到客戶的位置。場景的要求與流程如下:1.當(dāng)客戶站在機器人前面時,機器人通過人臉識別識別客戶(將提供3位客戶的照片)。2.機器人通過TTS詢問:“您好[客戶姓名],您想購買什么產(chǎn)品?”3.客戶說“[產(chǎn)品名稱]”。4.機器人通過語音識別接收語音命令,并通過TTS響應(yīng)“我要取[產(chǎn)品名稱],請稍等?!保?分)5.轉(zhuǎn)到特定的產(chǎn)品區(qū)。產(chǎn)品尺寸為0.1mx0.1mx0.1m,帶有AR標(biāo)簽,隨機放置。6.找到產(chǎn)品并將其取出。7.前往購物車區(qū)域,放下產(chǎn)品。8.返回客戶區(qū)域,向客戶報告“我已將[產(chǎn)品名稱]放到您的購物車上”9.返回步驟1。場景程序分析和設(shè)計?NXROBO20236場景程序分析和設(shè)計根據(jù)場景的要求進(jìn)行分析,該場景包含了人臉識別、語音識別、語音合成、AR碼識別、建圖導(dǎo)航等機器人功能。1)人臉識別客戶信息,能夠分辨提供的三個人的圖片。采用第八章學(xué)習(xí)到的opencv人臉識別技術(shù)進(jìn)行編程,需要準(zhǔn)備三張人臉的圖片,尺寸大小盡量一致,如360*480,命名格式為()。然后對準(zhǔn)備的三張人臉圖片進(jìn)行訓(xùn)練,以生成訓(xùn)練的結(jié)果作人臉識別使用。2)采用語音合成功能包ros_vosk,通過向指定話題發(fā)布信息即可實現(xiàn)播放信息,根據(jù)識別到人臉的不同和聽到的商品的不同,輸出的結(jié)果也不同。3)采用語音識別功能包ros_vosk,啟動功能包后,監(jiān)聽外部語音信息,并將識別的語音信息輸出,主要傳遞客戶想要的商品名字。4)使用自動避障導(dǎo)航到達(dá)特定商品區(qū),在導(dǎo)航前使用slam建立好地圖,并通過amcl定位起始時自身定位。5)到達(dá)商品區(qū)后,使用AR碼識別,將AR碼中心點的位置信息傳遞回機器人,并將該位置信息與攝像頭與機械臂標(biāo)定文件數(shù)據(jù)結(jié)合,控制機械臂運動位置,實現(xiàn)抓取。6)抓取成功后,再次自動導(dǎo)航回起始位置,將商品放下后進(jìn)行語音播報。待機等待再次執(zhí)行任務(wù)。機械臂與攝像頭標(biāo)定?NXROBO20238機械臂與攝像頭標(biāo)定打開攝像頭與機械臂標(biāo)定程序。?NXROBO20239機械臂與攝像頭標(biāo)定此時打開了這個界面,我們需要將機械臂的末端橙色部分對著圖中綠色方框,可以適當(dāng)調(diào)整攝像頭的拍攝角度來確定位置。?NXROBO202310機械臂與攝像頭標(biāo)定點擊旁邊的終端,按任意鍵確定。這時,機械臂開始與攝像頭標(biāo)定。機械臂與攝像頭標(biāo)定?NXROBO202311這個是比較好的標(biāo)定過程,周圍沒有其他顏色干擾,所以要注意周圍光線、環(huán)境的影響,同時也要注意比較相關(guān)的參數(shù),因為使用的是一元線性回歸,圖像位置與機械臂位置會有相對固定的定值增減,所以在標(biāo)定過程中,觀察圖像的x軸與y軸的變化量是否相對穩(wěn)定。標(biāo)定完成之后,退出即可。人臉識別程序代碼準(zhǔn)備人臉識別圖像13?NXROBO2023圖片命名格式為:id.姓名準(zhǔn)備了三張人臉信息圖像,放置在/face_recognizer/faces路徑下訓(xùn)練人臉圖像14?NXROBO2023運行人臉識別訓(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)#加載識別源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):#存儲人臉數(shù)據(jù)faceSamples=[]#存儲id數(shù)據(jù)ids=[]#存儲姓名數(shù)據(jù)names=[]#存儲圖片信息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識別程序講解?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)入人臉檢測訓(xùn)練好的模型--分類器face_detect=cv.CascadeClassifier(self.cascade_path)#開始檢測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",否則將顯示對應(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)人臉識別與語音合成程序初始化節(jié)點,創(chuàng)建發(fā)布者和訂閱者?NXROBO202319初始化ROS節(jié)點,創(chuàng)建發(fā)布者和訂閱者,創(chuàng)建發(fā)布語音合成、運動控制、機械臂抓取標(biāo)識話題的發(fā)布者,以及創(chuàng)建訂閱者訂閱語音識別結(jié)果、機械臂抓取狀態(tài)和move_base服務(wù)器信息:AMCL定位?NXROBO202320在運行導(dǎo)航前,使用amcl讓機器人進(jìn)行自我定位,并自我旋轉(zhuǎn)一圈,有助于導(dǎo)航的精準(zhǔn):根據(jù)語音識別結(jié)果,確定目標(biāo)點位置?NXROBO202321根據(jù)識別到的語音結(jié)果,和商品名字(如蘋果、香蕉、橙子等)進(jìn)行對比,當(dāng)存在商品名字時,設(shè)置目標(biāo)點為商品位置:Move_base運動規(guī)劃?NXROBO202322根據(jù)目標(biāo)點的不同,設(shè)置不同的movebase導(dǎo)航點,包含目標(biāo)位置與位姿,若成功到達(dá)目標(biāo)點,則發(fā)布抓取標(biāo)志信息:抓取成功后返回起始點?NXROBO202323根據(jù)抓取成功與否的標(biāo)志,設(shè)定成功抓取后返回起始點,將商品放下:AR碼識別與機械臂抓取程序代碼實現(xiàn)創(chuàng)建發(fā)布者和訂閱者?NXROBO202325創(chuàng)建發(fā)布者發(fā)布機械臂位姿、機械臂吸盤、機械臂狀態(tài)和底盤運動話題,訂閱機械臂抓取話題。接收機械臂狀態(tài)信息,監(jiān)測圖像?NXROBO202326當(dāng)接收到機械臂狀態(tài)信息后,對該內(nèi)容進(jìn)行分析,如果為允許抓取狀態(tài),則訂閱攝像頭數(shù)尋找圖像中的ar碼,并進(jìn)行ar碼識別,將商品上的ar碼位置中心點返回;若畫面中沒有找到ar碼,則控制機器人旋轉(zhuǎn):機械臂抓取?NXROBO202327在抓取之前需要進(jìn)行機械臂與攝像頭標(biāo)定,獲取標(biāo)定信息,與識別到的ar碼中心位置相結(jié)合計算出機械臂運動位置:機械臂釋放?NXROBO202328設(shè)定機械臂釋放位置,但需要釋放商品時,直接調(diào)用該方法,發(fā)布機械臂控制話題:啟動機器人驅(qū)動程序與功能程序?NXROBO202330啟動機器人驅(qū)動程序與功能程序?qū)⑷四樧R別程序與語音識別程序相結(jié)合啟動,創(chuàng)建face_recogniton.launch,當(dāng)識別到人臉時,會自動啟動ar_grasp.launch?NXROBO202331啟動機器人驅(qū)動程序與功能程序結(jié)合前面課程的學(xué)習(xí),若

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論