Skip to content

Vinson-sheep/radio_proxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

无人机数传通信代理 2.0

无人机之间通信通常依赖4G模块或者数传图传。4G模块需要购买SIM卡并长期续费,虽然带宽很高,但是在某些信号弱的地方就很不友好。该项目提供了地面站和多无人机之间利用数传电台通讯的ROS接口,地面站与无人机共享状态和位置信息,开发者无需思考串口通信的具体实现。该项目在ubuntu 18.04ros melodic中充分测试,理论上在其他版本的系统中也能正确运行。

2.0版本与之前的版本完全不兼容,其底层结构完全不一样。新版本相比于旧版本接口更为清晰,功能更为强大,稳定性更好。使用CUAV XBee Pro 数传电台 测试发现单结点带宽最多只有5KB/s,这种状态下数传丢包率严重,伴随大量的ERROR输出。为了程序的正确运行,务必保证单结点的带宽在2KB/s以下 (如果你的数传更为强劲,可以往上调整)。如果你希望将该项目迁移到您的编队项目中,请务必保证通信过程中不出现任何ERROR输出。ERROR的打印通常是带宽不足导致的,带宽不足致使缓冲区的旧数据被新数据覆盖,此时需要适当降低信息的发送频率。在默认配置下,最多支持5台无人机的编队

开发不易,请star支持一下

XbeePro

XbeePro XbeePro

【无人机通信】radio_proxy配置教程--地面站

【无人机通信】radio_proxy配置教程--A3

【无人机通信】radio_proxy配置教程--N3

【其他教程】XbeePro 配置教程

1. 特点

  • 支持N3、A3、PX4飞控,仅需要少量修改开箱即用;
  • 默认大端通讯,自动检测环境大小端,可移植性强;
  • 提供目标、位置共享,全方位支持编队;
  • 支持地面站为中心或无人机为中心的通信拓扑结构;

2. 固定串口ID (如果不需要请忽略)

将数传通过USB连接到地面站或者机载电脑上,然后参考此处固定串口ID。 开发包中的默认端口号为/dev/usb_radio。喜欢用/dev/ttyUSB0之类的端口可以修改对应launch文件。

3. 安装

假设各位已经配置好了无人机机载电脑的环境:

  1. A3上配置 Onboard-SDK-ROS 最新版(大疆无人机,如M300 RTK)
  2. N3上配置 Onboard-SDK-ROS 3.8.1(自制无人机或大疆无人机)
  3. PX4上配置 MAVROS 最新版(自制飞机)

依赖安装

sudo apt install ros-melodic-serial

新建ROS工作区

// 新建终端
mkdir -p catkin_ws/src
cd catkin_ws
catkin_make
cd src
git clone https://github.com/Vinson-sheep/radio_proxy.git

编译

由于需求不同,编译部分是按需编译。

地面站:

打开~/.bashrc文件,追加:

export swarm_num=5 # 无人机数目
export broadcast=true # 如果地面站为通信中心,则负责转发内容

无人机:

打开~/.bashrc文件,追加:

export vehicle_id=<无人机id> # 无人机ID,从1到swarm_num
export swarm_num=5 # 无人机数目,用于过滤信息
export broadcast=false # 如果该无人机为通信中心,则设置为true
# 话题前缀
export prefix=mavros # PX4
export prefix=dji_sdk # N3
export prefix=dji_osdk_ros # A3

(共同) 打开radio_proxy主目录下的backup文件夹,根据需求将里面的内容覆盖radio_proxy根目录下CMakeLists.txtsrc目录下的AIR_proxy_node.cpp。其中,GS表示Ground Station。回到catkin_ws目录下,使用catkin_make编译即可。

4. 运行

新建一个终端:

地面站:

roslaunch radio_proxy GS_proxy.launch

无人机:

roslaunch radio_proxy AIR_proxy.launch

尝试打印topic观察数据是否正常。

5. 问题

  1. 2.x.x版本均提供相同的接口,且本项目长期处于活跃状态,如果发现通信双方异常则可以重新Pull一下代码;
  2. 高速集群编队需要高刷新率的信息共享,此时可以适当调节uav_proxy.cppresendFlightDataTimerresendStatusTimer的回传频率(保证单结点的单宽小于2KB/s);
  3. 轨迹共享的支持曾经被实现,遗憾的是,数传电台的带宽很难支撑该功能,最后不得不放弃;

About

基于数传电台的无人机编队通信软件

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published