SOM v3.3.3二次开发中LUA脚本的基本用法和环境搭建

前言

备注:大家可以看看“SOM v3.3.3 C++ DLL用户自定义技能实战”文章,DLL代码已经上传
前不久接触了这种新式的脚本语言LUA,和一些机器人二次开发的一些概念。很杂很乱,其实在开始学习这个杂七杂八的玩意儿之前,就已经暗自打算一定要写一写技术博客来记录自己的学习,然而时间不是很多,一直都没有写,甚至机器人的事情也被耽搁了下来。
网络上找不到类似这种ILOBOKE机器人开发的技术文章(技术太偏),很多问题就只能求助于社里经验丰富的前机器人足球队队员,或者靠自己看文档(说实话官方给的SOM二次开发手册真的不咋滴,没两下子就看完了,实操又各种奇怪问题),凭感觉,效率很低。
一方面,我希望记录自己学习的点点滴滴,写博客为自己日后作参考;另一方面,我也希望下一届的机器人足球队队员们的信息来源不再单一,能有我的一些博客作为参考。总的来说还是有益的。

SOM v3.3.3 二次开发环境配置

这里我只讲LUA的,不讲C++ dll那边的,稍后的实例也避开了C++,直接采用LUA控制机器人。
首先最基本的,你得拥有SOM v3.3.3这款软件,否则一切免谈
官方给的下载链接已经失效,需要的请加QQ 2257546277
我可以为你提供完整的SOM v3.3.3

解压完毕后,先不要急着打开软件,不然你会遇见各种问题
先把所有.exe以管理员身份运行(这在二次开发手册里面有,可以直接参照二次开发手册)
解压后,对根目录下的 SoccerPlanner3.exe应用程序右击属性,选 择兼容勾应用程序右击属性,以管理员身份运行此程序 ”,
在这里插入图片描述
不出意外的话,也有这些玩意儿
在这里插入图片描述
打开 Team_BLUE 或 Team_YELLOW 文件夹,如图 文件夹
在这里插入图片描述
然后把这两个后台相关程序都以管理员身份运行。
也有一种最简单的办法,直接在根目录下搜索.exe
然后你会搜出这些玩意儿:
在这里插入图片描述
全部设为管理员权限即可!
记住,这很重要!千万记住!否则会出现很多奇奇怪怪的例如崩溃、卡死、按不动的问题。有时候点击开始测试,弹出窗口后会卡死,然后让你到“赛事裁判”里面退出比赛,然而死都退不了,就是管理员权限的问题
软件路径最好全英文且无特殊字符,否则也容易出问题!
中文路径改英文的时候,原本赋予管理员权限的.exe管理员权限会消失!需要重新赋予!!!(我当时就是卡在这里!!!)

编写LUA脚本

这里使用的LUA语言,同真正意义上的LUA开发不同,大多数麻烦的事情已经交由官方的代码处理,我们只需要借助模板,使用一些简单的函数进行二次开发即可。
在选择了LUA脚本之后(测试模式下只能选择一种LUA脚本),机器人控制程序会以60fps的速度执行此脚本。我们接下来看看应该怎么写这样的脚本
下面先提供一份官方的LUA模板:
在这里插入图片描述
我们的所有开发,基本都在如下框架中进行
战术框架主机构

gPlayTable.CreatePlay{

}

状态框架可以理解为一个函数,需要被调用,才可以起到作用。这个一会儿再说。
firstState是对初始状态框架的规定,因为一个LUA脚本被执行的时候,至少在这个程序里是不存在一个明确的入口函数的(入口函数就相当于C++中的main函数),所以使用firstState就等于是规定了入口函数是哪一个,
例如这里

firstState="doRef"

这样,LUA脚本被执行的时候就会先进入doRef函数。
进入函数之后,我们要做的是给机器人分配任务,一般比较常用的机器人球员的英文名有
Kicker 前锋
Receiver 后卫
Goalie 守门员

一方的机器人只会有一个Kicker这样的玩意儿,所以不必顾虑Kicker2这样的东西。

["getball"]={
    Kicker=task.GetBall("Kicker","Kicker"),
},

此时,我在getball函数中写入Kicker的任务——GetBall
注意大小写
这是官方给你的一个抓球函数
有关这一函数的用法,在二次开发手册中有描述,本人在此摘录一下:
在这里插入图片描述
执行者是runner_role,放这里就是Kicker。意思就是拿球的是Kicker
然后,拿球的时候要朝向receive,如果你把它设为middle,那它拿到球的时候正面就会一直朝着middle机器人,就像这样:
在这里插入图片描述
二号是kicker,三号是友方middle,二号拿球的时候是朝向三号的。(甚至在往球的方向走的时候,也是一路朝着三号)
有时候这么做可以方便传球
当然,你也可以选择谁都不朝,那就也填Kicker,朝自己,那就是谁都不朝
测试执行后一切正常。
最后,就是name的用法
name后面的值必须等于你的脚本文件的名字
不能加后缀,例如
getball.lua的name=“getball”
如果name拼写有误,就会出现:
加载失败:战术名应与文件名相同的字样
如果直接不写name,就会脚本检测失败(过不了编译)
并提示table index is nil
这些信息都会在这个界面呈现:
在这里插入图片描述
下面提供完整的正确代码

gPlayTable.CreatePlay{

firstState="getball",

["getball"]={
    Kicker=task.GetBall("Kicker","Kicker"),
},


name="getball"
}

这只是最基本,最简单的写法,正常情况下,一场正规比赛的LUA脚本长度可达百行,动用函数数十个,这就需要我们的链接函数的利器:switch状态跳转函数
这是我们下一次的话题。
记住,官方给你的函数使用错误,它也是会归结为编译错误的!

导入LUA脚本测试

说了这么多,还没教你测试来着……
调试代码,绝对是作为coder的精髓,也是必须要掌握的东西
而这个测试不同于其他代码,它的测试结果全部都在这个绿绿的足球草坪上,我的意思是,你几乎没有办法对LUA做debugger调试。
所以,我们只能使用上帝赋予我们最高级的debugger——眼睛
通常这种debugger可以从你妈妈的肚子里解压出来,你系统自带的,没有的话从别人身上移植,收费的,很贵,附近的医院可能有,重点是你还找不到盗版或者绿色版的。
咳咳,进入正题:
首先,你把写好的LUA脚本放在指定的位置,
这里以黄队为例,
一般在这个目录下
\SOM v3.3.3\Team_YELLOW\lua_scripts\play
然后你会看见三个文件夹,
Nor,Ref和Test
测试脚本直接往Test里面塞
你在测试的时候会提示你是否转正,如果你觉得你的脚本跟你想的没有很大出入,就可以转正了
到时候会出现在Ref目录下。

然后点开程序
SoccerPlanner3.exe
在这里插入图片描述
选择测试模式
在这里插入图片描述
选择模拟训练
在这里插入图片描述
选择黄队(看你测试的是哪个队)
在这里插入图片描述
要几个队员就勾选几个,但是一定要出现LUA脚本里面分配到任务的队员
例如之前的脚本里面出现了Kicker,这里就一定要选择前锋
在这里插入图片描述
点击浏览,直接找到你的脚本位置,然后点击下面的导入。这个脚本就会出现在脚本选择区了,你也可以直接在脚本选择区选择你已经做过的脚本。
在这里插入图片描述
只有这样,你才可以点击“开始测试”按钮!!!
然后你就会看见机器人和它的足球场了
在这里插入图片描述
把鼠标放到足球场里戳一戳,就可以放置足球,机器人默认对准足球并保持一段距离
在这里插入图片描述
上方的蓝色机器人是添加敌方,你可以通过鼠标拖动自由放置敌人的位置。
点击执行,你就可以看见脚本的测试结果,点击停止,他就停止
一切无误后,转为正式脚本。当然,你也可以不选择转为正式脚本。
到此为止,你已经掌握了SOM v3.3.3二次开发中LUA脚本的基本用法和环境搭建

### iloboke 足球机器人的技术参数及相关信息 关于 **iloboke 足球机器人** 的具体技术参数,目前公开的信息较为有限。然而,通过分析类似产品技术背景[^1],可以推测其可能具备的技术特性如下: #### 1. 控制算法与传感器配置 该类足球机器人通常采用基于开源框架(如 OpenSSL 或 ROS)开发的控制算法,能够实现精准定位路径规划功能。例如,在代码逻辑中可能会涉及距离检测条件判断: ```lua if bufcnt(player.toTargetDist(&#39;Kicker&#39;)<10,10) then -- 执行踢球动作或其他操作 end ``` 上述伪代码片段展示了如何利用目标距离来触发特定行为。 - **传感器类型**: 可能配备超声波、红外线或者激光测距仪用于环境感知。 - **处理器平台**: ARM Cortex-M 系列微控制器或更高端嵌入式系统作为核心计算单元。 #### 2. 动力系统设计 动力部分一般由直流电机驱动轮子完成移动任务,并辅以编码器反馈位置数据给主控板做闭环调节处理;某些高级版本还支持四驱模式增强越野能力。 #### 3. 编程接口与扩展性 对于开发者友好型的产品而言,提供易于使用的API文档以及示例项目是非常重要的卖点之一 。用户可以通过图形化界面拖拽组件快速搭建原型应用 ,也可以深入学习底层源码定制专属功能模块 。 --- 由于缺乏官方渠道发布的详尽资料 ,建议访问以下潜在资源获取更多详情 : - 搜索引擎查询品牌关键词组合 “iloboke soccer robot” - 访问教育科研机构实验室主页查看是否有合作案例介绍 - 加入爱好者论坛参与讨论交流经验心得 如果确实存在这样一个品牌的实体商品出售情况的话 ,那么它的价格区间应该会根据不同的配置选项而有所差异. --- ### 官方网站与评测信息 截至目前为止,未能找到确切指向名为 "iloboke" 的专用足球机器人官方网站链接记录 [^1]. 如果这是某个新兴初创企业推出的新品或者是区域性较强的小众品牌,则极有可能仅限于本地市场流通销售而不被广泛认知传播开来。因此推荐尝试联系相关展会活动主办方询问参展商名录里是否存在匹配项。 至于第三方测试评价方面同样稀缺有效素材可供分享。不过一般来说,选购此类高科技含量设备之前最好参考以下几个维度来进行综合考量评估: - 性价比高低对比分析; - 售后服务保障机制完善程度 ; - 社区活跃度大小反映长期维护更新可能性 ; ---
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值