opentcs开源项目如何新增一个驱动commAdapter?

news/2024/5/20 4:12:35 标签: java, gradle

文章目录

  • opentcs开源项目如何新增一个驱动commAdapter?
    • opentcs是什么?
    • opentcs基本模块介绍
    • 基于LoopbackAdapter创建一个TestAdapter
      • 1、 复制openTCS-CommAdapter-Loopback 模块命名为openTCS-CommAdapter-Koobot
      • 2、修改包名和目录下Loopback前缀的文件名
        • 修改包名为testvehicle
        • 修改目录下所有文件名及文件内容Loopback改为Test
      • 3、Kernel模块添加新驱动的依赖
      • 4、测试
        • 修复名称问题
    • 结语

opentcs开源项目如何新增一个驱动commAdapter?

opentcs是什么?

openTCS 是一款独立于供应商且可灵活使用的控制系统软件,适用于自动导引车系统 (AGVS) 和其他非连续输送机,如电动单轨输送机和移动装配平台。它最初是在一个公共资助的项目中开发的。现在,代码库正在由德国多特蒙德的弗劳恩霍夫物料流和物流研究所(IML)维护和开发。
https://www.opentcs.org/en/index.html

opentcs基本模块介绍

opentcs主要由Kernel、KernelControlCenter和PlantOverview三部分构成,CommAdapter是AGV与opentcs通信的重要组件,一般将其称为驱动。源码中实现了一个默认回环驱动LoopbackAdapter。

基于LoopbackAdapter创建一个TestAdapter

本文基于4.17.release版本

1、 复制openTCS-CommAdapter-Loopback 模块命名为openTCS-CommAdapter-Koobot

在这里插入图片描述
可以发现新复制的Adapter-Test模块还没有被gradle识别为项目里的一个Module

修改根目录下settings.gradle,在文件最后一行添加新增模块:
include ‘openTCS-CommAdapter-Test’
在这里插入图片描述
reload项目,Module成功被识别
在这里插入图片描述

2、修改包名和目录下Loopback前缀的文件名

修改包名为testvehicle

TestAdapter包名不可与LoopbackAdapter包名冲突,否则Kernel可能会找不到TestAdapter
在这里插入图片描述
refactor包名时,需要注意仅修改当前模块的包名
在这里插入图片描述
在这里插入图片描述

修改目录下所有文件名及文件内容Loopback改为Test

主要修改guiceConfig和main目录下的.java文件和.properties文件
LoopbackAdapterConstants可保留其原名

3、Kernel模块添加新驱动的依赖

在build.gradle中添加

compile project(':openTCS-CommAdapter-Test')

在这里插入图片描述

4、测试

按顺序启动kernel、kernelControlCenter和PlantOverview
在这里插入图片描述
可以发现此时虽然有了两个驱动,但是名称却相同

修复名称问题

读取驱动配置文件的名称时,它的包名和原loopback是相同的,所以读取错了,修改此包名和I18nTestCommAdapter.java中的路径名即可
在这里插入图片描述
成功得到新创建的驱动Test Adapter
在这里插入图片描述

结语

至此,你应该已经可以得到自己创建的新驱动,如果没能成功在界面显示你创建的驱动,那么大概率是有文件名没有修改好,建议重新建一个干净的分支,细心操作

http://www.niftyadmin.cn/n/156360.html

相关文章

Shifu高级功能:命令行中间件之HTTP 到 PowerShell 的中间件

简介 为了让你的设备接入Shifu。我们用Go编写了一个简单的HTTP到 PowerShell 的中间件,供开发者使用。 设计 这个HTTP到PowerShell的中间件是这样设计的: 中间件在主机上暴露了一个HTTP接口该HTTP接口用于转发来自外部的请求到 Windows 主机中间件将…

Apache开启不同端口发布多个网站

之前写过一篇Apache环境,单个端口运行多个网站的文章,使用不同域名映射到不同目录上。 《Apache中多个域名网站配置》 这次记录一下,Apache环境,如何开启多个端口服务,不同端口映射到不同的目录的文章,这次…

小程序:web-view使用

官方文档 注意事项 个人类型的小程序暂不支持使用网页内 iframe 的域名也需要配置到域名白名单。每个页面只能有一个 web-view,web-view 会自动铺满整个页面,并覆盖其他组件。web-view 网页与小程序之间不支持除 JSSDK 提供的接口之外的通信。在 iOS 中…

JVM学习笔记 02 - JDK的类加载

类的加载顺序 如图所示。大多数情况下,类会按照图中给出的顺序进行加载。下面我们就来分别介绍下这个过程。 加载 加载的主要作用是将外部的 .class 文件,加载到 Java 的方法区内,你可以回顾一下我们在上一课时讲的内存区域图。加载阶段主要…

TensorFlow基本计算单元与基本操作

在学习深度学习等知识之前,首先得了解著名的框架TensorFlow里面的一些基础知识,下面首先看一下这个框架的一些基本用法。 import tensorflow as tf a 3 # Python中普通的变量创建方式# Create a variable. w tf.Variable([[ 0.5 , 1.0 ]]) # tens…

自动标注工具 Autolabelimg

原理简介~~ 对于数据量较大的数据集,先对其中一部分图片打标签,Autolabelimg利用已标注好的图片进行训练,并利用训练得到的权重对其余数据进行自动标注,然后保存为xml文件。 一、下载yolov5v6.1 https://github.com/ultralytic…

HashMap扩容为什么每次都是之前的2倍

一. 背景介绍HashMap的底层是通过数组链表红黑树的数据结构来存放数据的。我们知道,当新添加元素的key值出现了hash碰撞,就会在同一个bucket中形成链表或者红黑树。当键值对的数量超过阈值时就会扩容,将以前处于同一个链表或者红黑树上的元素…

MATLAB矩阵

创建一个X矩阵,变量从x1、x2...xn%取矩阵A的第一列作为变量的个数for i1:size(A,1)X{i,1} "x"num2str(i,1); %列向量 endX string(X); %转换为字符串数组提取矩阵中指定的元素|矩阵的运算一、提取矩阵中指定的元素1)取指定行和列的一个元素A…