简单的ros代码-hello word

举报
kobesdu 发表于 2022/03/28 10:54:32 2022/03/28
【摘要】 1 简介 ROS是用于编写机器人软件程序的一种具有高度灵活性的软件架构。它包含了大量工具软件、库代码和约定协议,旨在简化跨机器人平台创建复杂、鲁棒的机器人行为这一过程的难度与复杂度。ROS设计者将ROS表述为“ROS = Plumbing + Tools + Capabilities + Ecosystem”,即ROS是通讯机制、工具软件包、机器人高层技能以及机器人生态系统的集合体2 代码介...

1 简介

 

ROS是用于编写机器人软件程序的一种具有高度灵活性的软件架构。它包含了大量工具软件、库代码和约定协议,旨在简化跨机器人平台创建复杂、鲁棒的机器人行为这一过程的难度与复杂度。ROS设计者将ROS表述为“ROS = Plumbing + Tools + Capabilities + Ecosystem”,即ROS是通讯机制、工具软件包、机器人高层技能以及机器人生态系统的集合体

2 代码介绍

代码中,#include <ros/ros.h>表示包含ROS头文件

ROS中,节点之间通过发布话题和订阅话题来通信,在程序中是通过消息发布器和订阅器来实现,数据流通过话题的发布和订阅在节点之间传播,而数据流的数据类型则称为消息,例如ros入门教程中的节点talkerlistener之间通过话题”chatter”来传递数据流,而数据流的具体数据类型则是std_msgs/String

节点(Nodes): 节点就是可执行文件,该可执行文件可能是你使用roscpp或者rospy创建的。

Master: 在上一篇文章中我们运行过命令roscore该命令的作用之一就是启动ROS MasterMaster主要是提供名称注册与解析,以便每个节点可以通过名称来找到另外的节点。

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;

 

}

 

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。