rostopic Publisher 使用c++类编程实现–ros记录(一)
代码的功能:在ros中实现自定义话题的发布。用户可以通过生成不同的发布者对象,实现不同的话题发布,以及通过publish方法自由的发布定义类型数据。
#include <ros/ros.h>
#include <std_msgs/UInt8.h>
class TopicPublish
{
public:
TopicPublish(std::string pub_name);
void publish(uint8_t dat);
private:
ros::NodeHandle nh;
ros::Publisher topic_pub;
};
TopicPublish::TopicPublish(std::string pub_name)
{
topic_pub = nh.advertise<std_msgs::UInt8>(pub_name, 10);
}
void TopicPublish::publish(uint8_t dat)
{
std_msgs::UInt8 msgs;
msgs.data = dat;
topic_pub.publish(msgs);
}
int main(int argc, char **argv)
{
ros::init(argc, argv, "topic_publish_node");
TopicPublish mypub("/profect");
ros::Rate loop(10);
while(ros::ok())
{
mypub.publish(8);
ros::spinOnce();
loop.sleep();
}
return 0;
}
代码分析:首先定义一个TopicPublish类,注意类名首字母大写;然后编写类的具体内容,在public公开块中编写构造函数和发布话题函数,在private私人块中编写发布者需要用到的属性变量。通过构造函数创建一个话题,再通过publish发布话题