远程遥控小车搭建记录

        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青春版,某鱼几十块就能买到,卸载了所有系统预装应用,目的就是为了省电,实际测试发现电池很给力,充一次电可以支撑小车的电池两三个充电循环。给个不太漂亮的截图,实际可以放到小车内部,丑就丑些吧,实际就是电池占地方,主板很小的。注意,要自己买个贴片天线,不然信号很差。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值