聚豐項(xiàng)目 > 基于AB32VG1的雙足機(jī)器人
相信變形金剛、鋼鐵俠是很多少年時(shí)候不可或缺的夢(mèng),都希望有一臺(tái)屬于自己的“大黃蜂”。雖然現(xiàn)在離能達(dá)到與電影中一樣的機(jī)器人這個(gè)夢(mèng)還很遙遠(yuǎn),但機(jī)器人的制造、應(yīng)用也必將在未來(lái)由人類所掌握。機(jī)器人學(xué)集成了力學(xué)、機(jī)械工程學(xué)、電子學(xué)、計(jì)算機(jī)等等很多前言學(xué)科。說(shuō)實(shí)話我也不懂,不懂這些高深的理論是不是就與機(jī)器人無(wú)緣了呢。并不是! 我覺得機(jī)器人應(yīng)該具備的第一功能應(yīng)該是步行(好像日本一個(gè)機(jī)器人專家也說(shuō)過(guò)),但是真正的做一個(gè)很強(qiáng)大的機(jī)器人,所花費(fèi)的成本遠(yuǎn)超普通人業(yè)余愛好的承受。本項(xiàng)目就是從 低成本、零基礎(chǔ)制作一個(gè)可以行走的雙足機(jī)器人。由于步行是基礎(chǔ),那我們就先完成步態(tài)的行走就行。只有完成了初步行走功能,建立了對(duì)于機(jī)器人的初步認(rèn)識(shí),才能明白自己的機(jī)器人之路后續(xù)往什么方向發(fā)展。 廢話不多說(shuō)。
PCB00032563
PCB00032563
團(tuán)隊(duì)成員
趙亞楠 研發(fā)
本項(xiàng)目采用的是AB32VG1控制板,該電路板非常適合雙足機(jī)器人的開發(fā),其主頻 120M ,RAM 192K, Flash 4Mbit基本可以滿足后續(xù)程序的存儲(chǔ), IIC用于控制PWM輸出模塊,藍(lán)牙與紅外通信滿足短距離機(jī)器人與上位機(jī)的通信以及多個(gè)機(jī)器人間的通信,語(yǔ)音接口可以滿足機(jī)器人聲音輸出需要。TF卡可以存儲(chǔ)地圖數(shù)據(jù)等。總之該電路板在未來(lái)可以滿足簡(jiǎn)易的雙足機(jī)器人開發(fā)。
本項(xiàng)目是低成本實(shí)現(xiàn)雙足行走功能,所有僅實(shí)現(xiàn)了使用手機(jī)通過(guò)紅外控制雙足機(jī)器人前進(jìn)、左轉(zhuǎn)、右轉(zhuǎn)等功能。
硬件結(jié)構(gòu)框圖如圖1所示。手機(jī)發(fā)送命令信號(hào)至控制板,控制板通過(guò)IRA進(jìn)行接收,并處理。通過(guò)I2C控制PWM模塊,進(jìn)而分別控制6個(gè)舵機(jī)。PCA9685模塊是使用I2C總線可以控制16路舵機(jī)模塊,在后續(xù)舵機(jī)控制中也會(huì)更方便。舵機(jī)采用的是MG995,金屬齒輪,滿足。
低成本零門檻的話硬件就不能復(fù)雜了,需要的材料如下:AB32控制板 *1 、PCA9685模塊 *1 、4.8V5600mAh的電池組*1(采用該電壓電池組,不需要電平轉(zhuǎn)換)。
結(jié)構(gòu)設(shè)計(jì),采用的舵機(jī)越多,自由度越高,可以控制的靈活性就越高,但是成本就會(huì)越高,要形成最簡(jiǎn)單的雙足行走功能,我認(rèn)為需要6個(gè)舵機(jī)。分別是踝關(guān)節(jié)、膝關(guān)節(jié)、髖關(guān)節(jié)。先上個(gè)裝好之后的側(cè)照?qǐng)D如下圖。
當(dāng)然組裝的方式很多,我這樣裝的好處有下面幾點(diǎn)。1、腳采用大片,這樣使得重心比較好找;2、左右踝關(guān)節(jié)的角度倍數(shù)正好是2倍,簡(jiǎn)單的說(shuō),現(xiàn)在身體向左偏移,給左踝關(guān)節(jié)的舵機(jī)發(fā)送偏移10度,相應(yīng)的給右踝關(guān)節(jié)的舵機(jī)發(fā)送偏移20度,兩條腿正好平行移動(dòng)。3、膝關(guān)節(jié)和髖關(guān)節(jié)這樣組裝,角度正好是1:1,這樣就極大的簡(jiǎn)化了編程。膝關(guān)節(jié)和髖關(guān)節(jié)在相同的轉(zhuǎn)動(dòng)時(shí)只需要發(fā)送同樣的角度數(shù)值即可。再上幾個(gè)組裝的細(xì)節(jié)圖。
詳細(xì)的配件我后期會(huì)在gitee平臺(tái)整理公布。
不得不說(shuō)RTT現(xiàn)在做的越來(lái)越強(qiáng)大了,基本上不用太多的自己編程,想要什么功能,直接添加軟件包,就可以用了,我使用的是pca9685軟件包,我看了一下作者是greedyhao在2019年就分享的。使用的紅外組件軟件包也是,又是本次大賽的AB32官方的技術(shù)大牛。
本項(xiàng)目?jī)H新建了的兩個(gè)線程:
1、是紅外接收處理線程。接收調(diào)試、動(dòng)作的命令,發(fā)送命令到運(yùn)行控制線程。
2、是舵機(jī)運(yùn)動(dòng)控制線程,根據(jù)命令進(jìn)行運(yùn)動(dòng)控制。
其他新建的函數(shù)主要是進(jìn)行步態(tài)控制。下面簡(jiǎn)單的描述一下的函數(shù)功能;
void robot_left_tilt(rt_uint8_t left_angle,rt_uint8_t range,rt_uint16_t speed)
//功能:向左傾斜
//形參:left_angle傾斜的角度(本項(xiàng)目中簡(jiǎn)化成了PWM的高電平)
//形參:range舵機(jī)單次轉(zhuǎn)動(dòng)的角度(換算后)
//形參:speed是單次轉(zhuǎn)動(dòng)后的穩(wěn)定時(shí)間
void robot_left_tilt_attention(rt_uint8_t range,rt_uint16_t speed)
//功能:左傾斜恢復(fù)直立
//形參:range舵機(jī)單次轉(zhuǎn)動(dòng)的角度(換算后)
//形參:speed是單次轉(zhuǎn)動(dòng)后的穩(wěn)定時(shí)間
void robot_right_tilt(rt_uint8_t right_angle,rt_uint8_t range,rt_uint16_t speed)
//功能:向右傾斜
void robot_right_tilt_attention(rt_uint8_t range,rt_uint16_t speed)
//功能:右傾斜恢復(fù)直立
void robot_right_forward(rt_uint8_t forward_angle,rt_uint8_t range,rt_uint16_t speed)
//功能:右腳向前一步
void robot_right_forward_attention(rt_uint8_t range,rt_uint16_t speed)
//功能:右腳向前一步后恢復(fù)直立
void robot_left_forward(rt_uint8_t forward_angle,rt_uint8_t range,rt_uint16_t speed)
//功能:左腳向前一步
void robot_left_forward_attention(rt_uint8_t range,rt_uint16_t speed)
//功能:左腳向前一步后恢復(fù)直立
void go_right_step(rt_uint8_t angle,rt_uint8_t range,rt_uint16_t speed)
//功能:向右腳邁一步
void go_left_step(rt_uint8_t angle,rt_uint8_t range,rt_uint16_t speed)
//功能:向左腳邁一步
void go_left(rt_uint8_t angle,rt_uint8_t range,rt_uint16_t speed)
//功能:向左轉(zhuǎn)
void go_right(rt_uint8_t angle,rt_uint8_t range,rt_uint16_t speed)
//功能:向右轉(zhuǎn)
具體代碼詳見:https://gitee.com/yanan7310/biped-robot
本項(xiàng)目代碼中沒(méi)有使用復(fù)雜的計(jì)算。
動(dòng)起來(lái)之后就可以增加手部、頭部的設(shè)計(jì)等。傳感器就可以增加陀螺儀、視覺采集,ZMP軌跡等等方式,想多深就有多深。
前進(jìn)
完整視頻:https://www.bilibili.com/video/BV1wL411E7Q2/
左轉(zhuǎn)
完整視頻:https://www.bilibili.com/video/BV1oM4y1w7Qa/
右轉(zhuǎn)
完整視頻:https://www.bilibili.com/video/BV1ZS4y1X7vw/
dianzi_0101: 點(diǎn)贊
回復(fù)
ElecFans小喇叭: 點(diǎn)贊,確實(shí)有點(diǎn)東西
回復(fù)