LUA语言
- 0 简介
- 1 基本语法
- 说明
- 函数
- For循环
- While循环
- If语句
- 2 常用格式
- 数字类型
- 注释
- 打印输出
- 创建UI
- 3 常用函数
0 简介
LUA语言是软件的自带语言,支持直接在软件进行编程
- 对某个物体添加脚本后便生成如下格式代码
1.初始化函数,只在开始仿真时执行一次
function sysCall_init()
-- do some initialization here
end
2.执行函数,在仿真中循环执行
function sysCall_actuation()
-- put your actuation code here
end
3.传感器控制函数,--以后用到来补充一下,这个一般不用
function sysCall_sensing()
-- put your sensing code here
end
4.清除函数,停止运行前执行一次
function sysCall_cleanup()
-- do some clean-up here
simUI.destroy(ui) 一般用来清除窗口
end
1 基本语法
说明
- Lua的变量只要定义了并没有其他声明就是全局变量,比如你在一个函数中定义了,另一个函数也是共享的。
- 调用函数开头小写是lua语言调用,大写是其他语言接口
eg:
sim.getObjectAssociatedWithScript (Lua)
simGetObjectAssociatedWithScript (C/C++)
函数
- 函数格式
function function_name()
<函数体>
end
括号中可以放一些传入的参数,需要返回值的时候直接return就好,跟C差不多,返回多个值的时候用逗号隔开
For循环
- for循环格式
-- exp1为初值,exp2为终值,exp3为步长,可以省略,默认为1。
for var=exp1,exp2,exp3
do <执行体>
end
While循环
- while循环格式
-- condition为条件,比如x>1,
while (condition)
do <执行体>
end
If语句
- if语句格式1
if (condition)
then <执行体>
end
- if语句格式2
if (condition)
then <执行体>
else <执行体>
end
2 常用格式
数字类型
- number 类型
大多数都是用这个好像 - 数组
- 定义:num = {参数1,参数2…}
- 调用:num[1],num[2]即可 (注意索引从1开始,不是0)
注释
- Lua的注释使用的是两个减号–,这个可以注释一行代码,
- 批量注释使用的是–[[ 被注释内容 ]]-- 被包含的代码均会被注释
打印输出
- 显示某个变量或是某段话,可以用print函数,
print(参数1,参数2...)
想要输出多个内容时需要用逗号隔开
创建UI
- 有点像html语言
xml = '<ui title="'..sim.getObjectName(bubbleRobBase)..' speed" closeable="false" resizeable="false" activate="false">'
..[[
<hslider minimum="0" maximum="100" on-change="speedChange_callback" id="1"/>
<label text="" style="* {margin-left: 300px;}"/>
</ui>
]]
ui=simUI.create(xml)
3 常用函数
- sim.getObjectAssociatedWithScript()
- 输入参数: scriptHandle
- 输出参数: objectHandle(如果是 -1就是报错了)
- 函数功能: 连接脚本和项目
* eg:
* bubbleRobBase=sim.getObjectAssociatedWithScript(sim.handle_self)
- sim.getObjectHandle()
- 输入参数: objectName(“字符串”)
- 输出参数: objectHandle
- 函数功能: 连接脚本和项目
* eg:
* number objectHandle=sim.getObjectHandle(string objectName)
* leftMotor=sim.getObjectHandle("bubbleRob_leftMotor")
-- Handle of the left motor
每种语言的风格基本相似,掌握几种常用的用法即可。其他的可以在用到的时候直接查找嘛~~