远程通讯的建立

ros 本身就是一个分布式节点通讯架构,使节点之间进行信息通讯是其重要的作用。一般来说,我们都是在一个系统里进行ros系统的运行通讯的,其实一直这么做就有点让ros 的分布式通讯机制显得格局小了。其实ROS的这种分布式通讯机制是可以衍衍生到整个局域网的,处在同一个局域网中的设备都能进行通讯。下面就是对ros的多机通讯测试的说明:

在做这个之前,需要了解一下ROS的几个通讯配置,即ROS_MASTER_URIROS_IP

  • URI 是什么,因为我不是做网络通讯的,讲不出多么正确的定义,知道它是个标识就行了,即身份标识。
  • ROS_MASTER_URI 是 ROS 启动 roscore 时的地址,就是 master 的 地址。
  • ROS_IP 为本地的 ip 地址

而这个两者的意义或者作用在哪?——通讯上,更准确的是 远程通讯

  • 有拉回到本片文章所说的 同于局域网张同时协同控制多个设备,控制的想法就是 利用电脑(作为ros master 的运行者)作为主机,而处在局域网中的 其他 ros 机器人(比如A 、B 、C 等)作为从机机器人。
  • 此时ROS_MASTER_URI的地址就是主机的,即电脑

(1)连接到同一个wifi

  • 提示:两设备连接到同一个wifi后,使用ifconfig 查看两设备的各自 ip地址,最好再使用 ping + ip 方式 相互ping 一下,ping 通的情况下,后面的操作才能成功。

(2)如下方为例:

主机(虚拟机) ip :192.168.1.1
从机(jetson tx2) ip :192.168.1.2

(3)在主机和从机的环境配置文件 ~/.bashrc中添加:
11311 这个是端口号,roscore运行时的默认串口
主机:

export ROS_MASTER_URI=http://192.168.1.1:11311
export ROS_IP=192.168.1.1

从机

export ROS_MASTER_URI=http://192.168.1.1:11311
export ROS_IP=192.168.1.2

就是保证同一个master 地址

如何嫌使用ip麻烦,可以在 /etc/hosts 中声明

sudo gedit /etc/hosts

加入:

192.168.1.2  follow
192.168.1.1 master

中间使用 tab 键间隔,保存后,在使用ip时只需要用后面的名字就好了。

在测试中,我建议还是使用 jetson tx2 作为运行 master 的一方,因为使用了export ROS_MASTER_URI 后roscore的运行会被固定在这个ip上,但是当没有这个ip(也就是没有同一个wifi时),roscore就运行不了。这会给虚拟机独自运行产生不便。

启发

利用以上的方法,在同一局域网中,可以添加多个机器人,让一个机器人作为master运行者,其他只需设定ROS_MASTER_URIROS_IP 就可以实现多机器人系统控制了。

出现的问题

虚拟机的 ubuntu 能够 ping 通 处在同一局域网的 jetson tx2 设备,但是jetson tx2 只能 ping 通虚拟机所在主机window下的ip,但是ping 不通虚拟机的ip,从而导致了在进行ros通讯测试时,虚拟机只能作为一个订阅者接收到jetson tx2 作为发布者发送的消息,而虚拟机作为发布者时,jetson tx2作为订阅者却什么都接收不到。
通俗的讲,在同一局域网中,虚拟机找得到jetson tx2,但是jetson tx2找不到虚拟机
已经排除问题:
(1)windows的防火墙已关闭,ubuntu 的防护墙也关闭
(2)虚拟机使用net模式

解决

最终在csdn中提问得到了回答,虚拟机需要设置成桥接模式才行。

通过ROS进行多机协同控制相关推荐

  1. 基于ROS节点多机协同(无人机/无人车)分析

    1.背景 无论是民用领域,还是军用领域.无人机/机器人的小型集群化,都是一个趋势.目前应用比较多的物流机器人,也是很多机器人协同配合完成任务. 随着技术的发展,进入机器人时代,机器与机器之间的通信协同 ...

  2. ROS下多机协同——主从机节点通信

    1. 介绍   现如今,随工业智能化水平提高,单机器人已难以满足大规模任务的需要,因此多机协同控制方法应运而生,并逐渐应用于无人车.无人机的集群以及物流配送等诸多领域.   要想实现多机协同控制,首要 ...

  3. 【控制】《多无人机协同控制技术》周伟老师-第2章-多无人机协同控制体系结构

    第1章 回到目录 第3章 第2章-多无人机协同控制体系结构 2.1 多无人机控制结构现状分析 2.2 多无人机协同控制结构设计思路 2.3 面向协同控制的无人机个体控制结构 2.3.1 面向协同控制的 ...

  4. 北理工研究团队在脑机协同控制技术与脑控智能车辆方面取得重要进展

    脑-控智能车辆(Brain-Controlled Vehicle, BCV)通过脑机接口,实现了大脑对车辆的直接控制(包括远程控制),对残疾人和健康人具有重要的实用价值. 北京理工大学研究团队为了提高 ...

  5. 多机器人协同控制①——仿真平台搭建

    前言 目前课题上在做一些关于异构多机器人协同控制方面的工作(UAV + UGV),实验室里用的移动机器人为ROBOTIS公司的Turtlebot3,无人机为Parrot公司的Bebop2,这两种机器人 ...

  6. Gazebo下多机器人协同控制

    软件平台 Ubuntu 18.04 ROS Melodic Gazebo 硬件平台(可选) Turtlebot3 预备知识 了解 ROS 的基本操作逻辑,若需学习,可移步我的专栏:ROS 学习记录 目 ...

  7. 多智能体系统集群协同控制实验平台详解与典型案例

    目录 一.机器人实验是智能体集群研究必要手段 二.动作捕捉系统解决智能体集群实验系统多个痛点 三.多智能体集群协同控制实验平台 1.Crazyswarm多无人机集群编队实验平台 2.Robotariu ...

  8. 5训练需要更改参数吗_PM2.5和臭氧需要协同控制吗?

    臭氧是什么? 臭氧化学分子式为O3,具有强氧化性,是比氧气更强的氧化剂,常温.常压下无色,低浓度下无味. 臭氧的作用和危害 大气层中绝大部分的臭氧处于平流层内,平流层的臭氧层吸收了210~290 nm ...

  9. 【控制】《复杂运动体系统的分布式协同控制与优化》-方浩老师-第10章-基于模型预测控制的人机协同控制

    第9章 回到目录 第11章 第10章-基于模型预测控制的人机协同控制 10.1 引言 同时干预问题 10.2 问题描述 10.3 基于模型预测的人机协同控制器设计 模型预测控制 10.3.1 基于模型 ...

最新文章

  1. 搭建Python+Django开发环境
  2. mysql alter算法_MySQL ALTER命令_mysql alter_添加_删除_修改
  3. 思考:Linux Kernel的中断处理函数中是否会被其它程序(中断/异常)打断?
  4. STM32开发 -- IAP详解
  5. 高效开发者是如何个性化VS Code插件与配置的?
  6. prometheus-net.DotNetRuntime 获取 CLR 指标原理解析
  7. python的符号函数得到的数字类型_Python笔记——数字类型的几个函数
  8. 面试分享:那些年我经历过的一些面试,以及得到的一些面试心得!
  9. 【3-16】数据库基本编程语句,存储过程,触发器
  10. Java web切面编程
  11. 基于RV1126平台imx291分析 --- 回顾之前的注册
  12. selenium 确实是好东西,使用selenium-server 加快执行速度,对速度有很大提升,同时可以拆分服务,进行集群部署。
  13. 单模光纤最大传输距离为多少_单模光纤传输距离是多少?
  14. 解决.bat文件一闪而过的方法
  15. Grafana 任意文件读取漏洞复现
  16. 中小企业融资风险分类有哪些
  17. 文件碎片/磁盘碎片的一些知识
  18. html 多张图片自动滚动,JS实现图片的不间断连续滚动的简单实例
  19. 弘辽科技:抖音电商,一场标准的「字节」式战役
  20. 剪辑技巧!如何利用背景图片给多段视频画面四周添加黑色边框

热门文章

  1. 机器学习代码学习(一)-first-dichotomy
  2. Deepin 微信版本太低无法登录
  3. c# 微信公众号开发之自定义菜单栏
  4. 双X轴的Echarts图
  5. windows11-USB禁用
  6. [渝粤教育] 南京交通职业技术学院 计算机基础 参考 资料
  7. 【算法】求n的m次方(快速幂取模)
  8. Storm集成HBase、JDBC、Kafka、Hive测试
  9. 我在哪?从何处来,又到哪里去?
  10. C++描述 104.仓库选址