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

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

小型雙輪差速底盤三灰度循跡功能的實(shí)現(xiàn)

2023-03-13 08:00 作者:機(jī)器譜  | 我要投稿

1. 功能說明

? ? ? ?在小型雙輪差速底盤樣機(jī)前方安裝3個(gè)灰度傳感器【https://www.robotway.com/h-col-137.html】 ,實(shí)現(xiàn)機(jī)器人沿下圖所指定的跑道路線進(jìn)行運(yùn)動(dòng)的效果。

2. 使用樣機(jī)

本實(shí)驗(yàn)使用的樣機(jī)為R023樣機(jī)。

3. 功能實(shí)現(xiàn)

3.1 電子硬件

? ? ?在這個(gè)示例中,我們采用了以下硬件,請(qǐng)大家參考:

電路連接說明:

① 左輪直流電機(jī)連在D9,D10接口上;

② 右輪直流電機(jī)連在D5,D6接口上;

③ 3個(gè)灰度傳感器從左至右連接在A0,A4,A3端口上。

3.2 編程框架

? ? ? 本實(shí)驗(yàn)的編程框架用到了有限狀態(tài)機(jī)。有限狀態(tài)機(jī)(Finite-state machine)簡(jiǎn)稱FSM,表示有限個(gè)狀態(tài)以及在這些狀態(tài)之間的轉(zhuǎn)移和動(dòng)作等行為的數(shù)學(xué)模型。它把復(fù)雜的控制邏輯分解成有限個(gè)穩(wěn)定狀態(tài),在每個(gè)狀態(tài)上判斷事件。由于有限狀態(tài)機(jī)有有限個(gè)狀態(tài),因此可以在實(shí)際中實(shí)現(xiàn)。有限狀態(tài)機(jī)可以廣泛的應(yīng)用于機(jī)器人多個(gè)傳感器觸發(fā)組合狀態(tài)的判斷,大大提高檢測(cè)效率。


狀態(tài)表

? ? ? 機(jī)器人的傳感器觸發(fā)一般用條件判斷來做。

? ? ? 這時(shí)機(jī)器人程序的一般思路是:

所以我們總是要用到大量的 if 語句,比如雙輪小車的某個(gè)功能:

用偽碼寫出來就是:

在只有一個(gè)傳感器的情況下,我們假設(shè)這是個(gè)開關(guān)量傳感器。那么我們可以得到一個(gè)狀態(tài)表格:

這個(gè)傳感器有兩個(gè)狀態(tài)。

而當(dāng)有兩個(gè)傳感器時(shí),則有四個(gè)狀態(tài)。

如果我們用 if 語句寫這四個(gè)狀態(tài),就顯得比較長(zhǎng)。

? ? ? 在編程的時(shí)候,狀態(tài)羅列的越全,機(jī)器人的bug就越少。但是隨著傳感器的增多,狀態(tài)數(shù)量按2的N次冪增加,大量的if語句使執(zhí)行效率變得很低,經(jīng)常出現(xiàn)識(shí)別不靈的情況。我們需要換一種高效寫法。

? ? ? 多個(gè)確定數(shù)量的傳感器的觸發(fā)組合,符合有限狀態(tài)機(jī)的概念,有限狀態(tài)機(jī)一般是用Switch語句來實(shí)現(xiàn)。如:

? ? ? 不難發(fā)現(xiàn),這段語句實(shí)現(xiàn)的關(guān)鍵,就是識(shí)別出上頁(yè)表中的1、2、3、4,四個(gè)狀態(tài)序號(hào)。

? ? ? 那么問題就來了:我們?nèi)绾巫寵C(jī)器人知道自己傳感器的觸發(fā)組合對(duì)應(yīng)于1、2、3、4的哪個(gè)序號(hào)呢?


二進(jìn)制狀態(tài)表

? ? ?下面,我們把每組傳感器返回值看成一個(gè)二進(jìn)制數(shù)值。

? ? ?結(jié)果我們發(fā)現(xiàn)了一種新的、可計(jì)算的編碼方式:

? ? ? 于是,只要我們知道了傳感器們的觸發(fā)狀態(tài),也就知道了序號(hào);知道了序號(hào),也就知道了傳感器們的觸發(fā)狀態(tài)。用這個(gè)序號(hào)去寫switch語句,再合適不過了。下面我們要做的是,用一種算法,讓機(jī)器人能夠返回自己接收到的傳感器組合值的二進(jìn)制數(shù)據(jù)。


算法精解

? ? ? 我們可以使用以下算法來實(shí)現(xiàn):

  • 首先設(shè)置一個(gè)變量s,這個(gè)s,將存儲(chǔ)傳感器組的二進(jìn)制狀態(tài)序號(hào)。

  • 我們還需要用到一個(gè)重要的運(yùn)算符“<<”,這個(gè)運(yùn)算符的意義是:左移

    如:1<<n,意思是1向左移動(dòng)n位,空出來的數(shù)位用0填補(bǔ)。

    如:1<<1,結(jié)果就是10;1<<2,結(jié)果就是100;101<<1,結(jié)果就是1010

  • 只要讓機(jī)器人依次返回各個(gè)傳感器的狀態(tài)數(shù)值,最早獲取的,移到最左;第二獲得的,移到“倒數(shù)第二左”,……,以此類推。即可獲得。

如兩個(gè)傳感器均觸發(fā):

先獲得1號(hào)的數(shù)值(真)并左移0位,得

再獲得2號(hào)的數(shù)值(真)并左移1位,得

兩數(shù)值取“或”,即可得11

數(shù)學(xué)問題解決了,很容易就可以轉(zhuǎn)化為程序語句:

于是switch語句可以寫為:

策略表

下面我們以本實(shí)驗(yàn)中的“小型雙輪差速底盤-3灰度循跡”程序?yàn)槔?,再來推?dǎo)一遍。

傳感器觸發(fā)情況、小車行駛狀態(tài)、對(duì)應(yīng)行為策略表如下:

偽碼如下:

? ? ? ?這段代碼中的動(dòng)作,完全由策略表分析獲得,因此,當(dāng)狀態(tài)比較多時(shí),用戶要學(xué)會(huì)利用策略表進(jìn)行分析,從而確定機(jī)器人的動(dòng)作策略,而不是憑空想象。

3.3 編寫程序

編程環(huán)境:Arduino 1.8.19

編寫并燒錄以下程序(Track_Car.ino),該程序?qū)?shí)現(xiàn)演示視頻中的動(dòng)作。

4. 資料下載

資料內(nèi)容:3灰度循跡-例程源代碼
資料下載地址 https://www.robotway.com/h-col-113.html

小型雙輪差速底盤三灰度循跡功能的實(shí)現(xiàn)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
孙吴县| 东港市| 九寨沟县| 迁西县| 泊头市| 黎平县| 澜沧| 镇宁| 祁门县| 漳州市| 壤塘县| 文昌市| 湘潭县| 济阳县| 青海省| 麻栗坡县| 竹溪县| 吕梁市| 长丰县| 桓仁| 乌鲁木齐市| 奈曼旗| 云梦县| 银川市| 错那县| 阿瓦提县| 黄龙县| 商水县| 康平县| 江源县| 弥勒县| 常熟市| 信丰县| 休宁县| 建瓯市| 涟水县| 阿合奇县| 舟山市| 元江| 南昌市| 平昌县|