ROS笔记--主题发布节点和主题订阅节点
来源:互联网 发布:螺栓连接计算软件 编辑:程序博客网 时间:2024/06/06 07:43
ROS笔记–主题发布节点和主题订阅节点
节点是连接ROS网络的可执行文件。我们将创建一个主题发布者节点,该节点将连续广播一条消息。
一、创建工作空间
创建新文件夹,名字自定义,路径也根据自己设定。
mkdir mywork
创建好后,就需要将次路径添加到ROS_PACKAGE_PATH中。查看目前ROS的工作空间
echo $ROS_PACKAGE_PATH
一般显示如下:
/opt/ros/kinetic/share
下面将路径添加到~/.bashrc中
echo "export ROS_PACKAGE_PATH=~/mywork:${ROS_PACKAGE_PATH}" >> ~/.bashrc
再次查看ROS正在使用的空间,确保路径正确添加。
二、创建ROS功能包
打开ROS工作目录:
cd ~/mywork
在该目录下创建功能包:
roscreate-pkg beginner std_msgs roscpp
功能包文件夹下一般包括Makefile、manifest.xml、CMakeLists.txt、mainpage.dox等文件。
std_msgs 包含常见等消息类型
roscpp cpp库
运行命令,查看功能包是否创建
rospack find beginner
三、编写代码
1、主题发布节点
在功能包中创建src/talker.cpp,并添加代码:
#include <ros/ros.h>#include "std_msgs/String.h"#include <iostream>#include <sstream>int main(int argc,char **argv){ ros::init(argc,argv,"talker"); //ros系统初始化,通过命令对名字进行重映射,节点名字在一个运行的系统中必须是唯一的 ros::NodeHandle n;//创建一个句柄,并自动初始化 ros::Publisher pub = n.advertise<std_msgs::String>("chatter",1000); //将std_msgs::String类型的消息发布给话题chatter,参数1000是消息队列的长度 //ros::Publisher pub1 = n.advertise<std_msgs::String>("mytest",1000); ros::Rate rate(10);//指定自循环的频率 1/10 int count = 0; //int mycount=0; while(ros::ok()) //当按下Ctrl+c命令时,返回false { std_msgs::String msg; std::stringstream ss; ss<< "Hello ROS! "<<count; msg.data =ss.str(); ROS_INFO("%s",msg.data.c_str()); pub.publish(msg); // ss<< "Hello my world!this is a test!"<<count; // msg.data =ss.str(); // ROS_INFO("%s",msg.data.c_str()); // pub1.publish(msg); ros::spinOnce(); rate.sleep(); ++count; } return 0;}
2、主题订阅节点
在功能包中创建src/listener.cpp,并添加代码:
#include <ros/ros.h>#include "std_msgs/String.h"void chatcallback(const std_msgs::String::ConstPtr& msg)//回调函数{ ROS_INFO("I heared :[%s]",msg->data.c_str());}int main(int argc,char **argv){ ros::init(argc,argv,"listener"); ros::NodeHandle nh; ros::Subscriber sub = nh.subscribe("chatter",1000,chatcallback); // sub = nh.subscribe("mytest",1000,chatcallback); ros::spin(); return 0;}
四、编译节点
编辑CMakeLists.txt文件,在末尾处添加如下代码:
rosbuild_add_executable(talker src/talker.cpp)rosbuild_add_executable(listener src/listener.cpp)
rosmake工具进行编译:
rosmake beginner
五、运行功能包
在运行功能包前,请确认节点管理器已经打开。使用下面的命令运行:
roscore
运行主题发布和主题订阅
rosrun beginner talkerrosrun beginner listener
运行效果截图:
阅读全文
0 0
- ROS笔记--主题发布节点和主题订阅节点
- ROS笔记——创建简单的主题发布节点和主题订阅节点
- ROS:三个节点相互传递消息,每个节点都可以同时发布和订阅主题
- ROS学习笔记4-使用节点,消息,主题和服务
- ROS简单的发布器节点和订阅器节点
- 节点发布和订阅
- dojo的订阅主题和发布主题
- ROS 基础: 在同一个节点里订阅和发布消息
- OpenJMS主题发布和订阅
- ROS节点、消息、服务、主题的关系
- ROS:两个节点同时具有发布和订阅图像信息的功能
- ROS下订阅/cmd_vel节点
- (3)写简单发布节点和订阅节点
- mosquitto主题发布于订阅
- ROS学习笔记(四):ROS主题
- ROS学习笔记--消息发布器和订阅器
- 我的ROS入门(五):总算搞通ROS的服务节点订阅发布消息话题了
- ROS学习笔记四:理解ROS节点
- 神奇的position:sticky
- 5. ROS编程入门--航迹推算(dead reckoning)
- linux centos安装RabbitMQ
- 双十一/黑五剁完手后,卖家不发货咋办?
- Mysql基础知识
- ROS笔记--主题发布节点和主题订阅节点
- java实现线程的方法
- 模板引擎artTemplate 介绍
- Vue2.0+Vue-cli脚手架
- ubuntu16常用操作命令
- 安卓 版本更新
- 粘贴后出发事件 ueditor
- 重载new()delete()的笔记----C++学习之路
- 浅谈optimizer_mode优化器模式