成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > python實現(xiàn)Nao機器人的單目測距

python實現(xiàn)Nao機器人的單目測距

熱門標(biāo)簽:鶴壁手機自動外呼系統(tǒng)違法嗎 地圖標(biāo)注多個 怎么辦理400客服電話 B52系統(tǒng)電梯外呼顯示E7 高德地圖標(biāo)注收入咋樣 萊蕪電信外呼系統(tǒng) 銀川電話機器人電話 企業(yè)微信地圖標(biāo)注 沈陽防封電銷電話卡

 本文實例為大家分享了python實現(xiàn)Nao機器人單目測距的具體代碼,供大家參考,具體內(nèi)容如下

此代碼適于用做對Nao機器人做視覺識別和測距實驗,只提供關(guān)鍵代碼部分,嘗試利用cv2去優(yōu)化代碼會更加簡潔喲!

此代碼的主要功能:

1.初始姿態(tài)下,通過更換攝像頭和轉(zhuǎn)頭去尋找目標(biāo)
2.通過顏色閾值識別目標(biāo),計算目標(biāo)與Nao的距離和角度

可以擴展功能:

1.在運動過程中對方向和距離進行多次測量和校正,提高準確度
2.找到目標(biāo)后,通過對目標(biāo)的測量,選擇使用哪個腳去踢目標(biāo)

#!/usr/bin/python2.7
#-*- encoding: UTF-8 -*-
import vision_definitions
#----------------------單目測距--------------------------------
#***********************************************
#@函數(shù)名:   DistAndDirect_cal(cxnum,rynum,colsum,rowsum,Head_angle,cameraID)
#@參數(shù):     (cxnum,rynum)是通過圖像識別得到球心的像素點坐標(biāo)
#           (colsum,rowsum)是圖片總大小:640*480
#            cameraID=0,取上攝像頭;cameraID=1,取下攝像頭
#@返回值:   無
#@功能說明: 采用機器人的下攝像頭進行測量球離機器人的相關(guān)角度與距離
def DistAndDirect_cal(cxnum,rynum,colsum,rowsum,Head_angle,cameraID):
    distx=-(cxnum-colsum/2)
    disty=rynum-rowsu/2
    print distx,disty
    Picture_angle=disty*47.64/480

    if cameraID ==0:
        h=0.62
        Camera_angle=12
    else:
        h=0.57
        Camera_angle=38
    #Head_angle[0]機器人仰俯角度
    Total_angle=math.pi*(Picture_angle+Camera_angle)/180+Head_angle[0]
    d1=h/math.tan(Total_angle)

    alpha=math.pi*(distx*60.92/640)/180
    d2=d1/math.cos(alpha)
    #Head_angle[1]機器人左右角度
    Forward_Distance=d2*math.cos(alpha+Head_angle[1])
    Sideward_Distance=-d2*math.sin(alpha+Head_angle[1])
#***********************************************

#@函數(shù)名:   GetNaoImage(IP,PORT,cameraID)
#@參數(shù):     略
#@返回值:   無
#@功能說明: 采調(diào)用機器人內(nèi)置攝像頭控制模塊,對當(dāng)前場景進行拍攝并保持。
#           由于球距離機器人約小于0.6m時,機器人額頭攝像頭無法看到,
#           所以需要變換攝像頭,cameraID=0,取上攝像頭;
#           cameraID=1,取下攝像頭
def Get NaoImage(IP,PORT,cameraID):
    camProxy=ALProxy("ALVideoDevice",IP,PORT)
    resolition=2 #VGA格式640*480
    colorSpace=11#RGB

    #選擇并啟用攝像頭
    camProxy.setParam(vision_definitions.kCameraSelectID,cameraID)
    videoClient=camProxy.subscribe("python_client",resolition,colorSpace,5)

    #獲取攝像機圖像。
    #image [6]包含以ASCII字符數(shù)組形式傳遞的圖像數(shù)據(jù)。
    naoImage=camProxy.getImageRemote(videoClient)

    camProxy.unsubscribe(videoClient)
    #獲取圖像大小和像素陣列。
    imageWidth=naoImage[0]
    imageHeight=naoImage[1]
    array=naoImage[6]
    #從我們的像素陣列創(chuàng)建一個PIL圖像。
    im=Image.fromstring("RGB",(imageWidth,imageHeight),array)
    #保存圖像。
    im.save("temp.jpg","JPEG")

#***********************************************
#@函數(shù)名:   findColorPattern(img,pattern)
#@參數(shù):     略
#@返回值:   無
#@功能說明:  將RGB圖像轉(zhuǎn)化為二值圖:此方法用的是cv,可以嘗試用cv2代碼會更加簡潔
def  findColorPattern(img,pattern):
    channels=[None,None,None]
    channels[0]=cv.CreateImage(cv.GetSize(img),8,1)
    channels[1]=cv.CreateImage(cv.GetSize(img),8,1)
    channels[2]=cv.CreateImage(cv.GetSize(img),8,1)
    ch0=cv.CreateImage(cv.GetSize(img),8,1)
    ch1=cv.CreateImage(cv.GetSize(img),8,1)
    ch2=cv.CreateImage(cv.GetSize(img),8,1)
    cv.Split(img,ch0,ch1,ch2,None)
    dest=[None,None,None,None]
    dest[0]=cv.CreateImage(cv.GetSize(img),8,1)
    dest[1]=cv.CreateImage(cv.GetSize(img),8,1)
    dest[2]=cv.CreateImage(cv.GetSize(img),8,1)
    dest[3]=cv.CreateImage(cv.GetSize(img),8,1)
    cv.Smooth(ch0,channels[0],cv.CV_GAUSSIAN,3,3,0)
    cv.Smooth(ch1,channels[1],cv.CV_GAUSSIAN,3,3,0)
    cv.Smooth(ch2,channels[2],cv.CV_GAUSSIAN,3,3,0)
    for i in range(3):
        k=2-i
        lower=pattern[k]-75#設(shè)置閾值
        upper=pattern[k]+75
        cv.InRangeS(channels[i],lower,upper,dest[i])

    cv.And(dest[0],dest[1],dest[3])
    temp=cv.CreateImage(cv.GetSize(img),8,1)
    cv.And(dest[2],dest[3],temp)
    '''
    cv.NameWindow("result",cv.CV_WINDOW_AUTOSIZE)
    cv.ShowImage("result",temp)
    cv.WaitKey(0)
    '''
    return temp

#***********************************************
#@函數(shù)名:   xyProject(matrix,imgaesize)
#@參數(shù):     matrix
#           imgaesize
#@返回值:   無
#@功能說明: 利用二值圖,計算球的像素坐標(biāo)。其原理是:遍歷各行各列
#           像素的數(shù)值的和,最大的組合即為球心坐標(biāo)
def xyProject(matrix,imagesize):
    #聲明一個數(shù)據(jù)類型為8位型單通道的imagessize[1]*1/1*imagessize[0]矩陣(初始值為 0)。
    colmask=cv.CreateMat(imagessize[1],1,cv.CV_8UC1)
    rowmask=cv.CreateMat(1,imagessize[0],cv.CV_8UC1)
    cv.Set(colmask,1)
    cv.Set(rowmask,1)

    colsum=[]
    for i in range(imagesize[0]):
        col=cv.GetCol(matrix,i)
        #計算向量點積
        a=cv.DotProduct(colmask,col)
        colsum.append(a)

    rowsum=[]
    for i in range(imagesize[1]):
        row=cv.GetRow(matrix,i)
        a=cv.DotProduct(rowmask,row)
        rowsum.append(a)

    return(colsum,rowsum)#得到各行各列“1”值的和

def crMax(colsum,rowsum):
    cx=max(colsum)
    ry=max(rowsum)
    for i in range(len(colsum)):
        if colsum[i]==cx:
            cxnum=i
    for i in range(len(rowsum)):
        if rowsum[i]==ry:
            rynum=i
    return(cxnum,rynum)
#***********************************************
#@函數(shù)名:  GetHeadAngles(robotIP,PORT)
#@參數(shù):    略
#@返回值:   無
#@功能說明:
def GetHeadAngles(robotIP,PORT):
    motionProxy=ALProxy("ALMotion",robotIP,PORT)
    names=["HeadPitch","HeadYaw"]
    useSensors=1
    sensorAngles=motionProxy.getAngles(names,useSensors)
    return sensorAngles
#***********************************************
#@函數(shù)名:  SetHeadAngles(robotIP,PORT,angles)
#@參數(shù):    略
#@返回值:   無
#@功能說明:
def SetHeadAngles(robotIP,PORT,angles):
    motionProxy=ALProxy("ALMotion",robotIP,PORT)
    motionProxy.setStiffnesses("Head",1.0)

    names=["HeadPitch","HeadYaw"]
    fractionMaxSpeed=0.2
    motionProxy.setAngles(names,angles,fractionMaxSpeed)

    time.sleep(2.0)
    motionProxy.setStiffnesses("Head",0.0)

#***********************************************
#@函數(shù)名:   Capture_Picture(IP,PORT,cameraID,angles,pattern_colors)
#@參數(shù):     angles
#           pattern_colors
#@返回值:   無
#@功能說明: 將上面的一系列函數(shù)整合起來

def Capture_Picture(IP,PORT,cameraID,angles,pattern_colors):
    SetHeadAngles(IP,PORT,angles)
    GetNaoImage(IP,PORT,cameraID)
    image=cv.LoadImage("temp.jpg")
    imagesize=cv.GetSize(image) #返回數(shù)值,兩個元素分別為列數(shù)和行數(shù)
    matrix=findColorPattern(image,pattern_colors)
    (colsum,rowsum)=xyProject(matrix,imagesize)
    (cxnum,rynum)=crMax(colsum,rowsum)
    cv.SaveImage("result.jpg",matrix)

    return (cxnum,rynum,colsum,rowsum)

 

#***********************************************
#@函數(shù)名:   Target_Detect_and_Distance(IP,PORT)
#@參數(shù):
#@返回值:   無
#@功能說明: 當(dāng)上攝像頭無法找到球時,切換到下攝像頭,然后在左轉(zhuǎn)右轉(zhuǎn)。
#       在這個過程中,如果發(fā)現(xiàn)目標(biāo),則計算距離并輸出距離
#       若始終未找到目標(biāo),則輸出距離為0。

def Target_Detect_and_Distance(IP,PORT):
    pattern_colors=(255,150,50)
    cameraID=0# 默認上攝像頭
    angles=[0,0]
    (cxnum,rynum,colsum,rowsum)=Capture_Picture(IP,PORT,cameraID,angles)

    if(cxnum,rynum)==(639,479):
        cameraID=1
        (cxnum,rynum,colsum,rowsum)=Capture_Picture(IP,PORT,cameraID,angles)
    if(cxnum,rynum)==(639,479):
        cameraID=0
        angles=[0.0.7]
        (cxnum,rynum,colsum,rowsum)=Capture_Picture(IP,PORT,cameraID,angles)
    if(cxnum,rynum)==(639,479):
        cameraID=0
        angles=[0,-0.7]
        (cxnum,rynum,colsum,rowsum)=Capture_Picture(IP,PORT,cameraID,angles)
    HeadAngles-GetHeadAngles(IP,PORT)
    ###############
    (Forward_Distance,Sideward_Distance)=DistAndDirect_cal(cxnum,rynum,colsum,rowsum,Head_angle,cameraID)
    if(cxnum,rynum)==(639,479):
        (Forward_Distance,Sideward_Distance)=(0,0)
    print "Forward_Distance=",Forward_Distance,"meters"
    print "Sideward_Distance="+Sideward_Distance+"meters"

#***********************************************
#@函數(shù)名:   Target_Detect_and_Distance(IP,PORT)
#@參數(shù):
#@返回值:   無
#@功能說明: 當(dāng)找到球后,可能會存在一定的誤差。
#           因此需要判斷球位于機器人前方的哪一側(cè),再來確定用哪只腳踢球

def Final_See(robotIP,PORT):
    pattern_colors=(255,150,50)
    angles=[0.5,0]
    SetHeadAngles(robotIP,PORT,angles)

    cameraID=1

    GetNaoImage(robotIP,PORT,cameraID)
    image=cv.LoadImage("temp.jpg")
    imagesize=cv.GetNaoImage(image)

    matrix=findColorPattern(image,pattern_colors)

    (colsum,rowsum)=xyProject(matrix,imgaesize)
    (cxnum,rynum)=crMax(colsum,rowsum)
    cv.SaveImage("result.jpg",matrix)

    HeadAngles=GetHeadAngles(robotIP,PORT)
    #########################
    (Forward_Distance,Sideward_Distance)=DistAndDirect_cal(cxnum,rynum,colsum,rowsum,Head_angle,cameraID)

    if cxnumlen(colsum)/2:
        side=0#左腳
    else:
        side=1#右腳
    print "side=",side
    print "last distance=",Forward_Distance
    return (side,Forward_Distance)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • python距離測量的方法
  • python控制nao機器人身體動作實例詳解
  • python實現(xiàn)nao機器人身體軀干和腿部動作操作
  • python實現(xiàn)nao機器人手臂動作控制
  • python程序控制NAO機器人行走

標(biāo)簽:葫蘆島 三亞 烏魯木齊 呼倫貝爾 安慶 銀川 呼倫貝爾 湘西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python實現(xiàn)Nao機器人的單目測距》,本文關(guān)鍵詞  python,實現(xiàn),Nao,機器,人的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python實現(xiàn)Nao機器人的單目測距》相關(guān)的同類信息!
  • 本頁收集關(guān)于python實現(xiàn)Nao機器人的單目測距的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    www.日韩系列| 精品久久久久久无码人妻| 蜜臀久久精品久久久用户群体| 免费国产在线观看| 丁香花高清在线观看完整版| 风间由美中文字幕在线看视频国产欧美| 色猫av在线| 91成年人网站| 欧美三级网站在线观看| 国产盗摄一区二区| 色aⅴ色av色av偷拍| 国产午夜精品久久久久久久| 成人激情视屏| 在线观看18视频网站| 自拍欧美日韩| www四虎com| 欧美××××黑人××性爽| 久久久国产精彩视频美女艺术照福利| 国产欧美日韩三级| 九七影院97影院理论片久久| 91青青草免费在线看| 国产精品精品一区二区三区午夜版| 美乳中文字幕| 97在线免费观看| 国产三级漂亮女教师| 久久偷看各类wc女厕嘘嘘偷窃| 亚洲一区二区三区欧美| 一区二区三区波多野结衣在线观看| 91香蕉在线| 99久久精品国产亚洲精品| 亚洲国产激情一区二区三区| 久久视频在线看| 99高清免费国产自产拍| 国产精品毛片久久久久久久| 91免费在线看片| 少妇性色午夜淫片aaa播放| 日韩三区在线观看| 91成人观看| 久久久婷婷一区二区三区不卡| 国产一区二区免费在线观看| 精品人妻无码一区二区三区蜜桃一| 成人亚洲精品7777| 天天摸日日摸狠狠添| 一区二区三区久久久久| 69国产精品成人在线播放| 日本欧美一区二区三区| 天堂аⅴ在线地址8| 亚洲一区二区成人在线观看| 精品久久久久久久久久久院品网| 亚洲精品日韩综合观看成人91| 无遮挡h肉3d动漫在线观看| 午夜精品久久久久影视| 亚洲一区二区三区中文字幕在线观看| 欧美日韩综合高清一区二区| 人人在草线视频在线观看| 99久久99久久精品国产片果冻| 久久欧美肥婆一二区| 久久精品伊人| 蜜臀av免费一区二区三区| 伊人久久综合影院| 亚洲色图欧美偷拍| 99视频精品全部免费看| 日韩精品在线视频免费观看| 91麻豆国产福利在线观看宅福利| 992在线观看| 欧美日韩一区自拍| 男人操女人的视频在线观看欧美| 黄色av电影在线观看| 波多野结衣绝顶大高潮| 成人性生生活性生交12| 国产区精品视频在线观看豆花| 国语自产精品视频在免费| 91色porny蝌蚪| 亚洲人亚洲人成电影网站色| 高h视频在线观看| 国内精品国产三级国产a久久| 成人免费毛片嘿嘿连载视频…| 免费在线日本| 日韩在线观看一区| 青青影院在线观看| 在线观看免费中文字幕| 超碰在线图片| 久久久999国产| 日韩xxx视频| 精品二区在线观看| 久草视频免费在线播放| 久久免费视频播放| 日韩一区欧美| 99综合在线| 欧美aaa大片视频一二区| 亚洲自拍偷拍在线| 视频一区视频二区视频三区视频四区国产| 欧亚精品中文字幕| 97久久精品| 色婷婷国产精品久久包臀| 国内自拍欧美| 妺妺窝人体色www看人体| 亚洲国产精品yw在线观看| 亚洲综合在线播放| 1024国产精品| 国产a级片免费观看| 欧美精品免费在线观看| 午夜亚洲国产au精品一区二区| 最新av电影网站| 日本三级久久久| 国产福利久久| av一区二区三区四区| 91精品视频观看| 成年人三级黄色片| 丁香久久五月| 欧洲精品在线一区| 欧美黑人xxx| 国内精品99| 九九九久久久| 91丝袜美腿高跟国产极品老师| 国产精品第72页| 国产女同性恋一区二区| 国产美女视频免费观看下载软件| 丝袜亚洲欧美日韩综合| 日本一区二区在线播放| 黄色国产网站| 国产精品毛片视频| 女人体1963| 一级黄色片在线免费观看| 久久久精品动漫| 在线观看亚洲一区| 在线国产网址| 中文字幕精品网| 国产精品国产三级国产在线观看| 久久电影网电视剧免费观看| 精品不卡一区二区三区| 欧美在线一卡| 国产高清不卡| 国产伦精品一区二区三区免费迷| 免费在线观看的黄色网址| 亚洲aⅴ优女av综合久久久| 最新在线中文字幕| 色琪琪丁香婷婷综合久久| 亚洲欧洲美洲综合色网| 日韩一卡二卡在线| 日韩一级高清毛片| 欧美高清一级大片| 国产情侣一区在线| 国产对白在线| 精品视频www| 精品一区二区三区四区| 一区二区三区在线视频播放| 日韩经典中文字幕在线观看| 日韩av免费网站| 欧美午夜不卡影院在线观看完整版免费| 成人高清视频免费观看| 精品蜜桃传媒| 奇米一区二区三区四区久久| 91国产丝袜播放在线| 日韩av中文字幕一区二区三区| 日韩大片欧美大片| 日本天堂免费a| 国产激情在线看| 久久久日本电影| 黄色免费网站视频| 一本色道久久综合狠狠躁的番外| 香蕉视频黄在线观看| 亚洲精品国产精品国产自| 国产精品亚洲不卡a| 大菠萝精品导航| 色哟哟免费网站| 成人看片视频| japan乱配videos老少配| 日本不卡一区二区在线观看| 久久夜色精品国产欧美乱极品| 亚洲黄色免费观看| 潘金莲一级淫片aaaaaaa| 韩日一区二区三区| 亚洲精品久久久久国产| 欧美国产精品专区| 亚洲经典一区| 最好看更新中文字幕| 91社区在线观看播放| 九九免费精品视频| 天天做综合网| 午夜视频福利在线观看| www 成人av com| 嫩草研究院在线| av电影资源| 五十路亲子中出在线观看| www.99com| 亚洲欧美视频二区| 亚洲成a人片| 亚洲成色精品| 在线观看免费电影| 日本a级c片免费看三区| 久久香蕉国产| 67194成人在线观看| 26uuu久久噜噜噜噜| 亚洲激情久久久| 国产日产亚洲精品系列| 九九视频免费在线观看| 久久久国际精品| 人体内射精一区二区三区| 中文一区在线播放| 狂野欧美激情性xxxx| 高清日韩av电影| 国产精品美女久久久久人| 国产精品欧美经典| 丁香婷婷综合网| 欧美www视频| 国自产拍偷拍福利精品免费一| 91精品国产欧美一区二区成人| 日韩区一区二| 欧美在线一级视频| 视频在线不卡| 中文字幕免费高清视频| 刘亦菲毛片一区二区三区| 9.1人成人免费视频网站| www.xxx黄| 美女被爆操网站| 亚欧美在线观看| 国产性色视频| 黑人巨茎大战欧美白妇| 欧美视频二区| 亚洲a成v人在线观看| 91看片淫黄大片91| 欧美久久久精品| 伊人精品在线观看| 四虎5151久久欧美毛片| 人妻少妇一区二区| 亚洲熟妇无码另类久久久| 中文一区二区完整视频在线观看| 日韩欧美精品电影| 日韩av网站免费在线| 久久 天天综合| а天堂8中文最新版在线官网| 黄页在线观看免费| 免费观看日韩毛片| 精品人妻一区二区免费| 亚洲精品成人电影| 国产精品99精品无码视亚| 久久久久免费网| 日韩女优人人人人射在线视频| 久久99久久精品| av资源种子在线观看| 男女爽爽爽视频| 国产国产一区| a级片在线观看免费| 欧美一级视频在线播放| 精品美女被调教视频大全网站| 亚洲成年人在线观看| 艳母动漫在线观看| 久久婷婷国产麻豆91天堂| 奇米精品一区二区三区| 亚洲一二三四区| 欧美aaaxxxx做受视频| 亚洲999一在线观看www| 色播五月综合网| 18禁网站免费无遮挡无码中文| 福利在线一区二区三区| 久久久久久久久久久久久女过产乱| 日韩最新中文字幕电影免费看| 欧美大片专区| 5566中文字幕一区二区电影| 亚洲国产日韩成人综合天堂| 无码人妻av免费一区二区三区| 亚洲欧美校园春色| 国产精品久久久久久久久久久久冷| 日本黄色大片在线观看| 成年女人在线看片| 久久久九九九热| 性色av一区二区三区免费| 91这里只有精品| 日韩欧美在线播放视频| 精品不卡一区二区| 国产亲伦免费视频播放| 久色视频网站| 欧美xxxx免费虐| 国产夫绿帽单男3p精品视频| 亚洲国产精品久久精品怡红院| 国产一区二区在线|播放| 超碰av在线免费观看| 蜜桃视频在线观看视频| 久久激情电影| 色网站在线免费观看| 一区二区三区黄| 久久精品理论片| 亚洲男人天堂网站| 成年女人a毛片免费视频| 成人h动漫精品一区| 天天综合国产| 99久久免费精品高清特色大片| 成人婷婷网色偷偷亚洲男人的天堂| 久久精品国产精品亚洲红杏| 国产亚洲高清在线观看| 免费观看中文字幕| 欧美爱爱免费视频| 精品国产亚洲一区二区三区大结局| 亚洲第一大网站| 精品国产一区二区三区四| 成人三级视频在线观看一区二区| 国产免费高清一区| 成年人免费在线观看网站| 欧美色图色就是色| 亚洲人成亚洲人成在线观看图片| 国内精品一区二区三区| 丁香花在线电影| www.亚洲国产| 国产一级片播放| 久久午夜宅男免费网站| 国产性色视频| 久久精品免费网站| 久操免费在线视频| 5278欧美一区二区三区| 国产一级黄色电影| 亚洲黄色网址在线观看| 日韩在线高清视频| 国产特级毛片| 最新黄色av网址| 女同性互吃奶乳免费视频| 好看的av在线| 亚洲成av人乱码色午夜| 中文字幕乱码无码人妻系列蜜桃| 日韩成人动漫| 天天插天天干天天操| 亚洲成人网在线观看| 欧美日韩一区不卡| 国内精品久久久| 亚洲mv在线观看| 国产美女视频网站| 伊人色综合网| 天天干夜夜艹|