精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
創作
電子發燒友網>電子資料下載>電子資料>AI解迷宮機器人

AI解迷宮機器人

2023-07-11 | zip | 7.77 MB | 次下載 | 2積分

資料介紹

構建機器人

要構建機器人,我們只需遵循 TI RSLK 基本套件構建說明即可。我們已將它們附在這篇文章的示意圖部分。我們對說明所做的唯一更改是我們沒有切斷 PCB 上的任何連接。TI 提供的說明將幫助您完成除了構建面包板和將面包板放在機器人頂部之外的所有操作。

在將面包板放在機器人頂部之前,請按照本文原理圖部分中的面包板原理圖將 LED 連接到它上面。以后很難做到這一點,因為電線連接將位于面包板下方。然后,為了將面包板連接到機器人,我們使用透明膠帶。您可以使用任何您喜歡的東西,包括套件中提供的螺絲,但膠帶很便宜,而且比試圖擰穿面包板容易得多。

編程機器人

要對機器人進行編程,必須將其插入計算機上的 USB 端口,并且必須使用電機板(黑板)上的開關關閉電池。然后,在 Code Composer Studio (CCS) 中打開可下載項目后,單擊“調試”按鈕。這將編譯代碼并將其加載到機器人上。一旦 CCS 完成加載代碼,它就會停止機器人并等待您按下黃色播放按鈕來調試機器人。可以,也可以按紅色停止鍵,不用插電就可以使用機器人。

操作機器人

?
pYYBAGOrz2OAAQncAA0zNX88ohA919.png
?

在沒有 USB 電源的情況下打開機器人:斷開 USB 并確保機器人中有電池。如果您之前拔下了上面顯示的 2 根電線,請將它們插入,然后將靠近左輪的電機板(黑板)上的電源開關滑動到打開位置。

左 Launchpad 按鈕:告訴機器人解決一個新的迷宮或停止它正在做的任何事情。充當切換按鈕。

右 Launchpad 按鈕:告訴機器人顯示它找到的最短路徑。如果迷宮沒有完全解決,它將顯示目前為止所知道的盡可能多的迷宮。

使用 USB 調試機器人:如果您想在使用機器人時查看控制臺輸出,請確保您有足夠長的微型 USB 電纜讓機器人四處漫游;套件中只有一個短的。斷開下面所附 TI 構建說明末尾提到的 2 根電源線和地線(如上圖所示)。通過 USB 將機器人插入計算機,然后將電機板上的電源開關滑動到打開位置以打開電機。重要的是不要從 USB 運行電機,因為它們的行為與使用電池供電不同。這就是為什么我們斷開那 2 根電線并打開電池。

關閉機器人:將電機板(黑板)電源開關撥到關閉位置。然后按下開關旁邊的電源按鈕關閉機器人。

整體算法

機器人使用具有 4 種可能狀態的狀態機:停止、運行、獲勝和解決。

  • 停止狀態:當機器人開啟或用戶在解決迷宮或顯示解決方案的過程中停止機器人時。
  • 運行狀態:當它正在解決一個新的迷宮時。
  • 獲勝狀態:如果它在迷宮中找到了寶藏。
  • 求解狀態:當機器人正在顯示解決迷宮的最短路徑(解決方案)時。

機器人使用 SysTick 計時器通過中斷定期讀取線傳感器。線路傳感器無法自行發送中斷,因此這是最有效的替代方案。

當機器人第一次進入 main() 函數時,它會初始化所有需要初始化的東西:它的狀態、時鐘速度、電機、保險杠、線傳感器、板載按鈕、板載 LED、面包板 LED、定時器 A0、SysTick 定時器, 并中斷。然后它進入一個永遠運行的 while 循環。

在這個 while 循環中,機器人將線傳感器的值保存到一個臨時變量中,以防 SysTick 定時器中斷激活中間循環并更改全局線傳感器變量的值。然后它會根據所處的狀態采取不同的行動。

如果機器人處于停止或獲勝狀態,SysTick 計時器將禁用其中斷,然后機器人等待中斷,中斷可能來自保險杠開關、Launchpad 板上的按鈕之一或計時器 A0(稍后討論并用于面包板上的 LED)。將機器人設置為等待中斷將其置于低功耗模式,因此不會浪費電力。

如果機器人處于運行狀態,則機器人解決迷宮問題。該算法的詳細信息在下面的“迷宮解決算法”部分中進行了解釋。

如果機器人處于求解狀態,則機器人會顯示出最短路徑以解決迷宮問題。該算法的詳細信息在下面的“最短路徑算法”部分中進行了解釋。

尋找最短路徑的邏輯

?
pYYBAGOrz3GAYtaMAARqKpaw3lk259.png
?

當機器人在執行下面“迷宮解決算法”部分中的算法時,它還需要存儲最短路徑來解決它正在解決的迷宮問題。為此,使用了一個數組。每次機器人在十字路口轉彎(不僅僅是在別無選擇的地方轉彎)或掉頭時,它都會將轉彎存儲在數組中。然后,如果最后一個轉彎不是掉頭,它會檢查最后 3 個轉彎是否可以簡化為其他東西。

例如,機器人向左轉,然后掉頭,然后向左轉,可以簡化為在那個十字路口直行。因為它是左轉后掉頭的,顯然原來的左轉是錯誤的。

以下是可以簡化的模式。“L”= 左,“R”= 右,“S”= 直線,“U”= 掉頭。

  • 南 -> R
  • LUL -> S
  • 規則 -> U
  • LUS -> R

迷宮解決算法

當機器人正在解決一個新的迷宮時,該算法就會運行。它由多個 if-else-if-statements 組成,其中只有一個執行。if 語句遵循左偏規則,這意味著機器人總是走它可能走的最左邊的路徑。

首先,如果線傳感器讀取全白,這意味著機器人不在一條線上,它可能只是跑出了線。機器人因此轉身并重新讀取線傳感器以獲得更新值。它還添加了一個“U”來表示最短路徑數組中的掉頭。

如果所有傳感器都是黑色的,則機器人位于丁字路口或四向路口。因為機器人偏左,它會走左路,重新讀取線傳感器以獲得更新值,并在最短路徑數組中存儲一個“L”。在左轉之前,機器人向前移動半輛汽車,使車輪與十字路口對齊。它還在左轉時保持面包板上的左側 LED 亮起。

如果機器人找到了寶藏,它會向前移動一點點并重新檢查以確保它真的找到了寶藏。如果是,機器人進入勝利狀態,停止電機,并設置定時器 A0 使機器人頂部面包板上的 LED 閃爍。

如果有左轉彎,機器人會向前移動半輛車,看看是在十字路口還是只是轉彎。然后它向左轉,同時打開面包板上的左側 LED,如果它是一個交叉路口而不僅僅是一個轉彎,它還會在最短路徑數組中添加一個“L”。

如果有右轉彎,機器人首先向前移動一點點,然后重新讀取線傳感器以確保它是右轉彎,左轉彎不是一個選項。如果左邊不是一個選項,它會向前移動汽車的剩余一半并檢查直行是否是一個選項。然后它要么直行要么右轉。如果它直行,它會在最短路徑數組中保存一個“S”。如果它走對了,它會在轉彎時打開右側的面包板 LED。

接下來的 else-if 語句用于簡單地沿著一條直線,因為其他特殊條件都不為真。為此,它會找到最外面的線傳感器并相應地進行校正。例如,如果最左側的線傳感器檢測到黑色,則機器人應通過向左轉大量并同時直行來進行糾正。

最短路徑算法

當機器人顯示通過已解決的迷宮的最短路徑時,該算法就會運行。就像迷宮解決算法一樣,它由多個 if-else-if 語句組成,每次 while 循環運行時只執行其中的一個。

首先,如果機器人的第一個轉彎是掉頭,它會向前移動 1 個汽車長度,然后掉頭。它需要先向前移動,以便在它轉身后線傳感器處于一個好的位置。

如果機器人已經展示了目前在迷宮中解決的所有問題,但仍未找到寶藏,則機器人切換到運行狀態并開始解決迷宮問題。

如果機器人找到了寶藏,它的行為與它在迷宮解決算法中的行為完全相同。它向前移動了一點點并重新檢查以確保它真的找到了寶藏。如果是,機器人進入勝利狀態,停止電機,并設置定時器 A0 使機器人頂部面包板上的 LED 閃爍。

如果前方有左轉和/或右轉彎,這意味著前方有潛在的交叉路口,機器人會首先向前移動半輛車,并檢查是否可以直行。然后,它使用它對左、直和右可用性的了解來確定這是一個十字路口還是一個轉彎。如果它只是一個轉彎,它會跟隨轉彎。如果是十字路口,它會根據最短路徑數組的指示行事。

最后,如果上述 if 語句均不成立,機器人將像在迷宮解決算法中一樣簡單地沿著這條線走。

循環迷宮

我們的代碼使機器人能夠通過循環解決迷宮問題,并顯示它找到的通往寶藏的路徑。然而,它不一定會找到穿過這樣一個迷宮的最短路徑,因為循環允許通往寶藏的多條路徑。

要修改算法以找到帶環路的最短路徑,機器人需要在移動時跟蹤距離或時間,以便識別它已經訪問了哪些交叉路口以及它從每個交叉路口行進的方向。它還需要沿著迷宮中的每條線行進,以確保它找到了最短路徑。

其他雜項算法

SysTick 計時器/線路傳感器:SysTick 計時器設置為每 0.025 秒發送一次中斷,此時機器人將讀取 8 個線路傳感器。為讀取線傳感器,代碼使用 LED 為每個傳感器的電容器充電 10μs。接下來,它將線路傳感器切換為輸入并使電容器放電 800μs。然后讀取每個傳感器的數字值。最后,LED 被關閉。該算法之所以有效,是因為每個線傳感器中的電容器在黑紙和白紙上以不同的速率放電。

定時器 A0/LED 閃爍:定時器 A0 在機器人開啟時初始化,但直到機器人頂部面包板上的 1 個或多個 LED 需要開始閃爍時才啟動。然后,它通過使用中斷調用上次啟動時提供給它的函數來處理閃爍適當的 LED。因為定時器A0只是一個16位的定時器,定時器還使用了一個計數器,所以該函數只在每50次中斷時調用一次,而不是每次中斷都調用一次。

電機:電機使用 PWM(脈沖寬度調制)運行。為了使輪子旋轉得更快,它們在更高的時間百分比(每個周期幾微秒)內被賦予數字 1 值。當電機需要做某事時,它們會得到一個方向并被阻止休眠。然后根據他們需要的速度為他們提供適當的 PWM 信號。

緩沖開關:緩沖開關在 Launchpad 板上使用低電平有效邏輯和內部上拉電阻。當按下保險杠開關時,會發生中斷,使機器人打開綠色 LED,反轉,轉身 180 度,然后繼續解決迷宮。它還向最短路徑數組添加了一個“U”。

開始/停止按鈕:Launchpad 板上有左右按鈕。它們的功能在上一節“操作機器人”中進行了描述。每個按鈕在釋放時發送中斷,而不是在按下時發送中斷。這確保了當用戶仍在按下按鈕時機器人不會突然開始移動。

檢查寶藏:作為解決迷宮和顯示最短路徑算法的一部分,機器人會不斷檢查是否找到寶藏。它通過尋找一個黑色傳感器,然后是一個白色傳感器,然后是另一個黑色傳感器來檢測它是否找到了寶藏。只要存在黑到白和白到黑的過渡,就可以有任意數量的黑白傳感器。它不檢查黑-白-黑-白-黑,即使寶藏看起來就是這樣,因為這需要機器人很好地居中,從而使其不可靠。我們也從未使用黑-白-黑算法和上面“迷宮解決算法”部分中描述的對獲勝條件的雙重檢查得到誤報。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費