简单的ros代码-hello word
1 简介
ROS是用于编写机器人软件程序的一种具有高度灵活性的软件架构。它包含了大量工具软件、库代码和约定协议,旨在简化跨机器人平台创建复杂、鲁棒的机器人行为这一过程的难度与复杂度。ROS设计者将ROS表述为“ROS = Plumbing + Tools + Capabilities + Ecosystem”,即ROS是通讯机制、工具软件包、机器人高层技能以及机器人生态系统的集合体
2 代码介绍
代码中,#include <ros/ros.h>表示包含ROS头文件
ROS中,节点之间通过发布话题和订阅话题来通信,在程序中是通过消息发布器和订阅器来实现,数据流通过话题的发布和订阅在节点之间传播,而数据流的数据类型则称为消息,例如ros入门教程中的节点talker和listener之间通过话题”chatter”来传递数据流,而数据流的具体数据类型则是std_msgs/String
节点(Nodes): 节点就是可执行文件,该可执行文件可能是你使用roscpp或者rospy创建的。
Master: 在上一篇文章中我们运行过命令roscore该命令的作用之一就是启动ROS Master,Master主要是提供名称注册与解析,以便每个节点可以通过名称来找到另外的节点。
在main函数中,首先对ROS进行初始化,调用ros::init定义了节点名称。然后定义了ros::NodeHandle该变量用来创建一个发布者,通过调用函数.advertise,表示向Master声明我要注册一个话题名为topic1,然后我将会向该话题发布消息,然后返回一个发布器对象。随后我们便可以调用该发布器的.publish来进行消息的发布。
3 代码如下
#include <ros/ros.h>
#include <std_msgs/String.h>
#include <sstream>
int main(int argc, char **argv)
{
//初始化ros节点并设置其名称
ros::init(argc, argv, "hello_world_node");
//进程的处理句柄
ros::NodeHandle nh;
//将节点实例化成发布者,并讲所发布主题和类型的名称告诉节点管理器,第二个参数是缓冲区的大小
ros::Publisher chatter_pub = nh.advertise<std_msgs::String>("say_hello_world", 1000);
//发送数据的频率设置为10hz
ros::Rate loop_rate(1);
int count = 0;
while (ros::ok())
{
std_msgs::String msg;
std::stringstream ss;
ss << "Hello World !" << count;
msg.data = ss.str();
ROS_INFO("%s", msg.data.c_str());
chatter_pub.publish(msg);
ros::spinOnce();
loop_rate.sleep();
++count;
}
return 0;
}
- 点赞
- 收藏
- 关注作者
评论(0)