ROS学习笔记(七)

这篇博客介绍了ROS中的简单发布节点和订阅节点的创建。首先,通过编写cpp代码展示了如何创建一个发布节点,持续在chatter主题上广播std_msgs/String消息。然后,讲解了订阅节点的实现,当接收到新消息时,会调用回调函数处理。最后,提到了编译节点的CMakeLists.txt配置,并给出了运行节点的命令。

简单的发布节点

因为个人是机械背景,所以该部分所有code都是CPP。这部分我们就写一个简单的订阅和发布节点。“Node”是ROS中可执行文件的术语,用于连接ROS通信网络。我们先来写一个发布(“talker”)节点,让他持续向外广播消息:

$ roscd beginner_tutorials/src
$ gedit talker.cpp

输出下面这些内容: 
#include "ros/ros.h"
#include "std_msgs/String.h"

#include <sstream>

/**
 * This tutorial demonstrates simple sending of messages over the ROS system.
 */
int main(int argc, char **argv)
{
  /**
 * The ros::init() function needs to see argc and argv so that it can perform
 * any ROS arguments and name remapping that were provided at the command line.
 * For programmatic remappings you can use a different version of init() which takes
 * remappings directly, but for most command-line programs, passing argc and argv is
 * the easiest way to do it.  The third argument to init() is the name of the node.
 *  * You must call one of the versions of ros::init() before using any other
 * part of the ROS system.
   */
  ros::init(argc, argv, "talker");

  /**
 * NodeHandle is the main access point to communications with the ROS system.
 * The first NodeHandle constructed will fully initialize this node, and the last
 * NodeHandle destructed will close down the node.
   */
  ros::NodeHandle n;

  /**
 * The advertise() function is how you tell ROS that you want to
 * publish on a given topic name. This invokes a call to the ROS
 * master node, which keeps a registry of who is publishing and who
 * is subscribing. After this advertise() call is made, the master
 * node will notify anyone who is trying to subscribe to this topic name,
 * and they will in turn negotiate a peer-to-peer connection with this
 * node.  advertise() returns a Publisher object which allows you to
 * publish messages on that topic through a call to publish().  Once
 * all copies of the returned Publisher object are destroyed, the topic
 * will be automatically unadvertised.
 *  * The second parameter to advertise() is the size of the message queue
 * used for publishing messages.  If messages are published more quickly
 * than we can send them, the number<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值