啟智模塊機器人|四輪底盤灰度傳感器循跡實驗

2020-12-21 Yun88網

啟智模塊機器人是一款側重機器人底層硬體教學的模塊化套件,採用免螺絲的獨特裝配方式,縮短裝配手工時間,學習的重點集中於結構設計、程序編寫和功能實現上。在有限的實驗課時裡快速體驗和學習各種機器人構型的優缺點和控制特性,為將來深入學習機器人學打好堅實基礎。

一、循跡實驗主體拼裝

1、底盤拼接圖

啟智模塊機器人套件標配了4個伺服電機模塊,由於伺服電機模塊採用RS485總線通訊, 所以每個伺服電機模塊均有一個獨立的ID號。伺服電機模塊的供電和通訊功能集成在一個航插接口,使用時通過通訊線纜連接控制器 的RS485接口即可。控制器的兩個RS485接口也是並聯關係,插接任意接口都可以。2、傳感器的搭建● 根據視頻搭建完機器人底盤以後,將兩枚灰度檢測傳感器通過延長柱安裝在底盤的前下方。其中左前側的傳感器連接到啟智控制器的Adc1接口,右前側的傳感器連接啟智控制器的Adc2接口,如下圖所示。

● 機械結構組裝完畢後,下面進行電氣連接。將啟智控制器和電池模塊連接,並將四個電機模塊用航插線串聯起來,連接到啟智控制的RS485航插接口上。電氣連接示意圖如下圖所示:

二、實驗原理

黑線循跡功能的實現思路是:在機器人的前方底盤下安裝兩枚灰度檢測傳感器,在機器人行進過程中不停讀取灰度檢測傳感器的光通量數值。光通量這個數值在檢測到高亮度的表面(如白紙)時數值升高,檢測到低亮度的表面(如黑色線)數值降低。所以我們設定一個閾值,比傳感器檢測黑色線的光通量稍高即可。機器人行進過程中,當左側的傳感器返回光通量值低於閾值時,可認為黑線將會從機器人左側偏出,機器人左轉,及時追回黑線;當右側的傳感器返回光通量值低於閾值時,可認為黑線將會從機器人左側偏出,機器人右轉,及時追回黑線;當所有傳感器的返回值都高於閾值時,可認為黑線還在左右兩個傳感器之間,機器人保持直行。

啟智模塊機器人套件中,有一種能安裝在機器人底盤下方的灰度傳感器延長柱,灰度傳感器需要這個延長柱將其儘可能的靠向地面。在這個實驗裡,為了簡單好入門,暫時只使用兩枚灰度傳感器,分別安裝在機器人底盤前方的左前和右前側,與機器人中線可以隔開一個安裝位。兩個灰度傳感器隔開一定距離,可以讓循線的容錯度更大一些。左前側的灰度傳感器連接到Adc1,右前側的灰度傳感器連接到Adc2,實驗中會在程序裡從這兩個接口讀取傳感器數值。

實驗代碼中將會用到啟智控制器的部分庫函數:

● 換算灰度檢測傳感器的光通量值

int Sensor_Lux(u8 Channel)

Channel —— 接入了灰度檢測傳感器的Adc埠通道;

返回值:從該埠獲取的AD轉換原始數據換算成的光通量值,單位為10mLux。

● 設置電機速度

void Motor_SetSpeed(u8 MotorID, float MotorSpeed)

MotorID —— 電機ID號,範圍1~4;

MotorSpeed —— 設置的轉速值,精度0.1,單位為「轉/分」。

這條函數調用後,控制器只是把速度值發給電機模塊,而電機模塊並未立刻執行,需要等待調用Motors_Action()後才執行新的速度值。

返回值:空。

● 電機執行設置的速度

void Motors_Action(void)

命令所有電機模塊執行新的速度值。

返回值:空。

三、啟智模塊機器人灰度循跡代碼

1. 法建立一個新的工程,工程名為「15_LineTracking」

2. 打開USER目錄下的main.c文件,編寫如下代碼:#include "Wp_Sys.h"

int Lux[2];

int i=0;

float R4wd = 0.165;

float Rw = 0.029;

float Pi = 3.1415926;

void FourWD(float Vx, float Wz)

{

float w1,w2,w3,w4,wt;

w1 = -((Vx/Rw)/(2*Pi))*60;

w2 = -1*w1;

w3 = w2;

w4 = w1;

wt = ((Wz*R4wd/Rw)/(2*Pi))*60*1.2222;

w1 += wt;

w2 += wt;

w3 += wt;

w4 += wt;

Motor_SetSpeed(1, w1);

Motor_SetSpeed(2, w2);

Motor_SetSpeed(3, w3);

Motor_SetSpeed(4, w4);

Motors_Action();

}

int main(void)

{

WPB_Init();

while(1)

{

for(i=0;i<2;i++)

{

Lux[i] = Sensor_Lux(i+1);

OLED_Int(0,i,Lux[i],5);

}

if(Lux[0]<1500)

{

FourWD(0.1, 2*Pi/20);

}

else if(Lux[1]<1500)

{

FourWD(0.1, -2*Pi/20);

}

else

{

FourWD(0.1, 0);

}

DelayMs(10);

}

}(1) 代碼開頭先include系統函數頭文件「Wp_Sys.h」。

(2) 定義五組變量:第一個Lux[2]數組,用來讀取兩個灰度檢測傳感器的測量光通量。第二個i作為後面for循環的臨時變量。第三個R4wd是機器人旋轉時輪子施力點到機器人中心的水平距離,這裡為0.165米;第四個Rw為橡膠輪半徑,這裡為0.029米;第五個Pi為圓周率係數。

(3) 定義一個函數void FourWD(float Vx, float Wz)。第一個參數Vx是機器人直行的速度,第二個參數Wz是機器人旋轉的速度。這個函數會根據這兩個輸入值解算出四個電機應該輸出的轉速,並驅動四個電機執行這個計算結果。

(4) 在void FourWD()函數裡,可以看到代碼分為三個部分:第一部分是根據Vx計算四個電機速度w1、w2、w3和w4,計算的公式參照前面推導結果()。需要注意的是按照公式計算出來的數值結果單位為(弧度/秒),而啟智機器人的電機模塊驅動函數的輸入參數是(轉/分)。所以代碼裡能看到對計算結果進行了一個換算,先除以2*Pi,單位變成(轉/秒),再乘以60,單位變成(轉/分)。第二部分代碼是根據Wz計算機器人電機速度,公式參照前面的推導結果。同樣的,計算完畢後還需要進行一次換算,把單位從(弧度/秒)換算成(轉/分)。換算後的結果,直接累計到前面的電機速度w1、w2、w3和w4裡。第三部分代碼是執行計算結果,調用函數Motor_SetSpeed()為四個電機設置目標轉速,再調用函數Motors_Action()指示電機開始執行目標轉速。

(5) 在主體函數main函數中,先調用系統初始化函數「WPB_Init()」。

(6) 構建一個while循環,在這個循環中持續的讀取傳感器數值並驅動底盤做出反應。第一步是用for循環調用Sensor_Lux()函數讀取兩個灰度檢測傳感器的數值並保存在數組Lux[2]中,數值單位為10mLux。調用OLED_Int()函數將兩個檢測數值顯示在控制器的OLED屏幕上,一共兩行每行顯示一個數值。

第二步就是使用if判斷兩個傳感器的測距值是否低於閾值,這裡閾值的選取是數值1500,即15000mLux。這個閾值需要通過實驗測得,實驗方法就是用灰度傳感器實驗的程序,去測量黑色軌跡線和背景地面的具體數值。通常黑色軌跡線的檢測值在1000以下,而淺色背景的檢測值應該在2000以上,閾值1500是取其中間值。

下面開始黑線循跡的實現邏輯,當左側灰度傳感器的測量值Lux[0](對應Adc1)低於閾值時,說明黑色線即將從左側偏出,這時調用FourWD(0.1, 2*Pi/20)驅動機器人以0.05圈/分鐘的速度向左轉,同時保持0.1米/秒的直行速度,這樣能讓機器人繼續回到軌跡線上來。同樣的,當右側灰度傳感器測量值Distance[1](對應Adc2)低於閾值時,說明黑色線即將從右側偏出,這時調用FourWD(0.1, -2*Pi/20)驅動機器人以0.05圈/分鐘的速度向右轉,同時保持0.1米/秒的直行速度,這樣能讓機器人繼續回到軌跡線上來。最後,如果兩側傳感器的測量數值都大於閾值,可認為機器人還在黑線上,調用FourWD(0.1, 0)驅動機器人以0.1米/秒的速度繼續直行。while循環的最後,調用DelayMs(10)讓循環停頓10毫秒,把這個循環周期控制在0.01秒左右,讓程序能夠及時響應。

3. 編譯這個工程,確認程序沒有錯誤能順利編譯。

4. 將啟智控制器通過下載器和電腦連接。打開啟智控制器電源,讓控制器上電。

5. 在Keil uVision4工具欄裡點擊「LOAD」下載按鈕,將編譯好的程序下載到控制器裡。當Keil uVision4左下角狀態欄裡的下載進度進行完成後,控制器會重新啟動,屏幕顯示開機信息。此時將啟智控制器斷電,拔掉下載線。

6. 將黑色軌跡線貼在白色或淺色平面上,將機器人放置於黑線的正上方,讓黑色軌跡線位於左右兩個灰度檢測傳感器的中間位置。

結論

1. 程序運行後,機器人默認是直行狀態。

2. 機器人移動過程中,當移動到黑線處於左側灰度傳感器下時,機器人會往左偏轉,讓黑線重新回到兩個灰度傳感器中間。當移動到黑線處於右側灰度傳感器下時,機器人會往右偏轉,讓黑線重新回到兩個灰度傳感器中間。

3. 這個簡單的程序邏輯只能實現一個低速的循跡功能,如果速度提高的話,還需要做哪些優化,可以思考思考。(提示:增加灰度傳感器數量能夠讓機器人對黑線偏離程度有更細膩的判斷。)

相關焦點

  • 機器人教程4:紅外循跡及LM339模塊
    1、概述2、紅外光電管的工作原理本文引用地址:http://www.eepw.com.cn/article/201612/324303.htm3檢測電路設計4、LM339模塊及紅外對管模塊介紹5、紅外循跡程序
  • 輪式移動機器人的循跡設計
    通過循跡傳感器模塊(由光電電晶體和紅外光電二極體所構成)來判別黑色線路徑,再通過 STC89C52單片機控制L298N電機驅動模塊從而實現對兩個直流電機進行控制,最終完成小車的循跡。所設計的輪式移動機器人能沿黑色路徑進行自主行駛,既具備機械本體、直流電機驅動器、檢測傳感裝置和控制器,又是一種可以進行重複編程、自動控制、仿人操作及在三維空間完成靈活運動的電子自動化的生產設備。
  • 灰度傳感器的工作原理_灰度傳感器調節方法
    打開APP 灰度傳感器的工作原理_灰度傳感器調節方法 發表於 2019-08-22 11:22:52   灰度傳感器的工作原理
  • 你真的了解循跡小車嗎,小宇教你如何製作屬於自己的循跡小車
    做單片機的工程師相比都對循跡小車有所認識,它是自動引導機器人系統的基本應用,那麼今天小編就給大家介紹下自動自動循跡小車的原理,智能循跡小車的應用,智能循跡小車程序,循跡小車用途等知識吧!我們本次智能小車製作主要是讓小車實現根據黑線的路徑進行循跡的功能(避障功能可自由完成)智能小車可以分成三個部分——傳感器部分、控制器部分、執行器部分 控制器部分:接收傳感器部分傳遞過來的信號,並根據事前寫入的決策系統(軟體程序),來決定機器人對外部信號的反應,將控制信號發給執行器部分。好比人的大腦。
  • 用於機器人的超聲波傳感器模塊
    打開APP 用於機器人的超聲波傳感器模塊 佚名 發表於 2018-05-24 09:10:00 隨著傳感器技術的推廣應用,機器人的發展也備受關注
  • 機器人實驗室建設方案
    張24二、實驗儀器部分1機器人舞臺規格:2200×1100×7500套12可視化編程人形機器人規格:3個,可靈活模仿人類骨骼肢體動作,唱歌、跳舞、踢足球;機身內嵌藍牙模塊,擁有很好的手感體驗抗拉強度大於250MPa;耐力大於172MPa;延伸率小餘1.7%;硬度大於70HB;3、電子模塊:使用國標RJ25通信接口進行通訊,在行業中,驅動模塊體積小,驅動能力大,穩定性強;4、編程平臺:基於Arduino開源平臺開發,個17畫圖機器人規格:166×62×24套18機器人
  • Arduino教程┃5個數字灰度傳感器機器人小車巡線程序(數路口版)
    前言這個程序是2017年參加機器人巡線比賽時編寫的,當時是使用了5個數字灰度傳感器的三輪機器人小車,巡線是一個個數路口來規劃前進線路的,不是使用的左手法則或右手法則,程序還有需要完善的地方,放出來給大家拍磚,旨在拋磚引玉。
  • 在機器人設計中最常見的底盤
    機器人底盤基本上有3種類型,即輪式、履帶式和步行式。帶有車輪和履帶的底盤是最常見的,步行機器人是比較少見的,本節內容主要介紹普通的輪式機器人和履帶式機器人的設計。因此,當我們為機器人底盤添加新功能時,還是需要反覆進行測試,要確保你的機器人的重心沒有偏離軸距。
  • 數據分析RFID技術在送餐機器人的配置應用
    送餐機器人是替代餐廳服務人員將菜餚從廚房送至顧客餐桌的智能服務型機器人。 送餐機器人配備了晶片、控制器、減速器、驅動裝置、檢測裝置等核心硬體及環境感知、運動控制和人機互動等核心技術,具有自動送餐、自主充電、自主導航、自主避障等實用功能。
  • 基於Kinetis60的智能循跡小車設計
    摘要:智能循跡小車可以根據前端攝像頭的輸入圖像識別出道路狀況,通過優化智能車的軟硬體設計,能夠確保其在不同環境下行駛的快速性和準確性,本文以Kinetis60為核心處理器,完成了智能車路徑檢測、速度檢測、數據傳輸模塊、電機舵機驅動模塊的設計與實現,並在此基礎上提出了一種利用攝像頭實時圖像進行智能車循跡判斷的方法
  • Micropython教程之TPYBoard製作藍牙+紅外循跡小車
    實驗目的學習在PC機系統中擴展簡單I/O接口的方法。進一步學習編制數據輸出程序的設計方法。學習藍牙模塊的接線方法及其工作原理。學習L298N電機驅動板模塊的接線方法。學習藍牙控制小車的工作原理。33.2.所需元器件TPYBoardv102板子1塊藍牙串口透傳模塊(HC-06)1個L298N電機驅動板模塊1個智能小車底盤1個數據線1條杜邦線若干智能藍牙小車APP(Android版)app下載:http://tpyboard.com/download/tool/188.
  • 如何利用SLAMWARE快速集成機器人通用底盤部分
    SLAMWARE ,機器人自主定位導航解決方案,內含核心算法模塊SLAMWARE Core,可自行設計底盤主板,或直接集成,形成通用的機器人底層部分,幫助機器人實現室內定位導航功能。基於思嵐SLAMWARE解決方案的機器人底盤部分的集成主要分為硬體集成、結構集成以及固件集成。
  • 機器人移動底盤的精妙設計「麥克納姆輪」——全方位移動的輪子
    先思考如下問題:1、 機器人有哪些移動方式?2、 用輪子前行和用腳走路的機器人,分別有什麼優勢?3、 如果有機會讓你設計一個機器人底盤,你想設計成什麼樣子?底盤的定義:移動機器人用於移動的部分通常稱為底盤。底盤的作用:負責機器人的運動和轉向,是機器人的執行機構。生活的案例:掃地機器人不同的應用場景對機器人底盤的要求不一樣。以掃地機器人為例,掃地機器人的工作目標是清理地面上的細小垃圾。我們主要會關注它能否靈活移動到房間的各個死角並打掃乾淨。
  • 煙霧傳感器模塊實驗,精彩內容別錯過,值得看,上海民熔
    民熔煙霧傳感器內部採用離子式煙霧傳感,離子式煙霧傳感器是一種技術先進,工作穩定可靠的傳感器,被廣泛運用到各種消防報警系統中,性能遠優於氣敏電阻類的火災報警器。
  • 讓機器人自由行走——立得空間「路霸」機器人行進系統
    合作模式我們熱忱期待與各類機器人整機生產廠商或機器人底盤生產商合作,提供具有世界先進水平的機器人導航定位系統,可以與各類型底盤(阿克曼輪、四輪差速、麥輪、四驅四轉向輪、履帶式底盤)完成定位導航模塊配套。
  • 新型四輪獨立驅動車底檢查機器人,已在檢查站上崗使用
    在此之前,實現車輛底盤檢查的一種方法是使用鏡子檢查逃犯,可以使圖像左右轉換,或者幾倍的電子變焦,並且有紅外傳感器,在黑夜也能正常使用。是一款體積小巧,外形扁平的小型偵查機器人,主要用於車輛底盤的主動性檢查,亦可用於大型貨櫃、貨架、貨櫃的底部,會議場館桌椅的底部等等其他各種狹小低矮空間的檢查,甚至在可能出現危險物、輻射物質的場合下,進入到傳統設備難以進入的區域進行作業。
  • 基於arduino的循跡小車(含有PID算法)
    (1)邏輯部分:   sensor[2] == 0) && (sensor[3] == 0) && (sensor[4] == 0)) { if (error == -2) { error = -3; }else{ error = 3; } } }解釋:<1>  將讀取到的五個循跡模塊的數據存入數組
  • 基於雷射二極體的智能循跡小車的硬體設計
    摘要 介紹了一種基於紅外雷射二極體的智能循跡模型車硬體系統的設計方法。該系統以MC9S12XS128為控制核心,採用紅外雷射二極體及紅外接收傳感器採集路徑信息,同時應用內部集成H橋電路的MC33886晶片進行電機驅動,並運用LM331晶片來設計測速電路。
  • Arduino動手做(10)敲擊傳感器模塊
    >Arduino動手做(5)熱敏電阻溫度傳感器模塊Arduino動手做(6)聲音傳感器模塊Arduino動手做(7)旋轉電位器模塊Arduino動手做(8)溼度傳感器模塊Arduino動手做(9)火焰傳感器模塊實驗之十:敲擊傳感器模塊(KY-031 )有機玻璃外殼的敲擊頭和振動開關類似,只是能感受較小振幅的振動,更靈敏一些,餘振的時間能維持稍微久一點點。