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

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

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

相关推荐
热心市民运维小孙15 分钟前
Ubuntu重命名默认账户
linux·ubuntu·excel
PyAIGCMaster16 分钟前
文本模式下成功。ubuntu P104成功。
服务器·数据库·ubuntu
Jackey_Song_Odd1 小时前
解决Ubuntu下无法装载 Windows D盘的问题
linux·ubuntu
乔巴不是狸猫1 小时前
第11周作业
linux
Bessssss3 小时前
centos权限大集合,覆盖多种权限类型,解惑权限后有“. + t s”问题!
linux·运维·centos
silver6873 小时前
Linux 下的 GPT 和 MBR 分区表详解
linux
R-sz4 小时前
14: curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的错误“
linux·python·centos
code_abc4 小时前
Shell 脚本编程基础:变量
linux
星如雨落4 小时前
Linux shell脚本对常见图片格式批量转换为PDF文件
linux·shell
冰红茶兑滴水4 小时前
云备份项目--工具类编写
linux·c++