百元超低成本实现开源无人机/车/船替换5G/4G图数传通讯链路_无人机遥控器与无人机通过4g通信
目录
1. 方案概述
硬件准备
软件准备
2. 开发步骤
3.nomachine的远程连接
4. QGC网络推流
5. 使用FFmpeg视频远程推流配置教程
博主从事开源机器人行业,客户会有一些无人机/车/船通讯链路改装需求,要求将传统射频链路替换为5G链路,能实现nomanchine远程桌面,RTSP远程推流,QGC地面站/missionplanner地面站远程连接。当时同事都没有相关经验,自己通讯这块了解的比较少,尝试从网上寻找一些开源的方案来实现这一功能。如今自己创业公司的产品方案已经做了多版迭代改进,但还是记录下最初的实现思路以供自己反思学习。
1. 方案概述
对于无人机/车/船三者而言5g改装原理和方法几乎相同,都是将5G/4G模块连接到机载电脑,在机载和远程访问电脑上都安装组网软件,将两个设备设置到同一个网络下就可以实现远程连接机载电脑上的应用,流程比较简单的。这里采用的都是以太网接口,需要转接板,实际使用USB网卡直接插机载更便宜。
硬件准备
1.5G/4G模块,5G推荐RM500Q 加上以太网转接板七八百元,4G推荐RG200U,加以太网转接板百元左右。
2.交换机(可选),网口不够用,网络设备比较多可以上。
3.能上网的sim卡
软件准备
组网软件:贝锐蒲公英,贝锐系列软件向日葵之类的大家都很熟悉,在蒲公英官网自行注册一个账号就行,免费版本两个节点。
贝锐蒲公英软件客户端最新版官方下载,蒲公英联机组网平台软件下载 - 贝锐蒲公英官网https://pgy.oray.com/download/
2. 开发步骤
1. 用AT指令配置5g /4g模块自动拨号开启以太网上网,指令和烧写工具厂家一般会给。
2.用交换机连接5G模块和机载电脑等网络设备,安装好天线,插sim卡,模块需要供电。
3.机载和远程电脑分别安装蒲公英软件,注意选择自己对于平台的版本
贝锐蒲公英软件客户端最新版官方下载,蒲公英联机组网平台软件下载 - 贝锐蒲公英官网https://pgy.oray.com/download/
4. 在蒲公英中设置节点,拿到两个节点账号(UID)、密码(自己设置),虚拟IP(自动分配,花钱可以自己设置,但没用只是好看)
5. 用账号(UID)、密码(自己设置)在需要组网的设备上登录自己账号,win有界面,liunx需要命令行安装,官方都有教程,这里放几个常用指令
贝锐蒲公英客户端 for Linux教程-贝锐官网https://service.oray.com/question/24137.html
ubuntu
通过wget蒲公英官网复制的下载网址,进行蒲公英Linux企业版客户端下载。
下载命令如下:
32位:wget https://pgy.oray.com/softwares/153/download/2156/PgyVisitor_6.2.0_i386.deb
64位:wget https://pgy.oray.com/softwares/153/download/2156/PgyVisitor_6.2.0_x86_64.deb
先输入sudo -s切换至管理员权限后,通过cd命令进入安装包所在的文件夹后,使用dpkg命令进行软件安装。
安装命令如下:
32位:dpkg -i PgyVisitor_6.2.0_i386.deb
64位:dpkg -i PgyVisitor_6.2.0_x86_64.deb
CentOS/Redhat
通过wget蒲公英官网复制的下载网址,进行蒲公英Linux企业版客户端下载。
下载命令如下:
32位:wget https://pgy.oray.com/softwares/153/download/2156/PgyVisitor_6.2.0_i386.rpm
64位:wget https://pgy.oray.com/softwares/153/
先输入sudo -s切换至管理员权限后,通过
cd命令进入安装包所在的文件夹后,使用rpm命令进行软件安装。
安装命令如下:
32位:rpm -ivh PgyVisitor_6.2.0_i386.rpm
64位:rpm -ivh PgyVisitor_6.2.0_x86_64.rpmdownload/2156/PgyVisitor_6.2.0_x86_64.rpm
客户端常用命令
输入
pgyvisitor getmbrs
命令并回车,显示查看组网成员命令支持的参数及其说明。
输入
pgyvisitor login -u [UID] -p [password]
命令并回车,进行带参数登录。
输入
pgyvisitor logout
命令并回车,退出当前的蒲公英UID登录。
输入
pgyvisitor autologin -y
命令并回车,开启开机自动登录蒲公英客户端。
补充个踩过的坑,自启动在个别平台上无法生效,可以使用开机自动运行sheel脚本的方式重复几次
sleep 10s pgyvisitor login -u [UID] -p [password]
sleep 20s pgyvisitor login -u [UID] -p [password]
sleep 30s pgyvisitor login -u [UID] -p [password]
......
3.nomachine的远程连接
百度搜索官网下载安装,输入对应机载设备的虚拟IP,端口号4000,示例如下
4. QGC网络推流
- 更改px4.launch文件
- 进入px4.launch文件所在位置/opt/ros/noetic/share/mavros/launch
- 更改文件权限
sudo chmod 777 px4.launch
- 修改文件
gedit px4.launch
- 将后面的ip改为QGC所在电脑的与无人机机载电脑同一网段下的ip
- 在机载电脑上执行
roslaunch mavros px4.launch
开启Mavros - 进入远程电脑的QGC,打开QGC后会自动连接
5. 使用FFmpeg视频远程推流配置教程
1. 准备工作(linux安装依赖)
更新软件包列表
sudo apt-get update
安装 FFmpeg 用于推流
sudo apt-get install ffmpeg
安装 VLC 用于测试播放
sudo apt-get install vlc
2. 下载并启动 MediaMTX 服务器
Releases · bluenviron/mediamtx · GitHubReady-to-use SRT / WebRTC / RTSP / RTMP / LL-HLS / MPEG-TS / RTP media server and media proxy that allows to read, publish, proxy, record and playback video and audio streams. - Releases · bluenviron/mediamtxhttps://github.com/bluenviron/mediamtx/releases
在当前下载目录下打开终端,解压文件
tar -zxvf mediamtx_v1.14.0_linux_amd64.tar.gz
进入解压后文件所在的文件夹,启动服务器
./mediamtx
3. 使用 FFmpeg 推送摄像头视频流
先确认使用的摄像头设备名,通常是/dev/video0
ls /dev/video*
如果发现没办法显示具体的USB摄像头是哪个设备名使用以下指令
sudo apt install v4l-utilsv4l2-ctl --list-devicesv4l2-ctl -d /dev/video0 --list-formats-ext
将video0更换为video1、video2……以及后面的设备名输入,查看哪一个有‘YUYV’或者‘MJPG’,一般该设备就是USB摄像头
打开一个新的终端,运行以下命令开始推流:
ffmpeg \\ -thread_queue_size 512 \\ -f v4l2 \\ -input_format yuyv422 \\ -framerate 30 \\ -video_size 640x480 \\ -i /dev/video4 \\ \\ -c:v libx264 \\ -b:v 1000k \\ -bufsize 1000k \\ -pix_fmt yuv420p \\ -preset ultrafast \\ -tune zerolatency \\ -g 30 \\ \\ -f rtsp \\ -rtsp_transport tcp \\ rtsp://localhost:8554/webcam
还有更简洁的指令
ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -preset ultrafast -b:v 2M -f rtsp rtsp://localhost:8554/webcam
-f v4l2: 指定输入格式为 Video4Linux2,用于摄像头。
-i /dev/video0: 指定输入设备。
-c:v libx264: 使用 H.264 视频编码器。
-preset ultrafast: 编码速度最快,延迟最低,但画质稍差。
-b:v 2M: 视频比特率设置为 2Mbps。
-f rtsp: 指定输出格式为 RTSP。
rtsp://localhost:8554/webcam: 推流地址。webcam 是您自定义的流名称。
4.观看视频流
4.1本地观看
方法A:使用相应ffplay
重新打开一个终端输入
ffplay -fflags nobuffer -flags low_delay -probesize 32 -analyzeduration 0 -sync ext rtsp://localhost:8554/webcam
4.2虚拟局域网下拉流
方法A:使用 VLC
打开 VLC。
按 Ctrl + N 打开网络串流。
输入地址:rtsp://虚拟IP
:8554/webcam
点击“播放”
6. 该方案问题与局限
- 仅支持机载应用组网,不支持旁路网络设备组网,比如网络摄像头,雷达,等其他网络设备
- 以太网转接板可以去掉直接USB连接开发板,便宜还方便,但是多个驱动的源码编译步骤
- 单5G链路通讯容易受网络波动影响,无人机运动快,基站覆盖区域,信号强度影响因素多
- 遥控器需要继续使用射频接收机,5G链路稳定性差,万一失控遥控器链路还能救机