#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;
}