




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
機(jī)器人操作系統(tǒng)(ROS)機(jī)器人操作系統(tǒng)(ROS)機(jī)器視覺8.1機(jī)器人操作系統(tǒng)(ROS)8.1機(jī)器視覺機(jī)器視覺作為人工智能技術(shù)的一個重要分支,近些年發(fā)展迅速。其主要原理為通過計算機(jī)和相機(jī),對生物的視覺系統(tǒng)進(jìn)行模擬,將被攝目標(biāo)的信息轉(zhuǎn)換成可以被計算機(jī)進(jìn)行處理的圖像信息。并根據(jù)其圖像特征,經(jīng)由圖像處理系統(tǒng),代替人類對目標(biāo)進(jìn)行的識別、檢測、分類、跟蹤等功能。機(jī)器人操作系統(tǒng)(ROS)8.1.1相機(jī)驅(qū)動安裝本節(jié)使用的攝像頭品牌為RMONCAM林柏視,如圖8-1所示。$sudoapt-getinstallros-melodic-usb-cam運(yùn)行以下命令下載攝像頭驅(qū)動(具體版本視安裝的ros版本決定),如果系統(tǒng)已經(jīng)安裝了驅(qū)動,則會顯示如右圖所示的結(jié)果:安裝攝像頭驅(qū)動結(jié)果圖林柏視相機(jī)機(jī)器人操作系統(tǒng)(ROS)8.1.1相機(jī)驅(qū)動安裝下面進(jìn)行相機(jī)測試,運(yùn)行以下命令啟動攝像頭驅(qū)動功能包,運(yùn)行結(jié)果如下圖所示:$roslaunchusb_camusb_cam-test.launch此時出現(xiàn)的圖像一般為電腦自帶的攝像頭,如果電腦不帶攝像頭且沒有接入攝像頭,就不會出現(xiàn)該界面。一般電腦的攝像頭默認(rèn)為video0,外部接入的USB攝像頭編號視實(shí)際情況而定(本節(jié)攝像頭設(shè)備號為video2)。機(jī)器人操作系統(tǒng)(ROS)8.1.1相機(jī)驅(qū)動安裝如果電腦沒有自帶攝像頭,外部接入的攝像頭就會為video0,運(yùn)行以下命令查看攝像頭端口號,運(yùn)行結(jié)果如下圖所示:$ls/dev/當(dāng)電腦自帶攝像頭且外接有攝像頭時,usb_cam-test.launch只會調(diào)用自帶的攝像頭,此時如果要調(diào)用外接攝像頭,需運(yùn)行以下命令修改usb_cam-test.launch,運(yùn)行結(jié)果如下圖所示。機(jī)器人操作系統(tǒng)(ROS)8.1.1相機(jī)驅(qū)動安裝將video_device的value從“/dev/video0”變成“/dev/video2”,這樣就能通過usb_cam-test.launch調(diào)用外接攝像頭,usb_cam-test.launch內(nèi)容如下所示:<launch><nodename="usb_cam"pkg="usb_cam"type="usb_cam_node"output="screen"><paramname="video_device"value="/dev/video0"/><paramname="image_width"value="640"/><paramname="image_height"value="480"/><paramname="pixel_format"value="yuyv"/><paramname="camera_frame_id"value="usb_cam"/><paramname="io_method"value="mmap"/></node></launch>修改完usb_cam-test.launch,運(yùn)行以下命令重新啟動攝像頭驅(qū)動功能包,此時啟動的攝像頭是外接攝像頭,運(yùn)行結(jié)果如右圖所示:$roslaunchusb_camusb_cam-test.launch機(jī)器人操作系統(tǒng)(ROS)8.1.2通過rviz顯示圖像首先通過如下命令查看攝像頭發(fā)布的話題列表,運(yùn)行結(jié)果如圖8-7所示:$rostopiclist可以看到/usb_cam/image_raw是攝像頭功能包發(fā)布的圖像話題。機(jī)器人操作系統(tǒng)(ROS)8.1.2通過rviz顯示圖像運(yùn)行以下命令打開rviz:$rosrunrvizrviz點(diǎn)擊左下角Add,選擇Image,確定并將其勾選,rviz添加Image界面如圖8-9所示機(jī)器人操作系統(tǒng)(ROS)8.1.2通過rviz顯示圖像然后修改Image的ImageTopic為/usb_cam/image_raw,即可通過rviz調(diào)用攝像頭顯示圖像,顯示結(jié)果如圖所示。機(jī)器人操作系統(tǒng)(ROS)8.1.3相機(jī)內(nèi)參標(biāo)定我們所處的世界是三維的,而照片是二維的。相機(jī)的內(nèi)參標(biāo)定就是假定相機(jī)符合針孔相機(jī)模型,通過內(nèi)參的標(biāo)定求解模型的參數(shù),以達(dá)到用簡單的數(shù)學(xué)模型來表達(dá)復(fù)雜成像過程的目的,并求解出成像的反過程。而且由于鏡頭徑向曲率產(chǎn)生的徑向畸變,以及相機(jī)組裝過程中不能使透鏡嚴(yán)格和成像平面平行而產(chǎn)生的切向畸變,會在圖像的數(shù)據(jù)處理中產(chǎn)生誤差,因此需要針對攝像頭的參數(shù)進(jìn)行標(biāo)定。本節(jié)采用的是基于ROS的可對單目和雙目相機(jī)標(biāo)定的camera_calibration功能包。機(jī)器人操作系統(tǒng)(ROS)8.1.3相機(jī)內(nèi)參標(biāo)定在進(jìn)行標(biāo)定之前,需要先準(zhǔn)備一個尺寸已知的標(biāo)定板。本書采用如下圖所示的棋盤格標(biāo)定板,每個棋盤格的邊長為0.024m。實(shí)際標(biāo)定過程中檢測的為標(biāo)定板內(nèi)部的角點(diǎn),標(biāo)定的size也就是內(nèi)部交叉點(diǎn)的個數(shù),而不是方形格的個數(shù),因此該棋盤格的size為9*6。除了標(biāo)定板的size,還需要知道標(biāo)定板每個棋盤格的邊長square,準(zhǔn)備好了標(biāo)定板之后,就能開始標(biāo)定過程了。棋盤格標(biāo)定板相機(jī)內(nèi)存標(biāo)定-標(biāo)定板準(zhǔn)備機(jī)器人操作系統(tǒng)(ROS)8.1.3相機(jī)內(nèi)參標(biāo)定運(yùn)行以下命令安裝攝像頭標(biāo)定功能包c(diǎn)amera_calibration,運(yùn)行結(jié)果如圖所示:$sudoapt-getinstallros-melodic-camera-calibration
安裝標(biāo)定功能包相機(jī)內(nèi)存標(biāo)定-camera_calibration功能表配置機(jī)器人操作系統(tǒng)(ROS)8.1.3相機(jī)內(nèi)參標(biāo)定在標(biāo)定前,通過以下命令啟動攝像頭:$roslaunchusb_camusb_cam-test.launch運(yùn)行以下命令啟動標(biāo)定程序,對攝像頭進(jìn)行標(biāo)定,啟動標(biāo)定程序結(jié)果下圖所示:$rosruncamera_calibrationcameracalibrator.py--size9x6--square0.024image:=/usb_cam/image_rawcamera:=/usb_cam
啟動標(biāo)定程序其中--size后面為使用的標(biāo)定板的內(nèi)部角點(diǎn)的個數(shù),--square為每個棋盤格的邊長,單位為米,image:=/usb_cam/image_raw表示標(biāo)定時訂閱的圖像來自于/usb_cam/image_raw的話題,camera:=/usb_cam表示的當(dāng)前攝像頭名,具體的參數(shù)請根據(jù)使用的標(biāo)定板和攝像頭進(jìn)行選擇。相機(jī)內(nèi)存標(biāo)定-啟動標(biāo)定節(jié)點(diǎn)機(jī)器人操作系統(tǒng)(ROS)8.1.3相機(jī)內(nèi)參標(biāo)定進(jìn)入標(biāo)定界面后,將標(biāo)定板放在攝像頭下,就可以開始標(biāo)定了,標(biāo)定界面如圖所示。相機(jī)內(nèi)存標(biāo)定-標(biāo)定相機(jī)參數(shù)機(jī)器人操作系統(tǒng)(ROS)8.1.3相機(jī)內(nèi)參標(biāo)定標(biāo)定界面右邊有四個進(jìn)度條,標(biāo)定沒有成功時,右下角的三個按鈕都是不能使用的,通過將標(biāo)定板左右移動來提高X進(jìn)度條的進(jìn)度,將標(biāo)定板上下移動來提高Y進(jìn)度條的進(jìn)度,標(biāo)定過程如圖所示。相機(jī)內(nèi)存標(biāo)定-標(biāo)定相機(jī)參數(shù)機(jī)器人操作系統(tǒng)(ROS)8.1.3相機(jī)內(nèi)參標(biāo)定將標(biāo)定板前后移動來提高Size進(jìn)度條的進(jìn)度,將標(biāo)定板左右上下傾斜來提高Skew的進(jìn)度條,標(biāo)定過程如下圖所示。相機(jī)內(nèi)存標(biāo)定-標(biāo)定相機(jī)參數(shù)機(jī)器人操作系統(tǒng)(ROS)8.1.3相機(jī)內(nèi)參標(biāo)定通過不斷變更位置來提高標(biāo)定進(jìn)度條進(jìn)度指導(dǎo)四個進(jìn)度條都達(dá)到滿意的效果,標(biāo)定結(jié)束如下圖所示。相機(jī)內(nèi)存標(biāo)定-標(biāo)定相機(jī)參數(shù)機(jī)器人操作系統(tǒng)(ROS)8.1.3相機(jī)內(nèi)參標(biāo)定最后按下右下角的CALIBRATE按鈕對內(nèi)參系數(shù)和畸變系數(shù)進(jìn)行計算,計算過程中不要關(guān)閉標(biāo)定界面,參數(shù)計算完成后,SAVE和COMMIT按鈕會亮起,點(diǎn)擊SAVE按鈕對結(jié)果數(shù)據(jù)進(jìn)行保存,此時在終端中也會出現(xiàn)標(biāo)定的結(jié)果,如下圖所示。相機(jī)內(nèi)存標(biāo)定-標(biāo)定相機(jī)參數(shù)機(jī)器人操作系統(tǒng)(ROS)8.1.3相機(jī)內(nèi)參標(biāo)定點(diǎn)擊COMMIT按鈕可以提交數(shù)據(jù)并退出標(biāo)定界面,并在~/.ros/camera_info/文件夾下生成標(biāo)定參數(shù)配置文件head_camera.yaml如圖所示,此時重新打開相機(jī),將自動加載該配置文件,矯正相機(jī)畸變,相機(jī)內(nèi)存標(biāo)定-標(biāo)定相機(jī)參數(shù)機(jī)器人操作系統(tǒng)(ROS)8.1.3相機(jī)內(nèi)參標(biāo)定根據(jù)終端中輸出的路徑可以找到保存的標(biāo)定參數(shù),標(biāo)定參數(shù)保存路徑如下圖所示。根據(jù)上述路徑打開壓縮包c(diǎn)alibrationdata.tar.gz,里面放著標(biāo)定過程的圖片以及存放標(biāo)定結(jié)果的ost.txt和ost.yaml文件,這里的ost.yaml文件就是所需要的內(nèi)參標(biāo)定結(jié)果文件,如圖所示。相機(jī)內(nèi)存標(biāo)定-標(biāo)定相機(jī)參數(shù)機(jī)器人操作系統(tǒng)(ROS)8.1.4人臉識別實(shí)驗(yàn)OpenCV作為開源的計算機(jī)視覺庫,由一系列的C函數(shù)和少量的C++類構(gòu)成,實(shí)現(xiàn)了圖像處理和計算機(jī)視覺方面的很多通用算法,能夠運(yùn)行于Windows、Linux、macOS等操作系統(tǒng)中,由于我們使用的ROS版本為Melodic,在該版本中ROS會默認(rèn)安裝OpenCV3,可以通過以下命令查看OpenCV是否安裝成功以及其版本:$python>>>importcv2>>>cv2.__version__當(dāng)出現(xiàn)如圖所示結(jié)果時,就說明OpenCV被正常安裝,對應(yīng)的版本為OpenCV3.2.0:
若未安裝OpenCV,可以運(yùn)行如下命令安裝:$sudo
apt-get
install
ros-melodic-vision-opencv
libopencv-dev
python-opencv人臉識別實(shí)驗(yàn)-Opencv配置機(jī)器人操作系統(tǒng)(ROS)8.1.4人臉識別實(shí)驗(yàn)人臉識別實(shí)驗(yàn)-初始化函數(shù)部分def__init__(self):rospy.on_shutdown(self.cleanup);#創(chuàng)建cv_bridge,由于在Opencv中,圖像是以Mat矩陣的形式儲存的,這與ROS的圖像消息的格式有所區(qū)別,因此需要通過cv_bridge將其聯(lián)系起來。self.bridge=CvBridge()self.image_pub=rospy.Publisher("cv_bridge_image",Image,queue_size=1)
#獲取haar特征的級聯(lián)表的XML文件,設(shè)置在啟動文件中。cascade_1=rospy.get_param("~cascade_1","")cascade_2=rospy.get_param("~cascade_2","")
#使用級聯(lián)表初始化haar特征檢測器。self.cascade_1=cv2.CascadeClassifier(cascade_1)self.cascade_2=cv2.CascadeClassifier(cascade_2)
#設(shè)置級聯(lián)表的參數(shù),優(yōu)化人臉識別,可以在launch文件中重新配置。self.haar_scaleFactor=rospy.get_param("~haar_scaleFactor",1.2)self.haar_minNeighbors=rospy.get_param("~haar_minNeighbors",2)self.haar_minSize=rospy.get_param("~haar_minSize",40)self.haar_maxSize=rospy.get_param("~haar_maxSize",60)self.color=(50,255,50)
#初始化圖像數(shù)據(jù)的訂閱者,使圖像的話題名能在launch文件中重映射。self.image_sub=rospy.Subscriber("input_rgb_image",Image,self.image_callback,queue_size=1)機(jī)器人操作系統(tǒng)(ROS)8.1.4人臉識別實(shí)驗(yàn)人臉識別實(shí)驗(yàn)-圖像處理函數(shù)部分defimage_callback(self,data):#使用cv_bridge將ROS的圖像數(shù)據(jù)轉(zhuǎn)換成OpenCV的圖像格式。try:cv_image=self.bridge.imgmsg_to_cv2(data,"bgr8")frame=np.array(cv_image,dtype=np.uint8)exceptCvBridgeError,e:printe
#將圖像轉(zhuǎn)化成灰度圖。grey_image=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)#平衡直方圖以減少光線影響。grey_image=cv2.equalizeHist(grey_image)#嘗試檢測人臉faces_result=self.detect_face(grey_image#在opencv的窗口中框出所有人臉區(qū)域。iflen(faces_result)>0:forfaceinfaces_result:x,y,w,h=facecv2.rectangle(cv_image,(x,y),(x+w,y+h),self.color,2
#將識別后的圖像轉(zhuǎn)換成ROS消息并發(fā)布。self.image_pub.publish(self.bridge.cv2_to_imgmsg(cv_image,"bgr8"))機(jī)器人操作系統(tǒng)(ROS)8.1.4人臉識別實(shí)驗(yàn)人臉識別實(shí)驗(yàn)-人臉識別函數(shù)部分defdetect_face(self,input_image):#正面人臉的模型匹配。ifself.cascade_1:faces=self.cascade_1.detectMultiScale(input_image,self.haar_scaleFactor,self.haar_minNeighbors,cv2.CASCADE_SCALE_IMAGE,(self.haar_minSize,self.haar_maxSize))#側(cè)面人臉的模型匹配。iflen(faces)==0andself.cascade_2:faces=self.cascade_2.detectMultiScale(input_image,self.haar_scaleFactor,self.haar_minNeighbors,cv2.CASCADE_SCALE_IMAGE,self.
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中醫(yī)養(yǎng)生課件
- 中專紅色文化課件圖片
- 共享共贏汽車租賃合同
- 管理外包合同
- 高端住宅委托代理合同
- 《會計信息系統(tǒng)》全套教學(xué)課件
- 塑鋼門窗設(shè)計與施工合同
- 六安職業(yè)技術(shù)學(xué)院《環(huán)境基礎(chǔ)化學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧朝陽市普通高中2025屆高三下學(xué)期第二次段考?xì)v史試題試卷含解析
- 山東省青島市58中2025屆高三高考模擬試卷(二)物理試題含解析
- 《紡織材料生產(chǎn)》課件-項(xiàng)目7:短纖工段
- 提水試驗(yàn)過程及數(shù)據(jù)處理
- 城市供水企業(yè)(用氯)安全檢查表
- 《口腔基礎(chǔ)醫(yī)學(xué)概要》課件-口腔的功能
- 棗桃小食心蟲的發(fā)生與防治
- 憫農(nóng)-幼兒園通用課件
- 米蘭大教堂完整版本
- 失能老人消防應(yīng)急預(yù)案
- CONSORT2010流程圖(FlowDiagram)【模板】文檔
- 國際經(jīng)濟(jì)與貿(mào)易-關(guān)于阿里巴巴國際站RTS頻道外貿(mào)新機(jī)遇的研究
- 切片機(jī)安全操作保養(yǎng)規(guī)程
評論
0/150
提交評論