網上有很多關于pos機輸入x,Lua語言在機器人領域的應用入門的知識,也有很多人為大家解答關于pos機輸入x的問題,今天pos機之家(www.tonybus.com)為大家整理了關于這方面的知識,讓我們一起來看下吧!
本文目錄一覽:
1、pos機輸入x
pos機輸入x
Lua 是一種強大、高效、輕量、可嵌入的類C腳本語言,支持過程式編程、面向對象式編程、函數式編程和數據描述。
print("Hello" .. " World!")
Lua的讀音盧阿(LOO-ah),在葡萄牙語里是月亮的意思
Lua的官方網站:https://www.lua.org/
Lua的入門教程:
https://www.lua.org/pil/contents.htmlhttps://www.w3cschool.cn/lua/誰在使用Lua
Adobe Photoshop游戲產業首選的腳本語言:魔獸世界、大話西游絕大多數手游都用Lua寫游戲邏輯,方便做安裝后的熱更新Lua的特點
快速,其他語言談論起執行效率時,通常會說“和Lua一樣快”可移植性(標準C實現),可以運行在Windows,Linux,移動設備和其他嵌入式設備(甚至樂高的MindStorms)可嵌入性,可以作為一種動態特性嵌入到其他語言中,如C、C++、Java、C#、SmallTalk,甚至其他腳本語言如Perl,Ruby。簡單的強大性,Lua不是原生的面向對象語言,但可以通過元編程支持面向對象。短小精湛,壓縮后大小為350k,一首編碼率為128kbps的mp3大小接近4M。Getting Started
運行環境:二進制安裝包“Lua for Windows”
編輯器:推薦Sublime(內建對lua的支持,直接可以build運行)
交互式編程
> Lua -i> Print("Hello World!")
腳本式編程,新建一個后綴名為.lua的文件,如hello.lua,內容如下
print("Hello World!")
通過在console中輸入lua hello.lua來運行該lua程序(確保console當前目錄與lua文件在同一個目錄下)
變量
全局變量
name = "Elon Musk"
局部變量
local name = "Musk"-- 局部變量只在作用域(程序塊)中起作用,典型的程序塊,如下-- 1. 函數function sum(a, b) -- 函數開始即塊開始 local s = a + b return s -- 函數結束即塊結束end-- 2. 代碼塊if spring_is_comming then -- 塊開始 local rocket_is_ready = true if rocket_is_ready then --launch_it() end -- 塊結束end-- 3. 文件-- 文件開始即塊開始local filename = "hello.lua"-- 文件結束即塊結束
數據類型
-- 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 -- 自定義數據類型,如系統中的JointTarget、RobTarget、ToolData等
賦值
-- SpaceX 2022年發射任務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"}
循環
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
函數
函數是完成特定任務或功能的語句組合??梢酝ㄟ^名字加小括號的方式來調用指定函數。
function launch(rocket) local ret = test() if not ret then return false end add_fuel() load_detector() return ignite()end
運算符
操作符
描述
+
加法
-
減法
*
乘法
/
除法
%
取余
^
冪運算
-
負號
庫函數
Lua提供很多庫函數,如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-- 使用正則表達式進行數據提取 {{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)
其他庫函數請在需要使用時自行搜索
機器人編程
主要關注以下三個方面
程序架構數據類型指令程序架構
程序類型
描述
前臺程序
即主程序,當前在程序編輯界面打開的程序。不考慮工位預約功能
后臺程序
系統啟動后在后臺運行,不依賴于前臺程序,為了安全考慮后臺程序不支持運動指令。
舉例說明
有一項目使用點激光(測距)來進行邊緣檢測,目前系統提供的SearchL函數只接收DI信號輸入,如何把距離轉化為DI信號?坐標系
數據類型
數據類型
描述
JointTarget
關節位置數據,記錄機器人各個關節的角度信息,單位為角度
RobTarget
空間位置,記錄機器人空間目標位置信息
ToolData
工具數據,用于描述工具特征的數據,包括mounting, 位置
WobjData
工件數據,用于描述工件坐標系,包括用戶坐標系和物體坐標系
LoadData
負載數據,用于描述附加到機械臂法蘭的負載信息,如質量,質心位置,慣量
SpeedData
速度數據,包括直線速度,旋轉速度,外軸直線速度和外軸旋轉速度
ZoneData
區域數據,用于指定轉彎半徑
指令
MoveL([motGroup/mecName], toPoint, speed, zone, tool, wobj, [load])
其中括號包括的參數是可以省略不寫的,如:
MoveL(toPoint, speed, zone, tool, wobj) 是沒有毛病的。
現階段的機器人程序都是死的,不會進行聯想。使用指令前,先看清函數定義,它需要什么類型的參數,就給它什么類型的參數,不要自己想當然。
函數執行與機器人運動執行
腳本程序在執行時,是一條語句接著一條語句執行;機器人運動時,也是一個運動接著一個運動執行,在一個運動還沒執行完之前不會去執行下一個運動。像MoveL這種運動指令存在一種情況,就是函數執行完了,運動還沒有執行完。這就會導致MoveL之后的SetDO輸出時間提前了。如果要等運動執行完再輸出DO,需要在SetDO前加入
while GetDO("SYS_SERVO_BUSY") ~= 0 do check_stop() Sleep(10)end
以上
以上就是關于pos機輸入x,Lua語言在機器人領域的應用入門的知識,后面我們會繼續為大家整理關于pos機輸入x的知識,希望能夠幫助到大家!
