Ros学习笔记(三)创建节点及节点之间通信
本节创建两个节点,一个用于发布数据,另一个节点接收该数据。
定位到工作区的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学习笔记(三)创建节点及节点之间通信相关推荐
- ROS学习笔记三:创建ROS软件包
,# ROS学习笔记三:创建ROS软件包 catkin软件包的组成 一个软件包必须满足如下条件才能被称之为catkin软件包: 这个软件包必须包含一个catkin编译文件package.xml(man ...
- K210学习笔记(三) K210与STM32进行串口通信,K210发STM收
文章目录 前言 一.以/r/n为结尾 二.K210端代码 三.STM32端 3.1 main函数 四.测试结果 4.1当收到1时 4.2当收到2时 4.3 测试视频 总结 前言 前面我们讲了STM32 ...
- ROS学习笔记三:编写第一个ROS节点程序
在编写第一个ROS节点程序之前需要创建工作空间(workspace)和功能包(package). 一.创建工作空间(workspace) 创建一个catkin_ws: #注意:如果使用sudo一次性创 ...
- ROS学习笔记三(TF的类)
1.数据类型 数据类型定义在tf/transform_datatypes.h.里 1.1 基本数据类型(Quaternion, Vector, Point, Pose, Transform) Type ...
- ROS学习笔记_创建工作空间(一)
创建工作空间 mkdir -p ~/catkin_ws_2/src -p参数是将路径上的父子目录同时创建. $ cd ~/catkin_ws_2/ $ catkin_make 在工作空间的根目录下运行 ...
- openstack学习笔记三 创建第一个实例
登陆admin 创建一个基本网络 镜像 已经安装好操作系统的硬盘文件 计算--镜像--创建镜像 名称 centos7.2-1511 镜像源 镜像地址 镜像地址 http://mirror ...
- JavaScript学习笔记:创建、添加与删除节点
JavaScript学习笔记:创建.添加与删除节点 文章目录 JavaScript学习笔记:创建.添加与删除节点 一.DOM对象节点类型 二.创建节点 1.创建元素节点 2.创建文本节点 3.创建属性 ...
- ROS学习笔记-ROS订阅和发布节点
一个简单的ROS包,一个发布者,一个订阅者 刚开始学习ROS,参考网上的资料完成了测试节点的编写,记录一下. 个人习惯在home/Develop目录中做开发,于是在Develop目录下面创建了一个RO ...
- ROS学习笔记四:理解ROS节点
ROS学习笔记四:理解ROS节点 本节主要介绍ROS图形概念,讨论ROS命令行工具roscore.rosnode和rosrun. 要求 要求已经在Linux系统中安装一个学习用的ros软件包例子: s ...
- ROS 学习笔记(三):自定义服务数据srv+server+client 示例运行
ROS 学习笔记(三):自定义服务数据srv+Server+Client 示例运行 一.自定义服务数据: 1.向功能包添加自定义服务文件(AddTwoInts.srv) cd ~/catkin_ws/ ...
最新文章
- Vlan 4096的限制原因
- Pandas中 DateFrame 修改列名
- Libgdx New 3D API 教程之 -- 使用Libgdx加载模型
- csv data set config使用介绍
- vue-router使用next()跳转到指定路径时会无限循环
- tensflow中加载 fashion_mnist 数据集时
- wordpress插入腾讯视频的方法
- Python 3.2 beta 2 发布
- 炸金花 php算法,php 炸金花牌型 和 比牌 规则
- java集合进行排序的两种方式
- linux脚本done报错,很简单的脚本程序,总是报错
- Java编程技术_10个实用的但偏执的Java编程技术
- LVS+Heartbeat+Ldirectord
- mysql——数据库事务(C#代码)
- TensorFlow 1.0已死,TensorFlow 2.0万岁
- 【Element-UI】在vue中将组件调整为英文(国际化)
- matlab 分数阶的预估校正算法及实现
- 第三章网络介质计算题及其解析[计算机网络]
- EasyExcel如何返回业务处理中的错误信息
- Python库中,如何使用jieba模块来实现古典名著《西游记》的分词