本节创建两个节点,一个用于发布数据,另一个节点接收该数据。
定位到工作区的src目录下,创建两cpp文件。
example_1a.cpp

#include "ros/ros.h" //包含ros节点所需的全部文件
#include "std_msgs/String.h" //用于向ros计算网络发布消息的类型头文件
#include <sstream>
int main(int argc,char **argv){ros::init(argc,argv,"example1a"); //初始化节点并设置名称(名称需要是独一无二的)ros::NodeHandle n; //节点相关进程的处理程序,实现节点与环境的交互ros::Publisher pub = n.advertise<std_msgs::String>("message",100); //实例化发布程序,第二个参数指定了缓冲区的大小ros::Rate loop_rate(10); //设置数据发送频率,10Hzwhile(ros::ok()){ //当按下Ctrl+C组合键,ros::ok停止运行std_msgs::String msg; //创建消息变量std::stringstream ss; //创建消息流ss << "Hello World!"; msg.data = ss.str(); //消息赋值pub.publish(msg); //发布消息ros::spinOnce(); //处理所有内部ROS事件和动作,例如对订阅的话题阅读loop_rate.sleep(); //休眠一段时间}return 0;
}

程序截图:

example_1b.cpp

#include "ros/ros.h"
#include "std_msgs/String.h"void messageCallback(const std_msgs::String::ConstPtr& msg){ //定义回调函数ROS_INFO("Thanks: [%s]", msg->data.c_str());
}
int main(int argc, char **argv){ros::init(argc, argv, "example1b"); //初始化节点并设置名称(名称需要是独一无二的)ros::NodeHandle n; //节点相关进程的处理程序,实现节点与环境的交互ros::Subscriber sub = n.subscribe("message",1000,messageCallback); //创建订阅器,并开始监听名为message的话题,设置缓冲区大小,处理消息的函数ros::spin(); //主循环一直执行,按下Ctrl+C停止并结束return 0;
}

程序截图:

编辑CMakeList.txt文件,准备配置好编译所需的包
在文件的末尾添加以下几行代码:

include_directories(
include
${catkin_INCLUDE_DIRS}
)add_executable(example1a src/example_1a.cpp)
add_executable(example1b src/example_1b.cpp)add_dependencies(example1a chapter2_turtleial_generate_messages_cpp)
add_dependencies(example1b chapter2_turtleial_generate_messages_cpp)target_link_libraries(example1a ${catkin_LIBRARIES})
target_link_libraries(example1b ${catkin_LIBRARIES})

编译所有节点的包:

$ cd ~/catkin_ws/
$ catkin_make --pkg chapter2_turtleial

测试:
运行节点管理器:

$roscore

在其他终端中分别运行:

$ rosrun chapter2_turtleial example1a
$ rosrun chapter2_turtleial example1b

测试效果截图:

Ros学习笔记(三)创建节点及节点之间通信相关推荐

  1. ROS学习笔记三:创建ROS软件包

    ,# ROS学习笔记三:创建ROS软件包 catkin软件包的组成 一个软件包必须满足如下条件才能被称之为catkin软件包: 这个软件包必须包含一个catkin编译文件package.xml(man ...

  2. K210学习笔记(三) K210与STM32进行串口通信,K210发STM收

    文章目录 前言 一.以/r/n为结尾 二.K210端代码 三.STM32端 3.1 main函数 四.测试结果 4.1当收到1时 4.2当收到2时 4.3 测试视频 总结 前言 前面我们讲了STM32 ...

  3. ROS学习笔记三:编写第一个ROS节点程序

    在编写第一个ROS节点程序之前需要创建工作空间(workspace)和功能包(package). 一.创建工作空间(workspace) 创建一个catkin_ws: #注意:如果使用sudo一次性创 ...

  4. ROS学习笔记三(TF的类)

    1.数据类型 数据类型定义在tf/transform_datatypes.h.里 1.1 基本数据类型(Quaternion, Vector, Point, Pose, Transform) Type ...

  5. ROS学习笔记_创建工作空间(一)

    创建工作空间 mkdir -p ~/catkin_ws_2/src -p参数是将路径上的父子目录同时创建. $ cd ~/catkin_ws_2/ $ catkin_make 在工作空间的根目录下运行 ...

  6. openstack学习笔记三 创建第一个实例

    登陆admin 创建一个基本网络 镜像   已经安装好操作系统的硬盘文件 计算--镜像--创建镜像 名称  centos7.2-1511 镜像源  镜像地址 镜像地址    http://mirror ...

  7. JavaScript学习笔记:创建、添加与删除节点

    JavaScript学习笔记:创建.添加与删除节点 文章目录 JavaScript学习笔记:创建.添加与删除节点 一.DOM对象节点类型 二.创建节点 1.创建元素节点 2.创建文本节点 3.创建属性 ...

  8. ROS学习笔记-ROS订阅和发布节点

    一个简单的ROS包,一个发布者,一个订阅者 刚开始学习ROS,参考网上的资料完成了测试节点的编写,记录一下. 个人习惯在home/Develop目录中做开发,于是在Develop目录下面创建了一个RO ...

  9. ROS学习笔记四:理解ROS节点

    ROS学习笔记四:理解ROS节点 本节主要介绍ROS图形概念,讨论ROS命令行工具roscore.rosnode和rosrun. 要求 要求已经在Linux系统中安装一个学习用的ros软件包例子: s ...

  10. ROS 学习笔记(三):自定义服务数据srv+server+client 示例运行

    ROS 学习笔记(三):自定义服务数据srv+Server+Client 示例运行 一.自定义服务数据: 1.向功能包添加自定义服务文件(AddTwoInts.srv) cd ~/catkin_ws/ ...

最新文章

  1. Vlan 4096的限制原因
  2. Pandas中 DateFrame 修改列名
  3. Libgdx New 3D API 教程之 -- 使用Libgdx加载模型
  4. csv data set config使用介绍
  5. vue-router使用next()跳转到指定路径时会无限循环
  6. tensflow中加载 fashion_mnist 数据集时
  7. wordpress插入腾讯视频的方法
  8. Python 3.2 beta 2 发布
  9. 炸金花 php算法,php 炸金花牌型 和 比牌 规则
  10. java集合进行排序的两种方式
  11. linux脚本done报错,很简单的脚本程序,总是报错
  12. Java编程技术_10个实用的但偏执的Java编程技术
  13. LVS+Heartbeat+Ldirectord
  14. mysql——数据库事务(C#代码)
  15. TensorFlow 1.0已死,TensorFlow 2.0万岁
  16. 【Element-UI】在vue中将组件调整为英文(国际化)
  17. matlab 分数阶的预估校正算法及实现
  18. 第三章网络介质计算题及其解析[计算机网络]
  19. EasyExcel如何返回业务处理中的错误信息
  20. Python库中,如何使用jieba模块来实现古典名著《西游记》的分词

热门文章

  1. Nginx valid_referer 防盗链
  2. django之多表查询-2
  3. Mychael原创题 洛谷T23923 Mychaelの水题 【题解】
  4. php在web服务器中的工作原理
  5. android 编译模块
  6. String.resize()
  7. Python 的字符编码
  8. 使用 Anthem.NET 的常见回调(Callback)处理方式小结
  9. 赛尔笔记 | 通用领域条件性知识图谱数据集
  10. EMNLP 2021 投稿FAQ