CoppeliaSim实例分析系列-ABB IRB140(二)
在CoppeliaSim实例分析系列-ABB IRB140(一)中,我们简单介绍了ABB IRB140实例的仿真环境设置,并添加了新的Non-thread Child Script来控制机器人。
现在我们来深入讲解如何使用Non-thread Child Script来控制机器人。原版环境中的脚本编程顺序过于混乱,不方便学习,请大家下载我修改过的IRB140优化脚本。
在开始之前,大家需要搞了解如下内容:
-
简单掌握Lua语言的语法,请参考博客Lua语法快速入门。
-
Non-thread Child Script和thread Child Script的区别,请参考博客(整理中,敬请期待)。
控制脚本整体结构与分块
本实例中的脚本总共有四个大函数,分别为:
function sysCall_init()
--do something
end
function sysCall_actuation()
--do something
end
function sysCall_sensing()
-- put your sensing code here
end
function sysCall_cleanup()
-- do some clean-up here
end
sysCall_init()
函数是开启仿真时的初始化函数,只运行一次,一般用来初始化变量、UI和Object的句柄等。sysCall_actuation()
函数是在仿真过程中循环执行的函数,在每个仿真步都会运行一次,是主要的控制机器人的函数。sysCall_sensing()
函数是在仿真过程中执行传感器行为的函数,在每个仿真步都会运行一次。sysCall_cleanup()
函数是在仿真结束后的清理函数。
此实例只需要编写前两个函数,为了提高代码的阅读性,我将官方提供的代码进行了整理,整理出下面几个代码块,后面我们按照代码块分别讲解。
function sysCall_init()
----1. 获取场景中的Object的句柄和一些常量
----2. 初始化UI
----3. 初始化一些控制变量
----4. 初始化一些用于actuation的变量
end
function sysCall_actuation()
----1. 一个特殊情况的处理
----2