在Rovio爱好者(147946541)的群里,与正义的大魔王讨论了改装的情况。
正义的大魔王打算用miniPC(全志A10方案)来做改装,替换Rovio原有的控制芯片,这是从硬件的改装。这样的好处是,有了更强劲的CPU,可以成高清摄像头等等。不过需要编写电机、导航模块的驱动,导航的算法可能也要进行编写。从软件说,从不熟悉的eCOS系统换成了Linux。但这个工作量还是很大的。全志A10方案有Kerenl Code,这就有了更改的基础。全志A10的Hack可以参见http://www.csksoft.net/blog/post/288.html,为防止链接失效,文后附上该文章。
我的最初出发点是想避开IP映射,采用C/S架构来达到远程控制的目的。这样的好处是,无需设置路由,只要能连上互联网,就可以进行控制,缺点是必须要有一台具有公网IP的Server。我家里是有一台NAS+HTPC的一体机(见前面文章关于此的介绍),该机是常开的。如果映射该机到外网,不更改端口则无法映射Rovio机器人;反之我则无法从外网控制NAS+HTPC一体机。对于普通用户来说,设置路由器,更改端口过于复杂了一些。而通过远程控制NAS+HTPC上的Rovio机器人控制软件,来控制Rovio机器人,基于电信上传带宽,其效果将难以忍受。基于此,基本构架为Remote Control Client,Server,Rovio Control Client三个程序组成C/S模式。Server负责用户注册和信息转发;Rovio Control Client注册到Server,等待远程控制信息;Remote Control Client通过Server连上Rovio Control Client对其进行控制。有如下几种考虑:
1. 终极方案,在固件中加入Rovio Control Client,这样Rovio机器人即可直接注册到Server;
2. 通过另外一台常开PC间接控制。即Rovio Control Client是一个PC程序,这个PC程序类似现在Rovio控制程序,它具有注册到Server并接受控制命令的功能。
3. 基于正义的大魔王的改装方案,在miniPC上开发Rovio Control Client,与1相同,都是在系统层面集成,不同的是,1是在原生系统集成,3是在改装系统上集成。
不论哪种方案,Remote Control Client和Server都是相同的,而1和3方案需要较长时间。2方案是目前最有可操作性的,并且2可以形成一个完全独立的PC控制端,不用依赖Server也可以对Rovio机器人进行控制。
目前的计划:
Step 1: 开发PC上的Rovio Control Client,该程序就是Rovio的PC控制端,目标是要达到RovioDirect的功能,短期内实现基本功能,后期进行扩展(定时巡航等);C/C++实现;
Step 2: 开发PC上的Remote Control Client和Server;C/C++实现;
Step 3: 方案1的Rovio Control Client开发,别无选择,C/C++实现;
Step 4: 其他设备(Android,Pad等)的Remote Control Client开发
为什么C/C++来做?主要是为了保证程序的依赖,发现有一些软件必须要安装.NET Framework 3.5之类的才能运行,太过麻烦。另外,也是我对C/C++比其他语言熟悉。
暂时只做个计划,只是计划而已。
参考文献:
给MK802(USB大小的Android4.0小PC)引出串口信号,变成ARM开发版
参考网站:
http://sourceforge.net/projects/rovio/
http://www.robocommunity.com/forum/
更多精彩请关注公众号: