概述、开发流程

手机、平板、电脑都可以控制机器人,以下为方便,手机往往指的是能控制机器人的所有设备。

文中studio指Rose studio(studio.exe)

家中有支持蓝牙的水表、窗帘、电饭煲、空调。6点半,机器人走到电饭煲,启动煲汤。之后走到窗帘,打开窗帘,由全闭到半闭。10点,机器人清扫房间。14点,读水表,数据上传到自来水公司。18点,你下班快到家,路上用手机控制机器人,打开空调。

在这场景中,机器人控制水表、窗帘、电饭煲、空调,靠的就是一个个安装在机器人内的小程序,这些小程序由电器生产商提供。

 

一、概述

1.1 功能分类

实时控制。实时给电器下达命令。这类似用机器人代替各种遥控器。

定时任务。每个小程序都可向外暴露它能支持哪些任务。用户按自个需要,分配哪时间执行哪任务。

设备驱动。设备指的是机器人自个在用的器件。以底盘为例,有些机器人是扫地底盘,有的是坦克式履带底盘。即使同是扫地底盘,产商A和产商B也可能不一样。如果每个底盘都用C/C++写、然后固化在Launcher,那太不灵活。为此会做到不同产商会以小程序方式自写驱动,当然,这些驱动得符合Launcher要求的接口规范。

 

1.2 编程语言

Lua和C++混和编程。

选择哪种脚本语言?除要能和C/C++几近零成本互调,还要具备2)既是C/C++的“扩展语言”,又是“可扩展语言”。第一种形式中,C/C++拥有控制权,脚本是一个库。在第二种形式中,脚本拥有控制权,C/C++是一个库。3)只需少量C/C++代码就能解释脚本语言。4)语法要类似C/C++。

纵观市面上流行的脚本语言,要符合以上要求,Lua可说是个较好方案。考虑到第4点,使用Lua开发小程序,要不能用一些太过自由语法,像表示字符串将只能用C/C++风格的双引号,不能用单引号。

 

1.3 运行平台

以上着重说的是小程序运行在机器人,以目前技术,机器人主要使用Android操作系统。但小程序可能运行在iOS、Win10。举个例子,要控制空调,除机器人能控制外,如果此时人就靠近空调,也会用手机直接控制。

虽然会运行在不同平台,但对小程序开发者来说,只要写一个就行了,Launcher、kDesktop会处理当中跨平台问题。

 

1.4 发布、下载

开发者发布小程序,如何发布见下文的“三、发布”。

Launcher、kDesktop内置了小程序“商店”,用户在商店便可下载小程序。

 

二、开发流程

硬件上你需要一台Windows电脑,已完全可以不要Ubuntu。

 

2.1 建立开发环境

参考“学习机器人开发”操作步骤,在Windows,编译出studio、launcher、kdesktop。

生成launcher或kdesktop目的是须要一个小程序测试容器。有了studio、launcher或kdesktop,本地开发小程序环境就建立了。

对后绪步骤,可对照看“语音驱动(tspeech_slot)”,那里有一个开发各阶段演示视频。或许就就可以直接按视频操作一遍,然回再回头看这里的各阶段文字描述。

 

2.2 新建小程序

运行studio.exe,在左侧树形控件的“apps-res”单击右键,弹出菜单中选择“新建”——“小程序”。弹出窗口中填入bundleid。这bundleid一旦填入,后面要改就比较麻烦了。以下假设新建小程序的bundleid是aplt.leagor.hello。

运行kdesktop,切到小程序页,应该就能看到此次新建hello小程序,点它能看到以下结果。

图1 新建小程序界面

执行新建后,会生成<res>/aplt_leagor_hello目录,及底下有数个子目录。在Visual Studio,applet项目会显示数个会经常修改的文件。

文件描述
lua/main.luaaplt表:aplt_leagor_hello
lua/home.lua处理home窗口的表:aplt_leagor_hello__home。窗口表的命名总是<lua_bundleid>__<window_id>
settings.cfg定义该小程序bundleid、版本号

 

2.3 完成中文翻译

若没有翻译,图一标题处显示的是英文“Title”。Rose采用gettext作为它的多语言机制,要完成翻译,先下载工具软件:Poedit

<res>/aplt_leagor_hello/po/aplt_leagor_hello-lib/aplt_leagor_hello-lib.pot,双击它。“编目”——“从源代码更新”,并“保存”。至此hello小程序要翻译的msgid便汇集到aplt_leagor_hello-lib.pot。

打开同目录下的zh_CN.po。“编目”——“从pot文件更新”,选择“aplt_leagor_hello-lib.pot”。然后逐条进行中文翻译。“保存”后会生成“zh_CN.mo”。

把“zh_CN.mo”复制到<aplt_leagor_hello>/translations/zh_CN/LC_MESSAGES,改名为aplt_leagor_hello-lib.mo。

再次运行kdesktop,就能看到中文翻译后的hello。

编写lua时,如何让rose能自动收集msgid?——不带参数的使用_("msgid"),带参数的使用vgettext2("$k1 msgid$k2", {k1 = v1, k2 = v2})。

 

2.4 新建对话框窗口

运行studio.exe,在左侧树形控件的“apps-res”单击右键,弹出菜单中移到子菜单“aplt_leagor_hello”,选择“新建对话框”。弹出窗口中填入新建窗口的window_id。这id一旦填入,后面要改就比较麻烦了。以下假设新建id是test。

执行新建后会多出两个文件,存储窗口配置的<res>/gui/window/test.cfg,以及处理它的lua脚本<res>/lua/test.lua。和home.lua一样,test.lua实现了处理test窗口的表:aplt_leagor_hello__test。

2.5 编程、调试

  • 用studio修改窗口配置。
  • Visual Studio下改写*.lua,并调试。如何调试可参考“调试lua”。
  • Poedit修改翻译。
  • 需要的素材文件按规范放在<res>的各个目录,图像放在images、音效放在sounds,等等。

 

三、发布

3.1 生成*.rsp

运行studio.exe,在左侧树形控件的“apps-res”单击右键,弹出菜单中移到子菜单“aplt_leagor_hello”,选择“导出小程序包(*.rsp)”,成功后<res>上级目录会生成一个aplt_leagor_hello-x.x.x-2021xxxx.rsp。

3.2 上传到C洼

如何在C洼发布小程序参考“Rose小程序发布指南”。

通过审核后,小程序会进入小程序商店。如果小程序只是用于内测,不想进入审核,则不要点击“进入审核”。运行kdesktop,从“下载测试版本小程序”入口下载小程序,便可用于指定人群的内测了。

 

四、移除

运行studio.exe,在左侧树形控件的“apps-res”单击右键,弹出菜单中移到子菜单“aplt_leagor_heool”,选择“移除”。执行后会删除<res>/aplt_leagor_hello目录。至于<userdata>/kdesktop/aplt_leagor_hello__documents目录则需开发者手动删除。

 

全部评论: 0

    写评论: