999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Webots的人形機(jī)器人爬坡研究

2023-02-09 08:05:12吳嘉榮王佳星梁嘉瀅林藝琳白雪松
科技風(fēng) 2023年2期
關(guān)鍵詞:動作

吳嘉榮 王佳星 梁嘉瀅 林藝琳 白雪松

廣東第二師范學(xué)院物理與信息工程學(xué)院 廣東廣州 510000

隨著科技的發(fā)展、社會的進(jìn)步,人形機(jī)器人的迅猛發(fā)展為人們的生活帶來了極大的便利,服務(wù)于人類的生活和工作的各個方面并有效發(fā)揮了較大的作用。如今的學(xué)術(shù)界和業(yè)界、專家群體和公眾視線都著眼于人形機(jī)器人的研究與發(fā)展,對人形機(jī)器人的關(guān)注度和期望值隨著研究的逐漸深入而逐步增長。現(xiàn)在人形機(jī)器人被更廣泛、更深入地研究,不僅是對人形機(jī)器人的構(gòu)造和功能等的研究,更是為了將其更好地應(yīng)用到人們的工作和生活中,做一些人們難以完成、煩瑣、不愿意去做的事情。

經(jīng)過以往的探究與經(jīng)驗表明,人形機(jī)器人的發(fā)明創(chuàng)造有其便利的一面,也有其不利的一面。由于現(xiàn)實所處環(huán)境情況的復(fù)雜,人形機(jī)器人未必能準(zhǔn)確并及時地應(yīng)付復(fù)雜的地理環(huán)境以及難以預(yù)計的突發(fā)情況,判斷力和行動的精準(zhǔn)度有待提高。因此,對于其研究應(yīng)用前景較廣,也將是人形機(jī)器人與各領(lǐng)域磨合過程中面臨的一些挑戰(zhàn)。為此,本項目提出基于Webots平臺的人形機(jī)器人爬坡研究,在Webots平臺中研究NAO機(jī)器人摔倒后恢復(fù)站立等情況,以此來分析如何應(yīng)對在實際情況中遇到的復(fù)雜路面,初步設(shè)想是分析判斷機(jī)器人如何識別自身倒地,并通過這個分析的過程研究機(jī)器人如何識別正在上坡和下坡。以此達(dá)到本項目促進(jìn)人形機(jī)器人復(fù)雜路面移動的目標(biāo),這對人形機(jī)器人研究基礎(chǔ)提升有重大的意義。

1 Webots簡介

本項目的研究工具采用的是由Cyberbotics公司出品的便攜式機(jī)器人仿真平臺——Webots。它是一款集建模、編程、仿真、程序移植為一體的機(jī)器人研發(fā)軟件。而本文的項目是關(guān)于人形機(jī)器人的設(shè)計與仿真,Webots軟件即可以實現(xiàn)機(jī)器人的多種功能如爬坡、抓取、輔助作業(yè)等的模擬仿真,對我們研究人形機(jī)器人的行走有著很大幫助,可以很好地將我們的初步設(shè)想模擬出來,而真實的機(jī)器人大多數(shù)比較昂貴,通過Webots這樣一個良好的仿真平臺可以事先檢測自己所寫算法的優(yōu)劣程度。我們不僅可以通過機(jī)器人的動畫來判斷我們的算法是否可行,與此同時,Webots提供了與真實機(jī)器人的接口,我們可以用已經(jīng)寫好的算法來檢測實際的機(jī)器人,并且可以根據(jù)實際情況進(jìn)行調(diào)整與優(yōu)化,使我們的項目更加完善,同時也不會輕易地造成機(jī)器人的器件損失,有效地降低了成本。而且通過仿真軟件Webots,可以利用互聯(lián)網(wǎng)將機(jī)器人所模擬的形態(tài)隨時隨地展示給其他人,不僅能夠與他人進(jìn)行更好的溝通與交流,而且在一定程度上解決了真實場地的需求與模擬場地不匹配的問題,機(jī)器人也能夠有更大的行動空間與范圍。本次研究建立的機(jī)器人模型,渲染的顏色整體采用白色和紅色,體現(xiàn)了機(jī)器人模型的科技感。

Webots結(jié)合C語言與Python語言等算法工具功能,展示了場景可控化定制破解人形機(jī)器人行動過程中的難點和狀況,為打造人形機(jī)器人具備更強(qiáng)的機(jī)器行動能力,具備自主完成更多任務(wù)的能力,提供了良好的技術(shù)參考和依據(jù)。

本項目對于人形機(jī)器人爬坡的設(shè)計,通過代碼識別判斷人形機(jī)器人的動作所處狀態(tài),對上下坡地判定設(shè)置參考坐標(biāo),能夠較為精準(zhǔn)地識別上下坡,并在判斷成功后執(zhí)行上坡行走或下坡行走的動作。

2 機(jī)器人爬坡的關(guān)鍵技術(shù)

2.1 機(jī)器人平衡控制

通過不斷實際測試,得出屈膝站立是最為穩(wěn)妥的站立姿勢,于是通過在官網(wǎng)模擬機(jī)器人各個部位動作,再計算改動作幅度的具體數(shù)值,應(yīng)用到機(jī)器人身上。在這過程中也加深了平衡的重要性,在不斷測試更新動作的同時也在不斷地優(yōu)化機(jī)器人的平衡性,使其做到真正穩(wěn)定的站立。在機(jī)器人完成上坡動作的過程中調(diào)整腳部舵機(jī)旋轉(zhuǎn)數(shù)值,以此保持機(jī)器人的身體平衡,核心代碼如下:

def balance(self,l,r):

acc=self.accelerometer.getValues()#調(diào)用加速度傳感器

self.RAnkleRoll=self.getDevice("RAnkleRoll")#調(diào)用機(jī)器人下肢

self.LAnkleRoll=self.getDevice("LAnkleRoll")

self.RAnklePitch=self.getDevice("RAnklePitch")

self.LAnklePitch=self.getDevice("LAnklePitch")

RAR=self.RAnkleRoll.getTargetPosition()#獲取各部分關(guān)節(jié)旋轉(zhuǎn)數(shù)值

LAR=self.LAnkleRoll.getTargetPosition()

RAP=self.RAnklePitch.getTargetPosition()

LAP=self.LAnklePitch.getTargetPosition()

if self.UpUphillForwards.isOver()==True:#檢測到上一個動作已完成

if-1

self.RAnkleRoll.setPosition(RAR-0.001)#設(shè)置機(jī)器人關(guān)節(jié)旋轉(zhuǎn)程度

print('調(diào)整右腳-左前方傾斜')

if acc[1]<=-1:

self.RAnkleRoll.setPosition(RAR+0.005)

print('調(diào)整-腳底位置不當(dāng),矯正幅度增加')

if 1>acc[1]>0.8:

self.RAnkleRoll.setPosition(RAR+0.001)

print('調(diào)整右腳-右前方傾斜')

if acc[1]>=1:

self.RAnkleRoll.setPosition(RAR+0.005)

print('調(diào)整右腳-右前方大幅度傾斜')

2.2 爬坡姿勢

有了穩(wěn)定的站立機(jī)制,便開始著手爬坡的設(shè)計。一開始機(jī)器人爬坡經(jīng)常會摔倒,向前踏步時因為地形的改變,身體重心向后傾斜,而原本設(shè)計用于站立的固定姿勢不能及時調(diào)整動作導(dǎo)致摔倒,如圖1所示。

圖1 爬坡過程

我們調(diào)整方向,既然用站立姿勢上坡不行,那就改變姿勢。在瀏覽官網(wǎng)發(fā)現(xiàn),機(jī)器人本身帶有一個gps用以實時記錄機(jī)器人的坐標(biāo),我們將其設(shè)備調(diào)用,通過對實時gpsY軸坐標(biāo)的變化并設(shè)置參考值,通過當(dāng)前坐標(biāo)與參考值進(jìn)行對比來判斷機(jī)器人是否進(jìn)入斜坡,實際運用一段時間后,發(fā)現(xiàn)該方法不夠靈敏,對于上坡的判定不夠精確,并且僅能判斷單個斜坡。其核心代碼如下:

def ChangeOfEnviroment(self):

p=self.gps.getValues()#獲取三軸數(shù)值

if p[1]>0:#0為參考數(shù)值,若p[1]Y軸大于該值則執(zhí)行動作

self.currentlyPlaying.stop()#停止當(dāng)前動作

self.UphillForwards.setLoop(True)#設(shè)置循環(huán)動作為UphillForwards

self.UphillForwards.play()#播放動作

2.3 數(shù)據(jù)記錄

鑒于判斷Y軸坐標(biāo)的問題,我們采用了pandas庫作為輔助,實時記錄Y軸坐標(biāo)的數(shù)據(jù)儲存于excel文件中,在需要判斷的時候再通過pandas庫讀取excel中的數(shù)據(jù)進(jìn)行判斷。實時記錄坐標(biāo)的好處是可以記錄上一秒的Y軸坐標(biāo),再與現(xiàn)在的Y軸坐標(biāo)進(jìn)行對比,檢測這一秒甚至更短的時間內(nèi)Y軸變化的幅度來判斷機(jī)器人是否將要進(jìn)行爬坡,這使機(jī)器人對于坡度以及復(fù)雜地形的判斷更為靈敏。核心代碼如下:

info_website=pd.DataFrame({'title':['時間','坐標(biāo)'],'數(shù)據(jù)':['time[0],[%f %f %f]' %(p[0],p[1],p[2])]})

writer=pd.ExcelWriter('website.xlsx')#創(chuàng)建ExcelWrite對象保存數(shù)據(jù)

info_website.to_excel(writer)

writer.save()

print('保存成功')

df=pd.read_excel('website.xlsx',index_col='name',skiprows=[2])#讀取excel數(shù)據(jù)

df.columns=df.columns.str.replace('Unnamed.*','col_label')#處理未命名列

print(df)

通過獲取機(jī)器人各部分舵機(jī)實時數(shù)值,配合官方提供的機(jī)器人動作模擬器對機(jī)器人的動作進(jìn)行模擬和矯正,不同幀數(shù)分別做設(shè)定動作,設(shè)置動作時要保證動作的流暢性,使機(jī)器人不會因為突然變動的大幅度動作使機(jī)器人重心出現(xiàn)大幅度傾斜,再配合機(jī)器人的動作讀取和機(jī)器人鍵位操作函數(shù),可對機(jī)器人進(jìn)行人為的動作調(diào)整或自我的動作調(diào)整,如圖2所示。

圖2 總體動作設(shè)置

2.4 爬坡動作的策略設(shè)計

解決了坡度的檢測問題,開始對爬坡動作進(jìn)行設(shè)計。鑒于之前站立姿勢的錯誤點,此次我們對于重心更為關(guān)注,并且在爬坡方面我們通過調(diào)整步伐來提高爬坡的速度。爬坡的動作依次是,檢測到將要進(jìn)入斜坡,停止當(dāng)前動作并且將腿收回;轉(zhuǎn)移身體的重心至左腳,具體動作是向左擺動左腿的胯,之后抬起右腳,使機(jī)器人進(jìn)入一個右腿懸空的狀態(tài);向上抬腳時發(fā)現(xiàn)若不及時彎曲膝蓋,可能會導(dǎo)致在遇到一些傾斜幅度較大的斜坡時會影響抬腿的動作,于是我們在向上抬腳的同時向后彎曲膝蓋,并且收起腳踝;向前伸腿,抬腿到一定幅度時,向前彎曲膝蓋并調(diào)整腳踝,便于腳部的落地。本套連貫姿勢運用時發(fā)現(xiàn),爬坡的成功率未能得到保證,在一些特殊的情況如機(jī)器人動作運行較快向前摔倒,或者機(jī)器人未與斜面平行,自身角度存在一定傾斜時,爬坡將會摔倒。

觀察爬坡摔倒的姿勢發(fā)現(xiàn),機(jī)器人并不會一踏上斜坡就摔倒,而是在踏上斜坡后因為在慣性的作用下重心不穩(wěn)導(dǎo)致摔倒,于是我們從腳踝部分進(jìn)行調(diào)整,通過調(diào)整腳踝來穩(wěn)定機(jī)器人的重心。我們一開始是使用了機(jī)器人本身帶有的腳步壓力傳感器來進(jìn)行監(jiān)控,同樣是檢測對比,通過腳步受到的壓力來判斷機(jī)器人是否存在一個重心不穩(wěn)的問題。調(diào)用設(shè)備獲取當(dāng)前腳部姿勢的數(shù)據(jù),對比重心穩(wěn)定情況下的數(shù)據(jù)來進(jìn)行調(diào)整,每次都在當(dāng)前設(shè)備的值上略微添加或減少數(shù)據(jù)的值,以此來改變機(jī)器人腳踝的姿勢。進(jìn)行多次模擬發(fā)現(xiàn),在當(dāng)前仿真環(huán)境下,腳部的壓力不能很好地進(jìn)行反饋,得到的數(shù)據(jù)與實際情況相反,經(jīng)常因為得到相反的數(shù)值導(dǎo)致的判斷失誤而摔倒,于是我們更換策略,使用了機(jī)器人的加速度傳感器。

監(jiān)測大量數(shù)據(jù)發(fā)現(xiàn),機(jī)器人在每次摔倒時,自身的Y軸加速度會有輕微的變化,而重心正常的數(shù)值在一定幅度之間,超過該數(shù)值機(jī)器人則會因為重心不穩(wěn)摔倒,于是我們采用同樣的方法,實時監(jiān)測Y軸加速度的值,通過對比判斷機(jī)器人是否將要摔倒,加速度輕微偏離正常區(qū)間,動作幅度較小,緩慢調(diào)整腳踝。若加速度較大幅度偏離了正常區(qū)間,則動作幅度加大,迅速調(diào)整腳踝并且進(jìn)入輕微偏離區(qū)間后,恢復(fù)正常調(diào)整速度,使其Y軸加速度值保持在特定區(qū)間內(nèi),以此來保證機(jī)器人的平衡。喚醒機(jī)器人加速度核心代碼如下:

def findAndEnableDevices(self):

self.timeStep=int(self.getBasicTimeStep())#設(shè)置當(dāng)前世界步長

self.accelerometer=self.getDevice('accelerometer')#喚醒加速度計

self.accelerometer.enable(4*self.timeStep)

結(jié)語

本文提出了在Webots平臺中研究人形機(jī)器人,并基于NAO機(jī)器人做了測試,并提出機(jī)器人可行的爬坡策略。人形機(jī)器人在面對斜坡時首先應(yīng)進(jìn)行環(huán)境感知和路徑規(guī)劃,判定接下來是上坡行走還是下坡行走,再根據(jù)路面情況做出判斷,平衡機(jī)體,實現(xiàn)穩(wěn)定爬坡,完成在斜坡上拾取物體的工作。人形機(jī)器人的機(jī)械結(jié)構(gòu)與人類相近,它可以模擬人的雙足行走功能,而人的雙足可以靈活地適應(yīng)不同的地形。

致謝:感謝廣東第二師范學(xué)院教務(wù)處鄭譽(yù)煌老師的耐心指導(dǎo)和提供相應(yīng)的實驗環(huán)境。

猜你喜歡
動作
動作不可少(下)
巧借動作寫友愛
下一個動作
動作描寫要具體
畫動作
讓動作“活”起來
動作描寫不可少
非同一般的吃飯動作
動作喜劇電影周
電影故事(2015年30期)2015-02-27 09:03:12
神奇的手
主站蜘蛛池模板: 欧美在线视频a| 凹凸精品免费精品视频| 制服丝袜一区| 免费在线成人网| 亚洲中文字幕在线一区播放| 亚洲精品无码不卡在线播放| 一级毛片高清| 99精品福利视频| 久久久国产精品无码专区| 欧美、日韩、国产综合一区| 九九免费观看全部免费视频| 国产成人AV大片大片在线播放 | 欧美成人精品一区二区| 一级毛片在线免费视频| 97在线公开视频| 久久人体视频| 精品视频第一页| 日韩精品久久久久久久电影蜜臀| www.91中文字幕| 国产91熟女高潮一区二区| 婷婷色丁香综合激情| 就去吻亚洲精品国产欧美| 四虎永久免费在线| 欧美国产综合视频| 亚洲国产成人久久77| 精品国产污污免费网站| 免费中文字幕在在线不卡| 特级精品毛片免费观看| 成人无码区免费视频网站蜜臀| 亚洲欧美自拍中文| 国产成人禁片在线观看| 制服丝袜无码每日更新| 丰满人妻被猛烈进入无码| 在线不卡免费视频| 欧美a级在线| 国产一区二区精品福利| 永久在线精品免费视频观看| 国产国产人成免费视频77777 | 国产欧美日韩专区发布| 久久永久免费人妻精品| 91麻豆精品国产高清在线| 国产网友愉拍精品视频| 欧美成一级| 欧美天堂在线| 久久久久九九精品影院| AⅤ色综合久久天堂AV色综合| 99这里精品| 国产自在线播放| 成人年鲁鲁在线观看视频| 成人午夜精品一级毛片| 99久久精彩视频| 久久久久亚洲av成人网人人软件| 午夜啪啪网| 一区二区理伦视频| 国产成在线观看免费视频| 伦伦影院精品一区| 99九九成人免费视频精品| 2021最新国产精品网站| 最新国产精品鲁鲁免费视频| 成人韩免费网站| 伊人久久久久久久| 国产成人精品高清在线| 亚洲浓毛av| 久久久受www免费人成| 国产精品护士| 亚洲专区一区二区在线观看| 青青草原国产免费av观看| 试看120秒男女啪啪免费| 亚洲天堂精品视频| 欧美亚洲国产一区| 欧美综合一区二区三区| 国产97视频在线| 欧美一区二区三区不卡免费| 国产美女自慰在线观看| 精品久久综合1区2区3区激情| 国产亚洲男人的天堂在线观看 | 日本手机在线视频| 久久成人18免费| 青青草原国产av福利网站| 亚洲午夜天堂| 日韩欧美国产区| 成人国产精品2021|