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