nav_msgs::OccupancyGrid类型的测试
nav_msgs::OccupancyGrid类型
官方数据解释nav_msgs::OccupancyGrid
测试代码
pub_ = nh_.advertise<nav_msgs::OccupancyGrid>("/gridMap1", 1);
nav_msgs::OccupancyGrid map_;
map_.header.frame_id="odom";
map_.header.stamp = ros::Time::now();
map_.info.resolution = 1; // float32
map_.info.width = 10; // uint32
map_.info.height = 10; // uint32
map_.info.origin.position.x = -2;
map_.info.origin.position.y = 1;
map_.info.origin.position.z = 0.0;
map_.info.origin.orientation.x = 0.0;
map_.info.origin.orientation.y = 0.0;
map_.info.origin.orientation.z = 0.0;
map_.info.origin.orientation.w = 0.0;
int size = map_.info.width * map_.info.height;
while (ros::ok())
{
for(int i = 0; i < size; i++){
vector<signed char> a(100,0);
a[i] = -1;
map_.data = a;
pub_.publish(map_);
ros::Duration(0.5).sleep();
}
}
运行结果
结论
- 从图中可以看到,栅格地图的序号是行优先,从左下角开始,从左到右,从下到上的遍历data数组的数据。
- map.info.origin 表示的是地图的起点在世界坐标系下的位姿。
- map中的值,是-1, 0, 100的,最大值就是100,-1表示未知区域,0表示free,100表示Occupancy的最大像素值。
- vector
a(100,0);这里面,data中的元素是signed char类型
作者:水水滴答
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。