ros 发布信息频率_ROS:消息发布器和订阅器(c++)
学习资料主要源自http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28c%2B%2B%29
$ roscd beginner_tutorials/
$ mkdir -p src
$ cd src
$ gedit talker.cpp
1. 编写发布器节点 talker
#include "ros/ros.h"#include"std_msgs/String.h"#include
int main(int argc, char **argv)
{//初始化ROS,名称重映射(唯一),必须为base name,不含/
ros::init(argc, argv, "talker");//为进程的节点创建一个句柄,第一个创建的NodeHandle初始化节点
ros::NodeHandle n;//告诉主机要在chatter topic上发布一个std_msgs消息//主机会订阅所有chatter topic节点,参数表示发布队列的大小(先进先出)
ros::Publisher chatter_pub = n.advertise<:string>("chatter", 1000);
ros::Rate loop_rate(10); //自循环频率
int count = 0;while(ros::ok())
{
std_msgs::String msg;
std::stringstream ss;
ss<< "hello world" <
msg.data=ss.str();//输出,用来替代prinf/cout
ROS_INFO("%s", msg.data.c_str());
chatter_pub.publish(msg);
ros::spinOnce();//休眠,来使发布频率为10Hz
loop_rate.sleep();++count;
}return 0;
}
实现功能:
(1) 初始化ROS系统
(2) 在chatter topic上发布std_msgs/String消息
(3) 以每秒10次频率发布消息
2. 编写订阅器节点
#include "ros/ros.h"#include"std_msgs/String.h"
//回调函数
void chatterCallback(const std_msgs::String::ConstPtr&msg)
{
ROS_INFO("I heard: [%s]", msg->data.c_str());
}int main(int argc, char **argv)
{
ros::init(argc, argv,"listener");
ros::NodeHandle n;//告诉master需要订阅chatter topic消息
ros::Subscriber sub = n.subscribe("chatter", 1000, chatterCallback);
ros::spin();//自循环
return 0;
}
实现功能:
(1) 初始化ROS系统
(2) 订阅chatter topic消息
(3) 进入自循环,等待消息到达
(4) 消息到达,调用chatterCallback()函数
3. src/ /CMakeLists.txt
cmake_minimum_required(VERSION 2.8.3)
project(beginner_tutorials)
## Find catkin and any catkin packages
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation
)
## Declare ROS messages and services
add_message_files(
FILES
Num.msg
)
add_service_files(
FILES
AddTwoInts.srv
)
## Declare a catkin package
catkin_package(
CATKIN_DEPENDS message_runtime
)
## Build talker and listener
include_directories(include
${catkin_INCLUDE_DIRS}
)
add_executable(talker src/talker.cpp)
target_link_libraries(talker ${catkin_LIBRARIES})
add_dependencies(talker beginner_tutorials_generate_messages_cpp)
add_executable(listener src/listener.cpp)
target_link_libraries(listener ${catkin_LIBRARIES})
add_dependencies(listener beginner_tutorials_generate_messages_cpp)
$ rosrun rqt_graph rqt_graph 或直接rqt_graph
注:如果遇到Couldn't find executable named talker below */src/beginner_tutorials
很有可能是工作空间初始化的问题。
参考
http://wiki.ros.org/ROS/Tutorials
ros 发布信息频率_ROS:消息发布器和订阅器(c++)相关推荐
- ros 发布信息频率_ROS 消息发布器和订阅器Publisher, Subscriber
1.编写发布器节点 节点(Node) 是指 ROS 网络中可执行文件.接下来,将会创建一个发布器节点("talker"),它将不断的在 ROS 网络中广播消息.切换到之前创建的 b ...
- ros 发布信息频率_ROS入门笔记二基础
1.创建工作空间 1.什么是工作空间 工作空间(workspace)是一个存放工作开发相关文件的文件夹 src:代码空间(Source Space) build:编译空间(Build Space) d ...
- ROS入门笔记(十):编写与测试简单的消息发布器和订阅器(C++)
ROS入门笔记(十):编写与测试简单的消息发布器和订阅器(C++) 文章目录 01 导读 02 功能包的创建 03 功能包的源代码编写 3.1 编写发布器节点(talker.cpp) 3.2 编写订阅 ...
- ros订阅话题python_ROS入门教程 (写一个简单的消息发布器和订阅器 (Python))
Note: This tutorial assumes that you have completed the previous tutorials: 创建ROS消息和ROS服务. Descripti ...
- ROS-写一个简单的消息发布器与订阅器(Python)(roswiki初级教程rospy部分翻译以及程序注释)
Topic通信机制---编写简单的Publisher & Subscriber http://wiki.ros.org/cn/ROS/Tutorials/WritingPublisherSub ...
- 12.写一个简单的发布器与订阅器(C++)
写一个简单的发布器与订阅器(C++)(rawmeat:http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber(c%2B%2B)) 注意 ...
- ros 发布信息频率_RouterOS中wifi自动频率选择及发射功率设置
1. 在routeros中,wifi使用的频率设置说明 DFS的全称是Dynamic Frequency Selection,即自动频率选择,只有在DFS Mode设置为None时,Frequency ...
- java订阅发布模式_Spring Boot ActiveMQ发布/订阅消息模式原理解析
本文在<Spring Boot基于Active MQ实现整合JMS>的基础上,介绍如何使用ActiveMQ的发布/订阅消息模式.发布/订阅消息模式是消息发送者发送消息到主题(topic), ...
- ROS之msg文件定义以及自定义发布主题消息类型
一.创建msg文件(相当于一个结构体) 在catkin_ws/src: mkdir msg catkin_ws/src/msg: touch xxx.msg chmod 777 xxxx.msg 编辑 ...
最新文章
- 自定义注解实现日志脱敏
- Ubuntu 下获得root权限
- 上传和优化Magento 2中的产品图像和视频
- python—多进程之进程的创建(一)
- navicat连接mysql闪退_Navicat连接MySql8.0的各种问题及解决方法
- 阿里巴巴创新研究计划 AIR2018 正式发布 邀全球学者共创未来
- MySQL的常见存储引擎介绍与参数设置调优(转载)
- SpringAOP+自定义注解实现日志功能
- ie6,ie7兼容性总结(转)
- cocos2d-x学习记录3——CCTouch触摸响应
- 学习笔记:关于科学方法在社会科学中的局限性
- Linux 内核C -- 第02课:驱动中的指定初始化
- 计算机的编译原理pdf,计算机编译原理DK.pdf
- 《期权、期货及其他衍生产品》读书笔记(第七章:互换)
- 基于VUE+H5PLUS 实现app交互蓝牙打印机得功能
- 英特尔DSA-加速DPDK Vhost
- 解决笔记本装linux后触摸板无法用的问题
- excel怎么设置自动计算_超全8套工程测量计算Excel自动算量表,输入参数即可得出精准结果...
- iOS App名称和内容国际化
- iofod - 为攻城师们打造的低代码平台
热门文章
- Source Insight 4.0 序列号 license文件
- C# FileStream类:文件读写
- java 私有全局变量_java中的全局变量
- 打印机 “错误-正在打印”
- Linux之——UltraISO写入引导扇区时弹出“找到多于1个分区”解决方法
- 云计算运维工程师前景怎么样?
- 双系统下Deepin的安装和卸载(Deepin20.2+Win10)
- 宝塔界面为什么无法访问_宝塔面板登陆不上?宝塔面板打不开解决办法
- 输入码(外码),国标码,区位码,机内码,字型码的概念与关系
- 【剑指Offer】个人学习笔记_15_二进制中1的个数