CS機(jī)器人安全位置查找功能
1. 簡介
- CS 任務(wù)啟動時,如果包含移動命令,會先彈出手動移動到安全位置的頁面,由用戶手動操作移動到安全位置,然后開始任務(wù)運(yùn)行,保證程序啟動時的安全性。目前查找程序啟動位置的邏輯還不夠完善,比如不進(jìn)行調(diào)用的子程序的啟動位置的查找,比如針對插件節(jié)點(diǎn)查找邏輯存在一定問題。
針對上述需求,優(yōu)化了任務(wù)啟動位置查找邏輯,并規(guī)范了完整的查找方案,用戶也可以根據(jù)方案自行推測任務(wù)的啟動位置。
機(jī)器人版本:2.12.0以上
2.操作流程
2.1從首行任務(wù)開始運(yùn)行的查找規(guī)則
1. 目前可以作為起始安全位置的節(jié)點(diǎn)包括這幾種,固定位置路點(diǎn)、變量路點(diǎn)、相對路點(diǎn)、原點(diǎn)節(jié)點(diǎn)。目前這幾種節(jié)點(diǎn)的安全位置觸發(fā)邏輯有些不同,具體如下。
● 固定位置路點(diǎn)與原點(diǎn)任務(wù)節(jié)點(diǎn):程序運(yùn)行時如果機(jī)器人不在該路點(diǎn)或原點(diǎn)位置,則會彈出手動運(yùn)行到位置的頁面,讓用戶手動控制機(jī)器人,移動到起始位置。如圖-1所示

圖-1
● 變量路點(diǎn)、相對路點(diǎn):由于此兩種位置的路點(diǎn)沒有固定的位置信息,所以此類型路點(diǎn)作為起始位置時,機(jī)器人會直接從當(dāng)前位置開始運(yùn)行任務(wù),不會彈出手動運(yùn)行到位置的頁面,該邏輯可以實(shí)現(xiàn)可變起始安全位置的邏輯。(要注意的是使用變量路點(diǎn)做為起始位置時,要先在初始化變量里對該變量進(jìn)行賦值,如圖-2紅框所示,如果不進(jìn)行賦值就會出現(xiàn)報(bào)錯)

圖-2
2. 任務(wù)起始安全位置查找的基礎(chǔ)邏輯是深度優(yōu)先原則,也就是從第一個節(jié)點(diǎn)開始,向其內(nèi)部逐層遍歷子節(jié)點(diǎn),直到找到可以作為起始位置的節(jié)點(diǎn),如圖-3的任務(wù),會找到路點(diǎn)_1作為起始位置,遍歷過程中,并不會考慮該節(jié)點(diǎn)是否真實(shí)的可以運(yùn)行到(比如If False真實(shí)情況下,并不會運(yùn)行,但此時也會查找該分支內(nèi)部的節(jié)點(diǎn)作為安全起始位置),而是僅采用深度優(yōu)先原則遍歷。

圖-3
3. 如果任務(wù)存在開始前序列,則不論是從頭開始運(yùn)行任務(wù)還是使用任務(wù)的任意行運(yùn)行功能從任務(wù)中間行運(yùn)行任務(wù),都會優(yōu)先從開始前序列中正向查找起始的安全位置,比如圖-4所示的任務(wù),不論任務(wù)是否從頭運(yùn)行,都會找到路點(diǎn)_4作為起點(diǎn)。

圖-4
4. 如果程序流程中,存在調(diào)用子任務(wù)節(jié)點(diǎn),則會進(jìn)入被調(diào)用的子任務(wù)內(nèi)部按照相應(yīng)規(guī)則,查找起始安全位置點(diǎn)位,如圖-5所示程序,如果任務(wù)從第一行開始運(yùn)行,則會查找到路點(diǎn)_6作為程序起始位置。

圖-5
5. If節(jié)點(diǎn)如果存在Else或者Else If分支,則會將它們作為一個整體考慮,其查找順序?yàn)橄炔檎襂f節(jié)點(diǎn)內(nèi)的起始位置,如果該節(jié)點(diǎn)不存在起始位置,則按順序依次查找Else或者Else If分支內(nèi)的起始位置。如圖-6所示任務(wù),則會查找到路點(diǎn)_1作為程序起始位置;圖-7所示任務(wù)就會查找到路點(diǎn)_8作為程序起始位置。

圖-6

圖-7
2.2從任務(wù)中間行開始運(yùn)行查找規(guī)則
1. 如果任務(wù)存在開始前序列,由于開始前序列為順序執(zhí)行,所以其查找規(guī)則與從首行開始運(yùn)行完全相同,不會從逆向查找,并且不論從任務(wù)的哪行開始運(yùn)行,都會優(yōu)先正向查找開始前序列的啟動位置。如圖-8所示任務(wù),即使我的起始位置為路點(diǎn)_2,也會已開始前序列中的路點(diǎn)_4作為起始位置。

圖-8
2. If節(jié)點(diǎn)如果存在Else或者Else If分支,如果開始運(yùn)行的行是分支內(nèi)部的節(jié)點(diǎn),則僅在該分支內(nèi)部查找起始安全位置,該分支內(nèi)部如果不存在起始安全位置,則向上查找其兄弟節(jié)點(diǎn)。如圖-9所示任務(wù),如果從第17行開始運(yùn)行,則會找到路點(diǎn)_8作為起始位置。下方圖-10所示任務(wù)則會找到路點(diǎn)_9作為起始位置。

圖-9

圖-10
3. 如果起始行不可以作為起始安全位置節(jié)點(diǎn),則會查找該節(jié)點(diǎn)上方的節(jié)點(diǎn),如果存在可以作為起始位置的節(jié)點(diǎn),則選做起始位置節(jié)點(diǎn),如果不存在起始位置節(jié)點(diǎn),則會進(jìn)一步正向查找該節(jié)點(diǎn)內(nèi)部是否存在起始位置節(jié)點(diǎn),如果存在,則作為起始位置。如下方圖-11所示任務(wù),如果選擇第4行文件夾為開始節(jié)點(diǎn),則會找到路點(diǎn)_3作為起始位置。如果文件夾上方如果沒有起始路點(diǎn),則會向下找到起始點(diǎn),如圖-12所示則會找到路點(diǎn)_1作為起始位置。

圖-11

圖-12
4. 如果當(dāng)前選中的任務(wù)節(jié)點(diǎn)上方無可以運(yùn)行到的節(jié)點(diǎn)并且內(nèi)部也沒有可以運(yùn)行到的點(diǎn),則會直接開始運(yùn)行,不再繼續(xù)向后考慮支持運(yùn)行到的路點(diǎn)。所以下方圖-13所示程序會支持開始運(yùn)行,不會已路點(diǎn)_4作為起始位置。

圖-13
5. 如果起始行的上方存在子任務(wù)節(jié)點(diǎn),則會找到該子任務(wù)節(jié)點(diǎn)的終止位置作為起始位置。如下方圖-14所示任務(wù),如果以第19行作為起始行,則會找到路點(diǎn)_7作為起始位置。

圖-14
3. 常見問題解答
1.如果工藝場景有明確的要求起始安全位置要求,最好是增加明確的增加點(diǎn)位而不完全依賴于起始位置節(jié)點(diǎn)查找規(guī)則,這樣可以避免一些由于程序邏輯調(diào)整,導(dǎo)致查找到的起始位置變化的問題。