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();
    }

}

运行结果

结论

  1. 从图中可以看到,栅格地图的序号是行优先,从左下角开始,从左到右,从下到上的遍历data数组的数据。
  2. map.info.origin 表示的是地图的起点在世界坐标系下的位姿。
  3. map中的值,是-1, 0, 100的,最大值就是100,-1表示未知区域,0表示free,100表示Occupancy的最大像素值。
  4. vector a(100,0);这里面,data中的元素是signed char类型
posted @ 2023-05-29 10:58  水水滴答  阅读(124)  评论(0编辑  收藏  举报