当前位置: 首页 > news >正文

多无人机通信(多机通信)+配置ssh服务

目录

多机通信

设备

主从机通信设置

配置从机

配置主机

测试

正式启用

MAVROS通信


多机通信

多机通信是实现机器人编队的基础,通过网络搭建通信链路。我们这里用中心节点网络通信,所有数据需有经过中心节点,所以,中心节点需要有很高的带宽。

设备

ubuntu系统电脑(主机)

同版本ubuntu机载电脑或电脑(从机)

px4固件飞控

路由器局域网

从机上配有mavros等环境

主从机通信设置

  • 主机从机都需要下载ssh服务,ubuntu会自动安装openssh-client,但是并没有安装openssh-server。
sudo apt install openssh-server
  • 查看版本号,并检验是否安装成功。
ssh -V

配置从机

  • 从机安装ifconfig,查看ip地址(注:主机从机需要在同一WiFi下)
sudo apt install net-tools
  • 输入ifconfig(windows为ipconfig),记住ip地址

然后回到主机 ping一下看看

ping 192.168.***.***

配置主机

  • 然后主机改一下配置文件
sudo gedit /etc/hosts

在上面添加ip和主机名 ,可以添加多个从机,前提是同一局域网。

到这里就配置完成了,

测试

在主机打开终端

ssh user@hostname #ssh 用户名@服务器地址

这里的服务器地址也就是hostname可以使ip,也可以是用户名,比如我的从机为uas

ssh uas@uas

也可以实现远程连接

第一次连接时会提示

The authenticity of host ' (192.168.)' can't be established.
ECDSA key fingerprint is SHA256:Vybt22mVXuNuB5unE++yowF7lgA/9/2bLSiO3qmYWBY.
Are you sure you want to continue connecting (yes/no)?

 这是说这个ip的指纹是陌生的,要求你是否继续连接,输入yes

ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub 

这个指令是查看公钥的指纹。(可以略过)

之后就可以远程控制了,该终端就成为了从机的目录,相当于在从机上打开终端进行操作。但是无法启用图像化文件,不能gedit修改文件,不能打开rviz等等,只能进行终端操作。

正式启用

由于不能进行图形化操作,所以在网上查阅资料,发现可以添加参数来解决这个问题。

ssh -X name@hostname

-X参数可以提供图形化操作。

MAVROS通信

由于默认px4.launch文件的话题名都一样,所以想要进行多机通信要修改话题名,增加组名即可,也就是前缀。

在launch中修改,可以把<group ns ="">放在多个位置,这里提供一种。

<launch><!-- vim: set ft=xml noet : --><!-- example launch script for PX4 based FCU's --><arg name="fcu_url" default="/dev/ttyACM0:57600" /><arg name="gcs_url" default="" /><arg name="tgt_system" default="1" /><arg name="tgt_component" default="1" /><arg name="log_output" default="screen" /><arg name="fcu_protocol" default="v2.0" /><arg name="respawn_mavros" default="false" /><group ns="uav_1"><include file="$(find mavros)/launch/node.launch"><arg name="pluginlists_yaml" value="$(find mavros)/launch/px4_pluginlists.yaml" /><arg name="config_yaml" value="$(find mavros)/launch/px4_config.yaml" /><arg name="fcu_url" value="$(arg fcu_url)" /><arg name="gcs_url" value="$(arg gcs_url)" /><arg name="tgt_system" value="$(arg tgt_system)" /><arg name="tgt_component" value="$(arg tgt_component)" /><arg name="log_output" value="$(arg log_output)" /><arg name="fcu_protocol" value="$(arg fcu_protocol)" /><arg name="respawn_mavros" default="$(arg respawn_mavros)" /></include></group>
</launch>

然后分别启动两个launch就会有/uav_1/mavros和/uav_2/mavros了。

然后在代码中增加订阅的话题前缀即可完成多无人机通信。

前提是要在从机上搭建好环境和硬件连接。

相关文章:

  • opengauss使用遇到的问题,随时更新
  • react是一种语言?
  • 高效编程的利器 Jupyter Notebook
  • (undone) MIT6.824 Lecture1 笔记
  • 数据结构:树(并查集)
  • minio 快速入门+单机部署+集群+调优
  • 前端使用xlsx-js-style导出Excel,带样式,并处理合并单元格边框显示不全和动态插入表头解决
  • 分治思想--python
  • Nest.js实现一个简单的聊天室
  • 24.9.27学习笔记
  • WebRTC关键技术及应用场景:EasyCVR视频汇聚平台高效低延迟视频监控解决方案
  • C++:模拟实现string
  • 如何使用 WebRTC 获取摄像头视频
  • 用Promise实现前端并发请求
  • 老古董Lisp实用主义入门教程(12):白日梦先生的白日梦
  • [case10]使用RSQL实现端到端的动态查询
  • 【347天】每日项目总结系列085(2018.01.18)
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Android 控件背景颜色处理
  • angular学习第一篇-----环境搭建
  • Bootstrap JS插件Alert源码分析
  • Java 内存分配及垃圾回收机制初探
  • Java到底能干嘛?
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Redis字符串类型内部编码剖析
  • 从零开始的无人驾驶 1
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 高程读书笔记 第六章 面向对象程序设计
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 七牛云假注销小指南
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • ​马来语翻译中文去哪比较好?
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • ### RabbitMQ五种工作模式:
  • #HarmonyOS:基础语法
  • #if等命令的学习
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (4)事件处理——(7)简单事件(Simple events)
  • (C11) 泛型表达式
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (转)【Hibernate总结系列】使用举例
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • .Mobi域名介绍
  • .net core Redis 使用有序集合实现延迟队列
  • .net framework profiles /.net framework 配置
  • .NET 中让 Task 支持带超时的异步等待
  • .net开发引用程序集提示没有强名称的解决办法
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .NET中两种OCR方式对比
  • ??myeclipse+tomcat
  • @DS 多数据源 + @Transactional(rollbackFor = Exception.class) 导致@DS 多数据源没法使用
  • @RestControllerAdvice异常统一处理类失效原因
  • @staticmethod和@classmethod的作用与区别