Ros1中的pub和sub是如何建立连接的?

本文详细介绍了Ros1中publisher(pub)和subscriber(sub)如何通过XMLRPC与rosmaster建立连接,以及节点间的TCP/UDP通信过程。涉及的步骤包括:pub和sub与rosmaster的xmlrpc通信,节点间的socket连接,以及连接建立的具体流程。文章还解答了关于tcpserver端口和IP地址生成的问题。
摘要由CSDN通过智能技术生成

Ros1中的pub和sub是如何建立连接的?

先上时序图,一睹为快

请添加图片描述

连接拓扑关系

请添加图片描述

简要描述连接拓扑关系:

pub<–>rosmaster: pub节点进程与rosmaster使用xmlrpc机制进程通讯,xmlrpc是基于xml格式和http协议的一种rpc(remote procedure call)。

sub<–>rosmaster: 同pub节点。

pub<–>sub: 节点间使用socket(tcp/udp传输层协议)进行连接

详细流程探究

方法

源码: 下载ros源码并编译(可参考上篇文章),也可以直接使用ros wiki链接进行操作。

断点调试:

  1. 节点连接主要是在ros_comm/roscpp,所以修改roscpp下的CMakeLists文件,增加编译debug选项(add_defi
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt可以通过ROS的网络通信协议与ROS机器人进行连接。具体步骤如下: 1. 安装ROS 首先需要在计算机上安装ROS,可以参考ROS官网的安装指南进行安装。 2. 创建ROS工作空间 使用catkin工具创建一个ROS工作空间,可以使用命令行或者在Qt执行。在终端输入以下命令: ``` mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make ``` 3. 创建ROS节点 在Qt创建一个ROS节点,可以使用Qt ROS插件来实现。首先需要安装Qt ROS插件,可以在Qt Creator打开插件管理器并搜索“ROS”,然后安装。 创建ROS节点后,需要将节点的名称和ROS主机的IP地址设置为相应的值。可以使用以下代码创建ROS节点: ``` #include <ros/ros.h> int main(int argc, char **argv) { ros::init(argc, argv, "qt_ros_node"); ros::NodeHandle nh; // do something here return 0; } ``` 4. 发布和订阅ROS主题 在Qt,可以使用ROS的C++ API来发布和订阅ROS主题。可以使用以下代码示例来发布和订阅ROS主题: ``` #include <ros/ros.h> #include <std_msgs/String.h> int main(int argc, char **argv) { ros::init(argc, argv, "qt_ros_node"); ros::NodeHandle nh; ros::Publisher pub = nh.advertise<std_msgs::String>("my_topic", 1000); ros::Subscriber sub = nh.subscribe("my_topic", 1000, callback); ros::Rate loop_rate(10); while (ros::ok()) { std_msgs::String msg; msg.data = "Hello, ROS!"; pub.publish(msg); ros::spinOnce(); loop_rate.sleep(); } return 0; } void callback(const std_msgs::String::ConstPtr& msg) { ROS_INFO("I heard: [%s]", msg->data.c_str()); } ``` 5. 运行ROS节点 在完成以上步骤后,可以在Qt编译和运行ROS节点。可以使用catkin工具构建ROS包和节点,然后在终端运行ROS节点: ``` cd ~/catkin_ws/ catkin_make source devel/setup.bash rosrun my_package my_node ``` 在Qt也可以直接运行ROS节点,可以使用Qt Creator集成的ROS Launch插件来启动ROS节点。 以上就是Qt如何与ROS机器人进行连接的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值