ROS机器人操作系统

文章目录

  • ROS机器人操作系统
  • 前言
  • 一、话题模型
  • 二、实现功能
    • 1.创建订阅者C++
    • 2.Python代码
    • 3.配置订阅者代码编译规则
    • 4.编译并运行订阅者
  • 总结

前言

与发布者相对应的是ROS系统里的订阅者,也是ROS里经常使用的知识。

一、话题模型

二、实现功能

1.创建订阅者C++

如何实现一个订阅者
• 初始化ROS节点;
• 订阅需要的话题;
• 循环等待话题消息,接收到
消息后进入回调函数;
• 在回调函数中完成消息处理。

/*** 该例程将订阅/turtle1/pose话题,消息类型turtlesim::Pose*/#include <ros/ros.h>
#include "turtlesim/Pose.h"// 接收到订阅的消息后,会进入消息回调函数
void poseCallback(const turtlesim::Pose::ConstPtr& msg)
{// 将接收到的消息打印出来ROS_INFO("Turtle pose: x:%0.6f, y:%0.6f", msg->x, msg->y);
}int main(int argc, char **argv)
{// 初始化ROS节点ros::init(argc, argv, "pose_subscriber");// 创建节点句柄ros::NodeHandle n;// 创建一个Subscriber,订阅名为/turtle1/pose的topic,注册回调函数poseCallbackros::Subscriber pose_sub = n.subscribe("/turtle1/pose", 10, poseCallback);// 循环等待回调函数ros::spin();return 0;
}

2.Python代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 该例程将订阅/turtle1/pose话题,消息类型turtlesim::Poseimport rospy
from turtlesim.msg import Posedef poseCallback(msg):rospy.loginfo("Turtle pose: x:%0.6f, y:%0.6f", msg.x, msg.y)def pose_subscriber():# ROS节点初始化rospy.init_node('pose_subscriber', anonymous=True)# 创建一个Subscriber,订阅名为/turtle1/pose的topic,注册回调函数poseCallbackrospy.Subscriber("/turtle1/pose", Pose, poseCallback)# 循环等待回调函数rospy.spin()if __name__ == '__main__':pose_subscriber()

3.配置订阅者代码编译规则

配置CMakeLists.txt中的编译规则
• 设置需要编译的代码和生成的可执行文件;
• 设置链接库;

add_executable(pose_subscriber src/pose_subscriber.cpp)
target_link_libraries(pose_subscriber ${catkin_LIBRARIES})

4.编译并运行订阅者

$ cd ~/catkin_ws
$ catkin_make
$ source devel/setup.bash
$ roscore
$ rosrun turtlesim turtlesim_node
$ rosrun learning_topic velocity_publisher


小海龟是没有动的,可以看的坐标也是固定的,然后我们运行上一讲的发布者代码

可以看的坐标发生了变换,这就是订阅者的功能。

总结

如何实现一个订阅者
• 初始化ROS节点;
• 订阅需要的话题;
• 循环等待话题消息,接收到
消息后进入回调函数;
• 在回调函数中完成消息处理。

ROS机器人操作系统——订阅者Subscriber的编程实现(五)相关推荐

  1. ROS入门-9.订阅者Subscriber的编程实现

    还是通过海龟仿真器去发布数据,要实现一个订阅者来订阅海龟的位置信息等,publisher是海龟仿真器,subcriber即为这次我们要实现的程序 数据传输为从publisher传向subscriber ...

  2. ros实验操作——订阅者Subscriber的编程实现

    目录 创建小海龟位置订阅者 订阅者实现代码 发布者代码实现 代码编译 每文一语 创建小海龟位置订阅者 在启动小海龟仿真之后,ROS会默认发布一个名为"/turtle1/Pose"的 ...

  3. 【RK3399Pro学习笔记】七、ROS订阅者Subscriber的编程实现

    目录 如何实现一个订阅者 C++ 编写程序 配置CMakeLists.txt 编译并运行发布者 python 创建并编写脚本 运行 平台:华硕 Thinker Edge R 瑞芯微 RK3399Pro ...

  4. ROS机器人操作系统学习笔记(三)ROS通信架构

    ROS机器人操作系统学习笔记(三)ROS通信架构 ROS的通信架构是ROS的灵魂,也是整个ROS正常运行的关键所在.ROS通信架构包括各种数据的处理,进程的运行,消息的传递等等.本章主要介绍了通信架构 ...

  5. ROS机器人操作系统底层原理及代码剖析

    0 目的 本文介绍ROS机器人操作系统(Robot Operating System)的实现原理,从最底层分析ROS代码是如何实现的. 1 序列化 把通信的内容(也就是消息message)序列化是通信 ...

  6. ros机器人操作系统简介

    机器人操作系统   (Robot Operating System, 或简称 ROS),它可以帮助提高机器人软件的开发效率. ROS 系统的官方定义如下: ROS是面向机器人的开源的元操作系统(met ...

  7. ROS机器人操作系统学习笔记(一)--基本概念

    ROS机器人操作系统学习教程(一)–基本概念 1. 基本概念 1.1 ROS背景 机器人操作系统(Robot Operating System, ROS)是一个应用于机器人上的操作系统,它操作方便.功 ...

  8. Windows使用ROS机器人操作系统全面资料汇总

    0 摘要: 本文以Win10系统中安装使用ROS1Melodic和ROS2Dashing为基础,并通过开源硬件设备Arduino与ROS的通信为示例,具体介绍机器人操作系统ROS1和ROS2的细节.部 ...

  9. ROS机器人操作系统暑期学校总结和感悟

    https://discourse.ros.org/t/ros-summer-school-in-china-2019-july-27-august-hefei/9494 中国ROS暑期学校将迎来五周 ...

  10. ROS 机器人操作系统进阶实战

    ROS(Robot Operating System) 是一个开源的机器人操作系统,目的是提供开发平台.工具及生态给开发人员,可以让开发人员快速开发.本课程通过精心设计的案例,分析技术要点.理解运行原 ...

最新文章

  1. 生活随笔:人的追求和差异
  2. kmeans图像分割
  3. 企业日常选择网站制作公司大多从这三方面着手
  4. 『码蛋』Android 周刊第1期
  5. IDEA修改module的名字
  6. .net:Code First 创建或更新数据库
  7. Tomcat访问日志详细配置
  8. JS大小比较(>、<、>=、<=)运算符
  9. 注册表清除桌面垃圾图标
  10. 离心泵CAE_2_ICEM剖分网格_2_叶轮流道
  11. Android报错:The processing instruction target matching [xX][mM][lL] is not allowed.
  12. 什么是深度卷积神经网络,卷积神经网络怎么学
  13. 回归模型1:优化的灰色模型matlab实现
  14. 大数据和云计算有什么关系?
  15. mockjs java_GitHub - mikove3y/mockj: 生成mock数据的利器,mockjs的java实现。同时内置随机 random 一个对象的功能...
  16. Docker镜像常用命令
  17. Angular 的 ngOnInit 和 Constructor 的区别
  18. Python基础知识:数据类型--数值型
  19. 【Java】继承、多态、接口
  20. C/C++内存申请和释放(一)

热门文章

  1. 三次曲线和五次曲线函数
  2. Android 自定义View:实现一个 FM 刻度尺
  3. DirectX11 SDK下载地址
  4. 用php做滚动,用PHP+java实现自动新闻滚动窗口
  5. nar神经网络_动态神经网络(NAR)做预测
  6. 肠道微生物组的个体化诊·疗进程
  7. 第十一章 枚举与泛型 总结
  8. 2022-2028全球全盘加密软件行业调研及趋势分析报告
  9. CGAL::2D Arrangements
  10. 台式电脑怎么调出计算机,台式电脑连接笔记本显示器的方法步骤