ROS之Map的建立发布

本文详细介绍了ROS中栅格地图的工作原理,包括OccupancyGrid.msg的数据结构,发布地图数据的步骤,以及使用C++编写示例代码。通过构建map_pub_node并结合rviz展示地图数据。
摘要由CSDN通过智能技术生成

ROS中栅格地图

一、ROS中栅格地图格式

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 发布节点是:map_server
发布的数据包是:OccupancyGrid.msg
发布的话题名是:/map

栅格尺寸 = 栅格边长=地图分辨率,体现地图的精细程度,ros中默认是0.05米
在这里插入图片描述包含三个成员
第一个数据类型是另一个数据包Header,包含frame_id和stamp
第二个数据类型是另一个数据包
在这里插入图片描述

第三个数据类型是数组
在这里插入图片描述

二、发布地图数据

发布地图数据的实现,确定地图数据的规划
在这里插入图片描述
实现步骤:

  1. 构建一个软件包map_pkg,依赖项里加上nav_msgs
  2. 在map_pkg里创建一个节点map_pub_node2
  3. 在节点中发布话题/map,消息类型为nav_msgs::OccupancyGridY
  4. 构建一个nav_msgs::OccupancyGrid地图消息包,并对其进行赋值
  5. 将地图消息包发送到话题/map。
  6. 编译并运行节点
  7. 启动RViz,订阅话题/map,显示地图

编写发布地图数据案例,编写map_pub_node.cpp

# include <ros/ros.h>
# include <nav_msgs/OccupancyGrid.h>

int main(int argc, char** argv)
{
    ros::init(argc, argv, "demo_map_pub");
    ros::NodeHandle n;
    ros::Publisher pub = n.advertise<nav_msgs::OccupancyGrid>("/map", 10);
    ros::Rate loop_rate(1);
    while (ros::ok())
    {
        nav_msgs::OccupancyGrid msg;
        // header
        msg.header.frame_id = "map";
        msg.header.stamp = ros::Time::now();
        // 地图描述信息
        msg.info.origin.position.x = 0;
        msg.info.origin.position.y = 0;
        msg.info.resolution = 1.0; // 1M
        msg.info.width = 4;//  482
        msg.info.height = 2;
        // 地图数据
        msg.data.resize(4*2);
        msg.data[0] = 100;
        msg.data[1] = 100;
        msg.data[2] = 0;
        msg.data[3] = -1;
        // 发送
        pub.publish(msg);
        loop_rate.sleep();
    }
    return 0;
}

修改CMakeLists.txt

add_executable(map_pub_node src/map_pub_node.cpp)

target_link_libraries(map_pub_node
  ${catkin_LIBRARIES}
)

终端分别运行

roscore
rosrun map_pkg map_pub_node 
rviz

添加坐标系和地图标识,修改话题名称为/map,结果如图所示
在这里插入图片描述

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值