原创 OpenTCS打造移動機器人交通管制系統(九)

     上一篇文章探討了如何拓展Kernel。本文來講下如何爲OpenTCS增加WebAPI。由於OpenTCS有MES系統或別的第三方系統對接時通常都是使用WebAPI進行交互的。OpenTCS系統的WebAPI遵循RestAPI的設

原创 Halcon函數總結(六)

dump_window_image( :Image :WindowHandle : )  //將窗口上顯示的內容寫到一張圖片變量中 dyn_threshold(OrigImage,ThresholdImage :RegionDynT

原创 OpenTCS打造移動機器人交通管制系統(五)

本文來談一談OpenTCS的調度問題。 OpenTCS默認的算法是基於"前饋鎖路"的方式進行交通管制的。 所謂的“前饋鎖路”,意思是當某輛車需要運動時,在運動之前會將MovementCommand轉換成一種交通管制資源向系統中註冊。只有當

原创 OpenTCS打造移動機器人交通管制系統(四)

先分析下OpenTCS的一些策略方面的東西,這是OpenTCS的基礎。 首先需要先明確下OpenTCS內核中的三個概念: 路由(Route) : 決定了車輛通過什麼樣的方式和算法來獲得一段路徑,未來車輛將沿着此路徑運行。 派遣(Dispa

原创 OpenTCS打造移動機器人交通管制系統(二)

OpenTCS從使用上來說主要分爲三個模塊(基於4.17版本的系統)。分爲: openTCS-Kernel:交通管制的內核系統,主要算法均集中在此模塊。 openTCS-KernelControlCenter:內核配置的桌面圖形化窗口系統

原创 OpenTCS打造移動機器人交通管制系統(八)

       上一篇文章記錄了下如何在OpenTCS框架下拓展數據庫(點此查看上一篇),本篇來繼續深入的探討下如何拓展Kernel。OpenTCS框架主要的作用是提供一個交通管制的框架,但是通常來說,一個完整的調度系統(這裏指的是廣義的調

原创 OpenTCS打造移動機器人交通管制系統(七)

在一個實際的項目中(非實驗室),數據是至關重要的。本篇講下OpenTCS的數據存儲問題, OpenTCS的關鍵數據主要是Vehicle數據和TransportOrder的數據。 然而這些數據OpenTCS沒有做專門的持久化處理,也就是說只

原创 OpenTCS打造移動機器人交通管制系統(六)

       上一篇談到了OpenTCS的調度策略問題。並提出了關於自帶算法的"死鎖"的問題。 當時提出了下面兩種改進的方法: 1、錯開訂單的下發。 2、改進調度資源分配算法,將雙向路徑考慮到資源分配的過程當中。          方

原创 OpenTCS打造移動機器人交通管制系統(三)

本章主要介紹下如何開發一個新的VehicleAdapter模塊(車輛驅動適配對象)。 OpenTCS是一個開放的系統,從內核到模塊組件全部是掛載式設計,這得益於Java語言的反射機制(JAVA從語言級就支持反射)。 在介紹驅動開發之前有必

原创 OpenTCS打造移動機器人交通管制系統(一)

OpenTCS是一個存在已經很久的開源的交通管制系統,之前一直沒有認真研究,最近由於項目需要,着重研究了下此係統,發現內核設計的的確不錯。本文記錄本人在使用OpenTCS二次開發過程中的一些技術方面的東西,供有需要的工程師參考。 首先要使

原创 C#調用CMD對話框並執行命令

直接上代碼(注意引用using System.Diagnostics;) private void ExecuteCMD(string cmd) { Process process =

原创 Halcon函數總結(五)

close_edges(Edges,EdgeImage :RegionResult :MinAmplitude : ) //關閉邊緣的缺陷 close_edges_length(Edges,Gradient :ClosedEdges

原创 Halcon函數總結(七)

fast_threshold(Image : Region :MinGray,MaxGray,MinSize : )//快速閾值 select_shape_std(Regions : SelectedRegions :Shape,P

原创 Halcon函數總結(一)

Halcon函數總結: read_image( :Image :FileName : )  //讀入圖像 crop_part(Image : ImagePart :Row,Column,Width,Height : )  //剪切

原创 Halcon函數總結(四)

Halcon函數總結: create_class_box( : : :ClassifHandle)  //創建一個分類器 learn_ndim_box(Foreground,Background,MultiChannelImage :