成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

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

tanglijun / 1070人閱讀

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

前言

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

效果

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

思路

想了下大概應(yīng)該有下面幾個(gè)模塊

主模塊,負(fù)責(zé)調(diào)用其他模塊

地圖模塊,負(fù)責(zé)處理地圖,比如導(dǎo)入外部的地圖文件并轉(zhuǎn)換成方便處理的格式

感知模塊,負(fù)責(zé)感知當(dāng)前所在位置的周?chē)欠窨赏ㄐ?/p>

動(dòng)作模塊,負(fù)責(zé)“走動(dòng)”,出于解耦的考慮,這里的動(dòng)作只有最基本的走路動(dòng)作,不包含尋路邏輯

尋路模塊,負(fù)責(zé)調(diào)用感知模塊和動(dòng)作模塊,做一些復(fù)雜動(dòng)作,比如U形走法(聽(tīng)上去有點(diǎn)中二,先這么叫著)和最短路徑走法(到最近的未清潔點(diǎn))

顯示模塊,負(fù)責(zé)把機(jī)器人走過(guò)的路徑顯示出來(lái),形式上最好是獨(dú)立于程序的存在,比如gif文件

在準(zhǔn)備寫(xiě)復(fù)雜模塊前,首先把地圖模塊給寫(xiě)出來(lái)吧,這篇文章就專(zhuān)注于這個(gè)模塊

地圖模塊

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

1 . 在Excel中“畫(huà)圖”

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

2 . 通過(guò)官方的csv庫(kù)來(lái)讀取文件

代碼如下:

import csv

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

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

3 . 給地圖上的點(diǎn)/格子“編號(hào)”

雖然地圖上的點(diǎn)可以通過(guò)map[x][y]來(lái)獲得,但這么做似乎不優(yōu)雅,不妨就用坐標(biāo)點(diǎn)的形式,即(x,y)的方式來(lái)描述這些格子吧,于是:

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))

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

PS: 可能有讀者感到奇怪,既然已經(jīng)有地圖了,根據(jù)所在位置和地圖就知道周?chē)那闆r了,為何還要感知模塊,我解釋一下
我的想法是先讓機(jī)器人根據(jù)完善的地圖來(lái)實(shí)現(xiàn)部分功能,然后再逐步改善,先讓感知模塊根據(jù)地圖來(lái)“感知”
按理說(shuō),地圖模塊應(yīng)該要根據(jù)感知模塊的反饋來(lái)不斷更新的

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/41275.html

相關(guān)文章

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

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

    stormgens 評(píng)論0 收藏0
  • 掃地機(jī)器人模擬程序 (3)

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

    ccj659 評(píng)論0 收藏0
  • 掃地機(jī)器人模擬程序 (4)

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

    thekingisalwaysluc 評(píng)論0 收藏0
  • 自動(dòng)化會(huì)提高測(cè)試覆蓋率,那測(cè)試覆蓋率是什么?

    摘要:測(cè)試覆蓋率有什么優(yōu)勢(shì)依然是以打掃房屋為例,測(cè)試覆蓋率可以度量打掃的質(zhì)量指示何時(shí)該停止打掃提醒我們還有其他地方需要清理。至此,我們可以得出結(jié)論測(cè)試自動(dòng)化更高的測(cè)試覆蓋率。 ...

    lyning 評(píng)論0 收藏0
  • 人工智能商業(yè)化全面解析,內(nèi)含趨勢(shì)解讀

    摘要:在全球智能新商業(yè)峰會(huì)上,億歐公司發(fā)布中國(guó)人工智能商業(yè)落地強(qiáng)榜單與研究報(bào)告。一定程度上,該榜單反映了人工智能在中國(guó)各細(xì)分領(lǐng)域的商業(yè)化程度。 人工智能商業(yè)化是什么意思?它和商業(yè)智能有怎樣的聯(lián)系?本文從概念、重大發(fā)展事件、發(fā)展趨勢(shì)這幾個(gè)方面全面解讀人工智能商業(yè)化。 121 一、概念人工智能商業(yè)化,是指人工智能走向商業(yè)化的歷程,即人工智能實(shí)現(xiàn)商業(yè)場(chǎng)景的應(yīng)用。人工智能的商業(yè)化進(jìn)程正一步步通過(guò)各種...

    Amos 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<