最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

蜘蛛機(jī)器人項(xiàng)目的具體細(xì)節(jié)

2022-08-25 18:34 作者:扎之克  | 我要投稿

蜘蛛機(jī)器人的機(jī)械結(jié)構(gòu):

它是由一個(gè)底盤(pán)、六個(gè)足、18個(gè)舵機(jī)構(gòu)成的18自由度的機(jī)器人,每一個(gè)足分成三節(jié)。

蜘蛛機(jī)器人的主控芯片:

主控芯片,stm32f103rct6,這個(gè)芯片的主頻最高為72MHZ。

它的RAM大小為48 KB,如此大小的RAM和主頻足以支持它實(shí)時(shí)演算腿部角度。

其內(nèi)置有八個(gè)定時(shí)器,其中有六個(gè)定時(shí)器帶有pwm模塊,所以這個(gè)芯片可以同時(shí)輸出24路pwm信號(hào)。

外置的傳感器:

MPU6050傳感器,此模塊用于測(cè)量蜘蛛的姿態(tài),我需要姿態(tài)信息來(lái)使蜘蛛保持平衡

ESP8266 WIFI模塊,此模塊主要用于與手機(jī)通信,實(shí)現(xiàn)手機(jī)無(wú)線操控蜘蛛

蜘蛛的控制方式:

電腦上位機(jī)串口控制運(yùn)動(dòng)模式(有線串口1)

按鍵控制蜘蛛運(yùn)動(dòng)模式

????運(yùn)動(dòng)模式1、手機(jī)重力或姿態(tài)控制蜘蛛以三角步態(tài)移動(dòng)以及移動(dòng)的距離和方向((WIFI無(wú)線控制,無(wú)線串口3)

????運(yùn)動(dòng)模式2、手機(jī)重力或姿態(tài)控制蜘蛛姿態(tài)(WIFI無(wú)線控制,無(wú)線串口3)

????運(yùn)動(dòng)模式3、底盤(pán)各種平移測(cè)試

????運(yùn)動(dòng)模式4、旋轉(zhuǎn)三角步態(tài)測(cè)試

關(guān)于重力控制或姿態(tài)控制兩種算法的優(yōu)缺點(diǎn):重力控制的傳感器數(shù)據(jù)來(lái)源于手機(jī)的加速度傳感器,姿態(tài)控制的傳感器數(shù)據(jù)來(lái)源于手機(jī)的加速度和角速度傳感器數(shù)據(jù)的融合(互補(bǔ)濾波),所以重力控制的動(dòng)態(tài)特性不如姿態(tài)控制,其靜態(tài)特性又與姿態(tài)控制的相差無(wú)幾,但是這里重力控制的計(jì)算量要比姿態(tài)控制少很多(不需要對(duì)傳感器數(shù)據(jù)進(jìn)行復(fù)雜的處理)

硬件參數(shù)與機(jī)電結(jié)構(gòu)設(shè)計(jì):

總共有18個(gè)舵機(jī)、一個(gè)舵機(jī)有3根線,如果只算上舵機(jī)線的話,那也有54根線,如果沒(méi)有規(guī)劃好線路,那會(huì)導(dǎo)致一些不可名狀的問(wèn)題。

這里是這樣處理接線問(wèn)題的,我在洞洞板上使用了母座排針(插開(kāi)發(fā)板上)和公排針(舵機(jī)引線插上邊),我將它稱為插卡式接線結(jié)構(gòu)(與Arduino與其模塊的連接方式雷同)

根據(jù)下圖的引腳設(shè)定以及開(kāi)發(fā)板引腳圖,


硬件:引腳設(shè)定
開(kāi)發(fā)板引腳圖

我很快就焊接了一個(gè)插卡式連接板,然后再將舵機(jī)過(guò)長(zhǎng)的引線剪短(這里用到了熱縮管),最終效果如下圖

硬件參數(shù):接下來(lái)考慮系統(tǒng)的硬件參數(shù),WIFI模塊的串口與STM32的串口3相連,波特率115200........如下圖

為了不占用MPU的資源,這里采用DMA傳輸?shù)姆绞絹?lái)接收WIFI模塊的數(shù)據(jù)。

來(lái)自ESP8266的數(shù)據(jù)的接收邏輯:首先我使能了串口3的空閑中斷,ESP8266接收到手機(jī)發(fā)送過(guò)來(lái)的控制命令后通過(guò)串口傳輸?shù)絊TM32上,當(dāng)數(shù)據(jù)傳輸完成后,芯片進(jìn)入串口空閑中斷程序

空閑中斷程序

空閑中斷程序會(huì)處理接收的數(shù)據(jù)并重新啟動(dòng)DMA傳輸,并將數(shù)據(jù)通過(guò)串口1打印到上位機(jī)上。

電腦的串口與STM32的串口1相連,波特率之類的參數(shù)與串口3的一樣,這里依然使用DMA傳輸來(lái)接收上位機(jī)的數(shù)據(jù)

(串口1的DMA傳輸優(yōu)先級(jí)和中斷優(yōu)先級(jí)要低于串口3的)

MPU6050的I2C接口與STM32的模擬I2C接口相連。在閱讀MPU6050的手冊(cè),我們可以給出其寄存器的名字(能反映寄存器功能)與地址的映射關(guān)系(宏定義),這樣可以提高代碼的可讀性(修改Keli5的編碼模式后,我們可以使用中文宏定義與中文名變量)

MPU6050參數(shù)設(shè)置:

設(shè)定8個(gè)采樣點(diǎn)的平均濾波

加速度傳感器量程±2G

角速度傳感器量程±2000dps

采樣頻率50HZ


在這里,我啟動(dòng)了某個(gè)50HZ(與MPU6050的采樣頻率一樣)的定時(shí)器中斷,中斷程序:讀取MPU6050的數(shù)據(jù)并使用四元數(shù)積分、互補(bǔ)濾波的算法來(lái)解算姿態(tài)。

在所有中斷程序中,它的優(yōu)先級(jí)是最高的。

定時(shí)器2中斷程序

當(dāng)然,在使用MPU6050之前,先校正了陀螺儀的零點(diǎn)漂移和加速度計(jì)的零飄和比例尺(橢球擬合)

關(guān)于最小二乘法橢球擬合:當(dāng)加速度傳感器在靜止?fàn)顟B(tài)下(僅受到重力作用),加速度的模等于重力的模,根據(jù)這個(gè)關(guān)系,我們可以列出下面的方程,而這正是一個(gè)橢球方程,但我們不能通過(guò)這個(gè)方程來(lái)解各軸零飄和比例尺,這是因?yàn)閿?shù)據(jù)存有噪聲即便是平均濾波過(guò)的數(shù)據(jù)(濾波不能消除噪聲,只能抑制噪聲)。

在三維空間中將大量的加速度傳感器靜止時(shí)的數(shù)據(jù)繪制出來(lái),我們預(yù)測(cè)這些點(diǎn)的分布應(yīng)該會(huì)近似一個(gè)橢球,事實(shí)上也正是如此,我們?nèi)フ业揭粋€(gè)最接近的橢球方程,用這個(gè)方程的系數(shù)(零飄和比例尺)來(lái)作為傳感器的零飄和比例尺,我們用加速度矢量范數(shù)的方差來(lái)衡量數(shù)據(jù)組與橢球的距離,這樣的話,我們只要求得誤差(距離)方程最小時(shí)各軸的零飄和比例尺即可,這樣的方法就是最小二乘法橢球擬合

橢球擬合指的是:當(dāng)我們有大量傳感器靜止無(wú)噪聲時(shí)的數(shù)

這是之前寫(xiě)的最小二乘法橢球擬合函數(shù),太長(zhǎng)了,主要方法就是求得距離函數(shù)的導(dǎo)數(shù),然后令導(dǎo)數(shù)為0得到一個(gè)線性方程組,然后用高斯消元法求解

程序的邏輯與結(jié)構(gòu)

接下來(lái)來(lái)討論一下程序的邏輯與結(jié)構(gòu),實(shí)際上上面的文字已經(jīng)把所有的中斷程序都解釋過(guò)了,所以,這里只需要討論主程序和其他函數(shù)的邏輯與結(jié)構(gòu)

main邏輯:

我定義了一個(gè)狀態(tài)標(biāo)志位變量Mode,這個(gè)標(biāo)志位用于表示機(jī)器人的運(yùn)動(dòng)模式,當(dāng)硬件初始化萬(wàn)后,程序就進(jìn)入了while循環(huán)里,while循環(huán)里主要是Switch語(yǔ)句,根據(jù)Mode的值執(zhí)行相應(yīng)的運(yùn)動(dòng)程序

main函數(shù)之外定義的函數(shù):

舵機(jī)測(cè)試:在main函數(shù)之外還定義了不少測(cè)試用的函數(shù),這些函數(shù)主要是用來(lái)測(cè)試舵機(jī)的好壞與舵機(jī)接線是否正確用的

a是一個(gè)隨時(shí)間變化的變量,Servo_angtotime函數(shù)將電機(jī)角度轉(zhuǎn)化為PWM高電平時(shí)長(zhǎng)

蜘蛛機(jī)器人的運(yùn)動(dòng)原理與算法https://www.bilibili.com/video/BV1WB4y147D9?spm_id_from=333.999.0.0&;vd_source=6cfcfed4d7c52b2a577834ce56144709已經(jīng)講述過(guò)了,這里貼出代碼演示一下算法的具體過(guò)程

蜘蛛機(jī)器人單腿逆運(yùn)動(dòng)學(xué)方程,因?yàn)橛昧硕S指針,代碼太長(zhǎng)了!方程實(shí)際上就是用視頻中的那個(gè)方程
單腿運(yùn)動(dòng)正解
使用四元數(shù)計(jì)算矢量旋轉(zhuǎn)后的值,這沒(méi)什么好說(shuō)的
矢量加減法,沒(méi)什么好說(shuō)的
關(guān)節(jié)系轉(zhuǎn)底盤(pán)系
底盤(pán)系轉(zhuǎn)關(guān)節(jié)系


我們發(fā)出一個(gè)運(yùn)動(dòng)指令,讓機(jī)器人底盤(pán)位移(10cm,10cm),對(duì)矢量指令(10cm,10cm)100均分(這是我隨便給出的一個(gè)數(shù),實(shí)際上我們可以通過(guò)舵機(jī)的精度來(lái)計(jì)算多少均分)線性插值,通過(guò)控制某個(gè)與時(shí)間成正比的變量來(lái)控制機(jī)器人的運(yùn)動(dòng),改變系數(shù)即可改變機(jī)器人執(zhí)行指令的速度。

程序結(jié)構(gòu):

程序結(jié)構(gòu)
main.c下的全局變量
main.c下的全局變量



蜘蛛機(jī)器人項(xiàng)目的具體細(xì)節(jié)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
蒲江县| 塘沽区| 中江县| 建德市| 横山县| 延吉市| 梁山县| 高州市| 开封市| 涿鹿县| 井陉县| 平阳县| 安陆市| 三亚市| 板桥市| 赣州市| 扶绥县| 凭祥市| 桐柏县| 新兴县| 晋州市| 旺苍县| 色达县| 西乌珠穆沁旗| 广德县| 衢州市| 景谷| 临海市| 湖南省| 安泽县| 秦皇岛市| 侯马市| 罗平县| 瑞丽市| 溆浦县| 和林格尔县| 和平县| 富裕县| 广东省| 文昌市| 宿州市|