網(wǎng)上有很多關于pos機輸入x,Lua語言在機器人領域的應用入門的知識,也有很多人為大家解答關于pos機輸入x的問題,今天pos機之家(m.afbey.com)為大家整理了關于這方面的知識,讓我們一起來看下吧!
本文目錄一覽:
1、pos機輸入x
pos機輸入x
Lua 是一種強大、高效、輕量、可嵌入的類C腳本語言,支持過程式編程、面向?qū)ο笫骄幊獭⒑瘮?shù)式編程和數(shù)據(jù)描述。
print("Hello" .. " World!")
Lua的讀音盧阿(LOO-ah),在葡萄牙語里是月亮的意思
Lua的官方網(wǎng)站:https://www.lua.org/
Lua的入門教程:
https://www.lua.org/pil/contents.htmlhttps://www.w3cschool.cn/lua/誰在使用Lua
Adobe Photoshop游戲產(chǎn)業(yè)首選的腳本語言:魔獸世界、大話西游絕大多數(shù)手游都用Lua寫游戲邏輯,方便做安裝后的熱更新Lua的特點
快速,其他語言談論起執(zhí)行效率時,通常會說“和Lua一樣快”可移植性(標準C實現(xiàn)),可以運行在Windows,Linux,移動設備和其他嵌入式設備(甚至樂高的MindStorms)可嵌入性,可以作為一種動態(tài)特性嵌入到其他語言中,如C、C++、Java、C#、SmallTalk,甚至其他腳本語言如Perl,Ruby。簡單的強大性,Lua不是原生的面向?qū)ο笳Z言,但可以通過元編程支持面向?qū)ο?。短小精湛,壓縮后大小為350k,一首編碼率為128kbps的mp3大小接近4M。Getting Started
運行環(huán)境:二進制安裝包“Lua for Windows”
編輯器:推薦Sublime(內(nèi)建對lua的支持,直接可以build運行)
交互式編程
> Lua -i> Print("Hello World!")
腳本式編程,新建一個后綴名為.lua的文件,如hello.lua,內(nèi)容如下
print("Hello World!")
通過在console中輸入lua hello.lua來運行該lua程序(確保console當前目錄與lua文件在同一個目錄下)
變量
全局變量
name = "Elon Musk"
局部變量
local name = "Musk"-- 局部變量只在作用域(程序塊)中起作用,典型的程序塊,如下-- 1. 函數(shù)function sum(a, b) -- 函數(shù)開始即塊開始 local s = a + b return s -- 函數(shù)結(jié)束即塊結(jié)束end-- 2. 代碼塊if spring_is_comming then -- 塊開始 local rocket_is_ready = true if rocket_is_ready then --launch_it() end -- 塊結(jié)束end-- 3. 文件-- 文件開始即塊開始local filename = "hello.lua"-- 文件結(jié)束即塊結(jié)束
數(shù)據(jù)類型
-- nil, 未初始化的變量的默認值為nil,即為空print(bezos)-- numberlocal price = 1.2print(type(price))-- boolean, true or falselocal today_is_weekend = falseprint(type(today_is_weekend))-- stringbezos = "Boss of Blue Origin"print(type(bezos))-- tablevalues = {1, 4, 9, 16}for i=1,#values do print(values[i])endpos = {x=1, y=2, z=3}print(type(pos))print(pos.x, pos.y, pos.z)-- functionfunction do_something() step_1() step_2() step_3() ...end-- userdata -- 自定義數(shù)據(jù)類型,如系統(tǒng)中的JointTarget、RobTarget、ToolData等
賦值
-- SpaceX 2022年發(fā)射任務launch_times = 36target_of_IM_1 = "MOON"launch_tasks = {"IM-1", "TRANSPORTER-3", "獵鷹重型USSF-44"}im_1 = { name = "IM-1", date = "2022-1-30", load = "Moon Detector from Intuitive Machines"}
循環(huán)
local sum = 0-- forfor i=1,10,1 do sum = sum + iendprint(sum)-- whilesum = 0local i = 0while i <= 10 do sum = sum + i i = i + 1endprint(sum)-- while breaksum = 0i = 0while true do if i > 10 then break end sum = sum + i i = i + 1end
條件判斷
if is_sunny then -- launchelse -- cancel the launch taskendif wind_force == 7 then -- do somethingelseif wind_force == 8 then -- do somethingelseif wind_force == 9 then -- do somethingelse -- cancelend
函數(shù)
函數(shù)是完成特定任務或功能的語句組合??梢酝ㄟ^名字加小括號的方式來調(diào)用指定函數(shù)。
function launch(rocket) local ret = test() if not ret then return false end add_fuel() load_detector() return ignite()end
運算符
操作符
描述
+
加法
-
減法
*
乘法
/
除法
%
取余
^
冪運算
-
負號
庫函數(shù)
Lua提供很多庫函數(shù),如string、os,、math、table
string
print(string.upper("Hello"))print(string.lower("Hello"))print(string.reverse("Hello"))print(string.len("Hello"))-- formatprint(string.format("The result is: %d\", 3))-- find-- 使用正則表達式進行數(shù)據(jù)提取 {{x,y,z},{q1,q2,q3,q4}}local str = "{{1.1,1.2,1.3},{1,0,0,0}}"local _, _, x, y, z, q1, q2, q3, q4 = string.find(str, "{{([+-.%d]+),([+-.%d]+),([+-.%d]+)},{([+-.%d]+),([+-.%d]+),([+-.%d]+),([+-.%d]+)}}")if x == nil then returnendprint(x, y, z, q1, q2, q3, q4)
其他庫函數(shù)請在需要使用時自行搜索
機器人編程
主要關注以下三個方面
程序架構(gòu)數(shù)據(jù)類型指令程序架構(gòu)
程序類型
描述
前臺程序
即主程序,當前在程序編輯界面打開的程序。不考慮工位預約功能
后臺程序
系統(tǒng)啟動后在后臺運行,不依賴于前臺程序,為了安全考慮后臺程序不支持運動指令。
舉例說明
有一項目使用點激光(測距)來進行邊緣檢測,目前系統(tǒng)提供的SearchL函數(shù)只接收DI信號輸入,如何把距離轉(zhuǎn)化為DI信號?坐標系
數(shù)據(jù)類型
數(shù)據(jù)類型
描述
JointTarget
關節(jié)位置數(shù)據(jù),記錄機器人各個關節(jié)的角度信息,單位為角度
RobTarget
空間位置,記錄機器人空間目標位置信息
ToolData
工具數(shù)據(jù),用于描述工具特征的數(shù)據(jù),包括mounting, 位置
WobjData
工件數(shù)據(jù),用于描述工件坐標系,包括用戶坐標系和物體坐標系
LoadData
負載數(shù)據(jù),用于描述附加到機械臂法蘭的負載信息,如質(zhì)量,質(zhì)心位置,慣量
SpeedData
速度數(shù)據(jù),包括直線速度,旋轉(zhuǎn)速度,外軸直線速度和外軸旋轉(zhuǎn)速度
ZoneData
區(qū)域數(shù)據(jù),用于指定轉(zhuǎn)彎半徑
指令
MoveL([motGroup/mecName], toPoint, speed, zone, tool, wobj, [load])
其中括號包括的參數(shù)是可以省略不寫的,如:
MoveL(toPoint, speed, zone, tool, wobj) 是沒有毛病的。
現(xiàn)階段的機器人程序都是死的,不會進行聯(lián)想。使用指令前,先看清函數(shù)定義,它需要什么類型的參數(shù),就給它什么類型的參數(shù),不要自己想當然。
函數(shù)執(zhí)行與機器人運動執(zhí)行
腳本程序在執(zhí)行時,是一條語句接著一條語句執(zhí)行;機器人運動時,也是一個運動接著一個運動執(zhí)行,在一個運動還沒執(zhí)行完之前不會去執(zhí)行下一個運動。像MoveL這種運動指令存在一種情況,就是函數(shù)執(zhí)行完了,運動還沒有執(zhí)行完。這就會導致MoveL之后的SetDO輸出時間提前了。如果要等運動執(zhí)行完再輸出DO,需要在SetDO前加入
while GetDO("SYS_SERVO_BUSY") ~= 0 do check_stop() Sleep(10)end
以上
以上就是關于pos機輸入x,Lua語言在機器人領域的應用入門的知識,后面我們會繼續(xù)為大家整理關于pos機輸入x的知識,希望能夠幫助到大家!
![](/style/images/zhouzong.jpg)