ROS-建图-栅格坐标系

ROS-建图-栅格坐标系

一、栅格地图参数

1.1 像素坐标系

下图是一个机器人在实际环境中绘制的二维地图,图片中左下角是地图原点(map.info.origin),在原点上已经标明了这个地图的三维坐标轴,其中红色的代表x轴方向,绿色代表y轴方向。

// 此时栅格地图原点为(0, 0)
grid_map.info.origin.x = 0;
grid_map.info.origin.y = 0;

Alt
在ROS的地图中,地图是以像素标记的,每一个像素(map.info.resolution)代表0.05m,即地图的分辨率为0.05m。

例如,下图上的星星,他的位置在像素层面上的坐标为(400, 150),则x:400像素,y:150像素。这个机器人距离地图原点的实际距离是:横坐标方向为400 * 0.05=20m,纵坐标方向为150 * 0.05=7.5m。

Alt

1.2 地图原点

我们在设置栅格地图原点时,地图的原点并不一定在左下角,可以将栅格地图原点设置在所建栅格地图中间任一位置上。

// 将栅格地图原点设置在整张图的(-20, -20)位置
grid_map.info.origin.x = -20;
grid_map.info.origin.y = -20;

Alt
此时,这张图的地图原点就跑到了地图图片里,如果车辆处在原点左下角的位置,那么车辆的X和Y像素坐标就会为负值。

1.3 栅格地图消息格式

在ROS中,地图的类型是nav_msgs/OccupancyGrid,每个像素代表的长度以及地图的原点都被定义在了消息结构体之中。

// 栅格地图消息
std_msgs/Header header
nav_msgs/MapMetaData info
time map_load_time
float32 resolution         			// 分辨率
geometry_msgs/Pose origin  			// 原点坐标
geometry_msgs/Quaternion orientation
int8[] data    						// 地图像素信息

// 栅格地图参数
grid_map.info.resolution = 0.5;     // 分辨率
grid_map.info.origin.x = -20;		// 栅格地图原点x
grid_map.info.origin.y = -20;		// 栅格地图原点y
grid_map.info.width = 100;			// 栅格地图宽,定义尺寸
grid_map.info.height = 100;			// 栅格地图高,定义尺寸	

更多的栅格地图消息类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值