1 Star 9 Fork 0

Nebula-Yong/5G_img_transmit_and_remote_control

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
3年前
Loading...
README
typora-copy-images-to
img

5G摄像头图传和远程遥控系统

一、介绍

本仓库是作为申请第十届大赛“浪潮5G+机械创新设计奖学金”的佐证材料,参与评选的项目是“海上森林”——红树林种植机器。

本系统最终采用了SIM8200EA-M2模组进行5G的开发,利用RNDIS技术,将模组做为一个网卡,提供给树莓派5G上网的能力。树莓派利用5G的低延时、大带宽能力实现对树莓派的实时摄像头图传和远程遥控,两者呈现在web网页上。远程遥控采用的是MQTT协议数据传输方案,服务器将指令发送给树莓派,树莓派通过串口转发给单片机芯片,从而实现机器的控制。远程图传采用的是mjpg-streamer+内网穿透方案,mjpg-streamer推流链接兼容性强,可以很好的嵌入到各种平台进行图传显示。其次它的系统占用很小,可以直接使用相机生成的jpeg图像。内网穿透使用的是NPS方案,利用阿里云的公网服务器,将内网的端口映射到了公网服务器端口上。经测试,图传的实际效果因实验环境而异,因为运营商提供的带宽都是非对称,上传速度往往偏低。在最理想(空旷开拓信号无遮挡的位置)的情况下,能达到70ms的延迟和15FPS的帧率。达不到正常30FPS帧率的原因来自上传带宽的受限和HTTP协议基于TCP传输。

文档将从系统设计、系统分析、系统部署和系统优化这四个角度进行阐述。

二、系统设计

2.1 设计目标

1、用树莓派调用种植机器上的摄像头,树莓派通过5G模组将图像暴露传输在公网上,让任意接入互联网的设备都可以访问到低时延的图传,提供远程控制的基础。

2、将树莓派接入MQTT协议,接收远程控制端的指令,利用5G的低延时,获得实时控制的效果。树莓派通过串口将指令转发给单片机,控制机器运动。

2.2 设计思路

2.3 设计方案

  • 5G上网方案

5G上网采用的是SIM8200EA-M2模组,经过实测,该模组对树莓派的驱动支持比较好,与其他模组相比具有更好的稳点性。

  • 图传方案

摄像头选用普通的USB摄像头,使用mjpg-streamer将视频流以图片帧的形式传输出去

  • 内网穿透方案

在公网服务器上部署NPS进行内网穿透,NPS有网页管理界面,能更加方便快捷的部署各种穿透业务。

  • 远程控制方案

使用比较成熟的MQTT协议进行数据的传输,MQTT对带宽的需求小,在较差的网络环境下也能够有较好的表现,也方便后期拓展其他的传感器接口,将传感器的数据上传到云端,进行可视化的呈现。

三、系统分析

3.1 5G模组选型

在5G模组选型上,我们利用了实验室的条件实际测试了3种5G模组(采购了一种,实验室借用测试了两种),测试的3种5G模组分别为RM500U-CN、SIM8200EA-M2、FM650-CN。

在实际使用测试中RM500U-CN在树莓派拨号上网十分不稳定,容易断线,且模组发热量很大,FM650对于树莓派5.x内核的AT指令串口驱动并不完善,需要自己开发定option.c驱动,基于一个快速业务部署的需要,我们暂时选择了SIM8200EA-M2模组作为本系统方案的选择。

3.2 图传方案的选择

对于图传,我们要分辨清楚图传和直播的区别,图传追求的是低延迟和一定的帧率,而直播追求的是流畅和帧率,对延迟的要求不是很高。所以现有的直播推流方案延迟都在1~10S内,延迟对于图传来说是致命的。图传一般用于远程控制,大于1s的延迟对于操作体验来说都是很差的,并且具有极大的不安全性。

经过对各种推流方案的对比和一些测试后,只有mjpg-streamer和WebRTC适合作为低延时的方案,从系统占用和兼容度的两个角度考虑,暂时选择了mjpg-streamer进行图传。

mjpg-streamer具有以下优点

  • 对系统占用小

mjpg-streamer可以直接使用相机生成的jpeg图像,处理器无需做过多的处理,因此可以减少处理器的负载

  • 拉流协议兼容性广

其以图片帧的形式传输可以很容易在任何平台上调用视频流。

3.3 内网穿透方案选择

内网穿透主流的方案有frp和nps,两者在性能上没有太大的差距,所以采用了带有较好web管理端的nps

3.4 远程遥控方案选择

远程遥控采用MQTT协议传输数据,MQTT是专门为物联网设备打造的协议,具有轻量级、低带宽、稳定性好等优点,是比较成熟的方案。MQTT除了传输遥控器数据外,还可以用于后期传感器数据的拓展,将小车搭载的传感器上传到云端,进行一个可视化的展现,能够更加全面直观的呈现小车的状态

四、系统部署

4.1 5G模块配置

本地端部署在树莓派上,请先克隆本仓库到本地,安装SIM8200EA-M2模组的树莓派驱动。

git clone https://gitee.com/nebula-yong/5g_img_transmit_and_remote_control.git
cd 5g_img_transmit_and_remote_control
sudo chmod 777 -R SIM8200_for_RPI
cd SIM8200_for_RPI
sudo ./install.sh

安装minicom用于AT串口指令调试

sudo apt-get install minicom

通过AT指令查看模组的状态,下面列出一些常用指令

sudo minicom -D /dev/ttyUSB2
AT	#测试串口是否通顺
AT+CPIN?	#测试SIM是否正常插入
AT+CSQ		#查看信号质量
AT+CNMP=2	#设置自动寻网

5G上网配置

cd Goonline
make
sudo ./simcom-cm &

通过ifconfig工具可以查看wwan0网卡是拿到了公网ip,如果没有,执行下面命令获取IP设置DNS

sudo dhclient -v wwan0
sudo route add -net 0.0.0.0 wwan0

4.2 mjpg-streamer配置

安装依赖

sudo apt-get install cmake libjpeg8-dev gcc g++
cd mjpg-streamer
make

测试是否成功安装,在mjpg-streamer目录下执行以下命令开启本地测试,运行后在浏览器输入127.0.0.1:8080看看是否调用到了本地的摄像头

./start.sh

4.3 内网穿透配置

  • 云端

准备一台具有公网ip的服务器,通过ssh远程连接到服务器。

git clone https://gitee.com/nebula-yong/5g_img_transmit_and_remote_control.git
cd ./5g_img_transmit_and_remote_control/server
chmod 777 nps
./nps install
nps start

执行完最后一句后,如果没有报错,在浏览器输入服务器IP:8080就可以打开服务器的管理界面,账户名admin,密码123。

进入管理界面后,先添加一个客户端,点+号可以看到客户端一键运行的命令,复制一键运行命令。

4

选择TCP隧道,新建隧道,填要映射的客户端ID,服务器端口选择9000(可以自定义),目标填8080。

5

  • 本地端

进入nps文件夹,输入从服务器复制的客户端运行命令即可接入服务器。

  • 效果测试

打开mjpg-streamer,浏览器输入服务器IP:9000。能看到本地的网页即成功穿透

4.4 web控制和图传界面配置

我们为我们的小车打造了一份web控制平台,首先需要将/5g_img_transmit_and_remote_control/web/src/components/Home.vue文件中的图传ip改为自己公网服务器的ip。

安装依赖

sudo apt-get install npm
node -v		#查看node版本号,需要node版本大于14,若小于14,执行以下命令
sudo npm install n -g
n 14.15.1	#安装14版本
hash -r		#更新缓存

运行web服务器

cd ./5g_img_transmit_and_remote_control/web
npm run serve -- --port 9000

之后在浏览器输入服务器IP:9000即可以看到一个web的界面。

2

五、系统优化

经过实际的不断测试,在最理想的情况下(室外空旷无遮挡的位置)可以达到70ms和15FPS的帧率,在该效果下已经能够有非常流畅的图传体验。

1

但在其他场景下普遍在200-500ms的延迟。实际效果受5G信号的影响。优化方向有两个方向,第一个是从信号的角度,另外一个是从代码优化的角度。

空文件

简介

一个基于5G传输实时图传和远程遥控的设计 展开 收起
取消

发行版

暂无发行版

贡献者 (1)

全部

近期动态

接近3年前推送了新的提交到 master 分支,e42b411...1cf81bd
接近3年前推送了新的提交到 master 分支,d9900c7...e42b411
接近3年前推送了新的提交到 master 分支,7501592...d9900c7
接近3年前推送了新的提交到 master 分支,ef3573a...7501592
接近3年前推送了新的提交到 master 分支,9c48b66...ef3573a
加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/nebula-yong/5g_img_transmit_and_remote_control.git
git@gitee.com:nebula-yong/5g_img_transmit_and_remote_control.git
nebula-yong
5g_img_transmit_and_remote_control
5G_img_transmit_and_remote_control
master

搜索帮助