我是靠谱客的博主 娇气书本,最近开发中收集的这篇文章主要介绍远程遥控小车搭建记录,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

        22年国庆期间,无意从抖音上发现远程遥控小车已经很普及了,包含了摄像头、喊话器、闪光灯控制,系统均是单片机控制,再叠加一个360度摄像头,基本是两个系统的叠加,也有一些商业化的系统,硬件+软件+云服务。

        想起来今年上半年尚未完工的rover小车,硬件部分改造基本完工,小车内的控制app还有缺陷,relay云也不完善。22年上半年看了不少webrtc的实现,server端支持stun打洞,可惜的是没有找到单独把P2P打洞独立出来的客户端,另外webrtc目前仅支持camera采集raw视频,编解码均在其内部完成,而小车的视频输出是jpg格式。基于以上两点,把小车接入webrtc的想法基本判了死刑,有点遗憾。
    完整的webrtc没有希望,仿照其架构把系统搭起来,实现远程控制+实时视频应该是可行的。上半年搭建系统写的代码作为基础,一个国庆应该可以搞定,说干就干,系统架构如下:


    1. proxy

        proxy部署在小车上,硬件是一个摘掉屏幕的Android手机,里面跑一个UI相当简单的APK,作用是连接小车wifi,按小车的交互协议获取视频流,并接收client端发过来的控制指令,UI的作用是调试用途,实际没什么作用。Android手机里还插入了一张4G SIM卡,proxy连接小车wifi的同时还建立了一个蜂窝连接,把wifi网卡上的视频流通过蜂窝连接发给client,并把蜂窝连接上来自于client的控制指令转发到wifi连接上,最终传递给小车。proxy顾名思义就是一个代理,位于广域网里的client可以通过这个代理连接小车。这个proxy除了代理网络外,它还理解这台小车的内部运行逻辑,能把来自client的控制指令翻译成小车能理解的指令,它也是小车运行逻辑的代理。
    2. signal server
    signal server的作用是接收proxy和client的注册指令,根据小车的MAC地址实现两者的两两配对,配对后,把client的公网ip和端口传递给proxy,实现P2P直连。后续的小车控制指令和视频流,均通过P2P直传。其功能与webrtc中的signal server是类似的。
    3. client
    client是一个Android的APP,运行在任意Android设备上,除了作为小车的遥控器以外,里面包含了一个简单的upnp打洞逻辑,在signal server的帮助下实现P2P打洞,确保能让proxy与自身建立socket连接。
    
    
目录说明:
cloud:

signal server的实现,为了简单,实验系统是找了个openwrt系统部署上,目前还是作为mjpg-streamer的插件运行,通过建立一个server socket,接收proxy和client的数据,传递ip地址和端口,实现双方的握手(注册)和P2P打洞,实验系统的目的是快速验证可行性。最终是托管在阿里云上,跑一个后台服务,基于公网IP起两个端口,一个用于proxy和client注册,一个用于打洞。

proxy:

小车内proxy端,Android app

client:

小车的控制端,Android app,运行截图如下:

硬件说明:

        小车硬件是用Brookstone的小车改造而来,基本无损改造,通过抓包破解其运行协议,APP也是遵循其协议的,改造的部分就是电池,改成大容量了,适应远程运行。

         小车的proxy硬件载体是一个摘掉屏幕的Android手机,用的是好几年前的荣耀8青春版,某鱼几十块就能买到,卸载了所有系统预装应用,目的就是为了省电,实际测试发现电池很给力,充一次电可以支撑小车的电池两三个充电循环。给个不太漂亮的截图,实际可以放到小车内部,丑就丑些吧,实际就是电池占地方,主板很小的。注意,要自己买个贴片天线,不然信号很差。

最后

以上就是娇气书本为你收集整理的远程遥控小车搭建记录的全部内容,希望文章能够帮你解决远程遥控小车搭建记录所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部