多无人机通信(多机通信)+配置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了。

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

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

相关推荐
-SGlow-3 分钟前
Linux相关概念和重要知识点(7)(git、冯诺依曼体系结构)
linux·运维·git
江凡心13 分钟前
Qt 每日面试题 -5
服务器·数据库·qt·学习·面试
EterNity_TiMe_19 分钟前
【Linux基础IO】深入解析Linux基础IO缓冲区机制:提升文件操作效率的关键
linux·运维·服务器·开发语言·学习·性能优化·学习方法
0xwang1 小时前
Ubuntu24.04桌面版下的网络管理
linux·ubuntu
苏湘涵1 小时前
进程的那些事--实现shell
linux·运维·服务器
Maxx Space1 小时前
828华为云征文|部署个人知识管理系统 SiyuanNote
linux·git·docker·华为云·github·notion
宝哈2 小时前
认识 Linux操作系统
linux·运维·服务器·开发语言·c++·算法
kingking442 小时前
剖析:基于 RDMA 的多机数据分发和接收场景
服务器·网络·c++
rubyw2 小时前
SQL:如果字段需要排除某个值但又有空值时,不能直接用“<>”或not in
服务器·数据库·sql
zqh176736464692 小时前
cisp-pte多少钱考一次?cisp-pte报考费用及报考条件一次说清楚!
大数据·运维·服务器·安全·web安全·网络安全