pos機輸入x

 新聞資訊3  |   2023-09-04 13:47  |  投稿人:pos機之家

網上有很多關于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的知識,希望能夠幫助到大家!

轉發請帶上網址:http://www.tonybus.com/newstwo/108081.html

你可能會喜歡:

版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 babsan@163.com 舉報,一經查實,本站將立刻刪除。