完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
什么是栅格地图
栅格地图:即以机器人出生点为中心,x轴和y轴的分辨率为单个格子大小,当x轴分辨率=y轴分辨率时,则每个格子为一个正方形,分辨率越小则表示地图精度越高,比如一个格子大小为1cm × 1cm,那么机器人定位精度就是1cm。可以想象成一个巨大的网把一个地面罩住,网面碰到东西则认为是障碍物/墙,没有碰到障碍物则可以认为是空地。 那么每个格子如何区分自己的状态是障碍物/墙,还是空地呢?这里可以赋予每个格子不同的值,比如0代表空地,1代表墙。这个值的内容也可以扩展,比如2代表已经走过,3代表未被走过等等。 基于matlab构建栅格地图 % MATLAB 绘制栅格地图的核心函数和思想 % colormap:为栅格地图创建自定义颜色。如黄色栅格代表的起点,红色栅格代表的终点,黑色栅格代表的障碍物 % sub2ind:将行列索引转为线性索引 ind2sub:将线性索引转为行列索引 % image:利用colormap建立的颜色图,将数组信息显示为图像 clc clear close all cmap = [1 1 1; 。.. % 1-白色-空地 0 0 0; 。.. % 2-黑色-静态障碍 1 0 0; 。.. % 3-红色-动态障碍 1 1 0; 。.. % 4-黄色-起始点 1 0 1; 。.. % 5-品红-目标点 0 1 0; 。.. % 6-绿色-到达目标点的规划路径 0 1 1]; % 7-青色-动态规划的路径 % 构建颜色map图 colormap(cmap); %% 构建栅格地图场景 % 栅格地图界面大小:行数和列数 rows = 10; cols = 20; % 定义栅格地图的全域,并初始化空白地图 field = ones(rows,cols); % 障碍物区域 obsRate = 0.3; obsNum = floor(rows * cols * obsRate); % 取整 obsIndex = randi([1,rows*cols],obsNum,1); field(obsIndex) = 2; % 起始点和目标点 startPos = 2; goalPos = rows * cols - 2; field(startPos) = 4; field(goalPos) = 5; %% 画栅格图 image(1.5,1.5,field); grid on; set(gca , ‘gridline’ , ‘-’ , ‘gridcolor’ , ‘k’ , ‘linewidth’ , 2 , ‘GridAlpha’ , 0.5); set(gca , ‘xtick’ , 1 : cols + 1,‘ytick’,1 : rows + 1); axis image; 这样生成出来的栅格地图是10*20随机障碍物的,满足我们在这个地图上验证路径规划算法 在C语言中验证算法时,可以用二维数组承接这个field矩阵中的数据 /* * 1-白色-空地 * 2-黑色-静态障碍 * 3-红色-动态障碍 * 4-黄色-起始点 * 5-品红-目标点 * 6-绿色-到达目标点的规划路径 * 7-青色-动态规划的路径 */ const int kRows = 10; const int kCols = 20; uint8_t mymap[kRows][kCols] = { {1, 1 ,1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2}, {4, 1 ,1, 2, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 2, 2}, {1, 1 ,1, 2, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2}, {1, 1 ,2, 1, 1 ,1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1}, {1, 1 ,1, 2, 2 ,1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2}, {1, 1 ,2, 1, 1 ,2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1}, {2, 1 ,1, 1, 1 ,1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1}, {2, 1 ,1, 2, 1 ,1, 1, 1, 2, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 5}, {1, 1 ,2, 1, 1 ,1, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1}, {2, 2 ,1, 1, 1 ,1, 1, 1, 2, 2, 2, 1, 2, 1, 1, 2, 2, 1, 1, 1}, }; |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1907 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1675 浏览 1 评论
1169 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
768 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1728 浏览 2 评论
1969浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
804浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
249浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
621浏览 3评论
634浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-22 01:53 , Processed in 0.659236 second(s), Total 45, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号