国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

掃地機器人的模擬程序 (1)

tanglijun / 1004人閱讀

摘要:前言在朋友的推薦下,嘗試寫一個模擬的掃地機器人的程序,當做是練習工程能力和算法寫這篇文章一是記錄和分享思路,也希望獲得更多意見和建議,歡迎評論效果本來是打算最后再貼圖的,文章沒啥人氣,加上感冒偷個懶就先貼個圖吧不知道為什么沒辦法直接貼圖片,

前言

在朋友的推薦下,嘗試寫一個模擬的掃地機器人的程序,當做是練習(工程能力和算法)
寫這篇文章一是記錄和分享思路,也希望獲得更多意見和建議,歡迎評論

效果

本來是打算最后再貼圖的,文章沒啥人氣,加上感冒
偷個懶就先貼個圖吧(不知道為什么沒辦法直接貼圖片,只好貼鏈接了)
https://wx1.sinaimg.cn/mw1024...
https://wx4.sinaimg.cn/mw1024...

思路

想了下大概應該有下面幾個模塊

主模塊,負責調用其他模塊

地圖模塊,負責處理地圖,比如導入外部的地圖文件并轉換成方便處理的格式

感知模塊,負責感知當前所在位置的周圍是否可通行

動作模塊,負責“走動”,出于解耦的考慮,這里的動作只有最基本的走路動作,不包含尋路邏輯

尋路模塊,負責調用感知模塊和動作模塊,做一些復雜動作,比如U形走法(聽上去有點中二,先這么叫著)和最短路徑走法(到最近的未清潔點)

顯示模塊,負責把機器人走過的路徑顯示出來,形式上最好是獨立于程序的存在,比如gif文件

在準備寫復雜模塊前,首先把地圖模塊給寫出來吧,這篇文章就專注于這個模塊

地圖模塊

首先思考,外部的地圖文件要便于創建(手工繪制),查看和被導入,于是便想到csv

1 . 在Excel中“畫圖”

畫一個10*10的地圖,其中一個格子代表一個區域,每個格子的面積先假設是0.5m*0.5m好了
可通行區域是".",不可通行區域是"#",保存成csv

2 . 通過官方的csv庫來讀取文件

代碼如下:

import csv

file = "E:掃地機器人map_1.csv"
map = []
with open(file, newline="") as csv_file:
    f = csv.reader(csv_file)
    for row in f:
        map.append(row)

這樣我們得到一個map列表
[[".", ".", ".", ".", ".", ".", ".", ".", ".", "."], .....]
其內容還是列表,每個列表代表地圖中的一行,順序是從上到下

3 . 給地圖上的點/格子“編號”

雖然地圖上的點可以通過map[x][y]來獲得,但這么做似乎不優雅,不妨就用坐標點的形式,即(x,y)的方式來描述這些格子吧,于是:

coordinate_list = []
impassable_coordinate_list = []
for x in range(len(map)):
    for y in range(len(map[x])):
        coordinate_list.append((y, x))
        if map[x][y] == "#":
            reverse_x, reverse_y = y, len(map) - x - 1
            impassable_coordinate_list.append((reverse_x, reverse_y))

我們把所有的格子轉成坐標點的形式放到coordinate_list
同時把不能通行的格子記錄到impassable_coordinate_list
前者: [(0, 0), (1, 0), (2, 0),....]
后者: [(1, 8), (1, 7), (2, 4), (2, 3)]
要注意的是這里的(0,0)代表的是最左下角的那個點/格子
map模塊就此告一段落

PS: 可能有讀者感到奇怪,既然已經有地圖了,根據所在位置和地圖就知道周圍的情況了,為何還要感知模塊,我解釋一下
我的想法是先讓機器人根據完善的地圖來實現部分功能,然后再逐步改善,先讓感知模塊根據地圖來“感知”
按理說,地圖模塊應該要根據感知模塊的反饋來不斷更新的

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41275.html

相關文章

  • 掃地器人模擬程序 (2)

    摘要:上一篇文章中介紹了地圖模塊,接著來看主模塊和動作模塊主模塊思路主模塊由一個類構成,其調用各子模塊,且其屬性可用于保存信息這些信息,除了之前地圖模塊中的和之外,還包括初始坐標現所在坐標移動路徑代碼動作模塊思路所謂移動,在模擬程序里就是更新現所 上一篇文章中介紹了地圖模塊,接著來看主模塊和動作模塊 主模塊 思路:主模塊由一個Robot類構成,其調用各子模塊,且其屬性可用于保存信息這些信息,...

    stormgens 評論0 收藏0
  • 掃地器人模擬程序 (3)

    摘要:話說我的地圖就是柵格形式用點坐標來表示格子模板模型法很容易理解,就是有幾種走法,按情況調用。 尋路模塊 (1) 終于要挑戰尋路模塊,雖然我是在重復造輪子,但看一下別人的輪子怎么造也是很重要的,所以在這之前首先搜索下,看看有什么現成的思路和代碼,收獲如下: 兩種尋路邏輯 有兩種尋路邏輯, 隨機碰撞和路徑規劃,考慮到: a. 隨機碰撞似乎需要不少經驗/實驗數據才能達到不錯的效果,我缺經驗/...

    ccj659 評論0 收藏0
  • 掃地器人模擬程序 (4)

    摘要:尋路模塊通過一番尋找,發現這系列文章,其不僅包含算法,連尋路算法中的一些基礎知識也一并介紹了,不愧是斯坦福出品,也很感謝譯者要實現點到點最短路徑,還需要做一些微小的工作,下面逐個說明計算曼哈頓距離的函數目的是尋路,肯定需要一個方法來估算兩點 尋路模塊 (2) 通過一番尋找,發現這系列文章,其不僅包含A*算法,連尋路算法中的一些基礎知識也一并介紹了,不愧是斯坦福出品,也很感謝譯者要實現點...

    thekingisalwaysluc 評論0 收藏0
  • 自動化會提高測試覆蓋率,那測試覆蓋率是什么?

    摘要:測試覆蓋率有什么優勢依然是以打掃房屋為例,測試覆蓋率可以度量打掃的質量指示何時該停止打掃提醒我們還有其他地方需要清理。至此,我們可以得出結論測試自動化更高的測試覆蓋率。 ...

    lyning 評論0 收藏0
  • 人工智能商業化全面解析,內含趨勢解讀

    摘要:在全球智能新商業峰會上,億歐公司發布中國人工智能商業落地強榜單與研究報告。一定程度上,該榜單反映了人工智能在中國各細分領域的商業化程度。 人工智能商業化是什么意思?它和商業智能有怎樣的聯系?本文從概念、重大發展事件、發展趨勢這幾個方面全面解讀人工智能商業化。 121 一、概念人工智能商業化,是指人工智能走向商業化的歷程,即人工智能實現商業場景的應用。人工智能的商業化進程正一步步通過各種...

    Amos 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<