学习笔记:如何在ros中发布一个地图c++实现

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

int main(int argc, char *argv[])
{

    ros::init(argc ,argv ,"map_pub_node");//初始话ros节点,ros::init是ros C++库中的一个函数
    ros::NodeHandle n;//ros::NodeHandle,NodeHandle是ros作用域下的一个类,这句话的意思是实例化了一个 这个类的对象n
    ros::Publisher pub = n.advertise<nav_msgs::OccupancyGrid>("/map",10);//这行代码的意思是:创建了一个ros::Publisher类下的一个对象pub,并用这个pub接受n.advertise<nav_msgs::OccupancyGrid>这部分代码通过节点句柄 n 调用 advertise<nav_msgs::OccupancyGrid>这个调表消息类型
    ros::Rate r(1);//这部分代码创建了一个名为 r 的速率对象。ros::Rate 是ROS C++库中的一个类,它用于控制循环的执行速率,以确保你的ROS节点以特定的频率运行

    while(ros::ok())
    {

       nav_msgs::OccupancyGrid msg;//创建了一个nav_msgs::OccupancyGrid类的对象msg,下面是对msg下面的参数赋值
       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;
       msg.info.width = 4;
       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;
       msg.data[4] = 0;
       msg.data[5] = 0;
       msg.data[6] = 0;
       msg.data[7] = 0;
       

       pub.publish(msg);//调用pub中的函数publish(),将msg发布出去
       r.sleep();//让代码休眠
    }


    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值