器件与子器件的定义

器件(Device)和子器件(subDevice)是供DCM使用的元素的抽象定义。

  • 器件是子器件的控制器。DCM借助器件来进行信息交流。器件主要是指机器人上的电路板,带有各自的微控制器。

    每个器件都以一个总线型和总线上的地址来定义,并拥有一个唯一的名称和类型。

  • 子器件主要是由一个器件控制的致动器或传感器。

    子器件以其器件、子器件类型和一个子器件编号来定义。使用编号是因为同一个器件常会控制多个同类型的子器件(例如一个控制3个发光二极管的电路板)。编号以1(而不是0)开始,逐一递增。

    每个子器件都有一个唯一的名称(有别于器件名称),用于与上层进行信息交流。

器件和子器件都有一套关键码,其中的每个关键码都有一个独有的值(经常是浮点型“float”,但也可以是整型“int”、布尔型“Boolean”或字符串“string”)。关键码可以是 “Value”(值,指主值)、“Min”(最小值)、“Max”(最大值)、“Gain”(增益)、“Offset”(偏移)或“Error”(错误)等。 器件和子器件有一些强制性关键码。根据子器件和器件类型,还会有 许多其它的关键码。

如果在子器件或器件名及特定的关键码名上添加一个前缀,就可以获得 直接存储在ALMemory里的子器件关键码的字符串名,或针对致动器变化而发送到DCM的字符串名。

举例:发光二极管

“Face/Led/Red/Right/0Deg/Actuator”:这是一个发光二极管的致动器名称,即右耳边位于0度的红色发光二极管。

该发光二极管有一个主值关键码,名为“Value”。这是一个从0.0(不亮)到1.0(全亮)的浮点。

如果给子器件添加一个前缀“Device/SubDeviceList/”,就得到一个完整的关键码名“Device/SubDeviceList/Face/Led/Red/Right/0Deg/Actuator/Value”

在ALMemory里使用这一名称,可以获得当前发光二极管的值。.

您也可以使用这个名称,向DCM发送一个针对该致动器的定时命令值 (在这种情况下,前缀不是强制性的)。

举例:关节传感器

"LShoulderPitch/Position/Sensor":是一个关节角度传感器的名称(Left shoulder pitch:左肩前后摆动)。

这一关节有一个名为“Value”的主值关键码。这是一个浮点,指的是以弧度为单位的角。

如果给子器件名添加前缀:“Device/SubDeviceList/”,就可获得完整的关键码名“Device/SubDeviceList/LShoulderPitch/Position/Sensor/Value”

在ALMemory里,您可以使用这个名称来获得当前关节位置的值。

这个关节传感器还有其它关键码,例如“SensorType”(“Device/SubDeviceList/LShoulderPitch/Position/Sensor/SensorType”)。 这是一个配置关键码,说明该关节的传感器类型。电机电动板(motorboard)会使用这个关键码,所以最好不要对其进行修改!

在以下的章节里,您将了解到器件和子器件的名称以及所有可以使用的关键码。

上层通过DCM进行信息交流时,通常使用子器件的名称(传感器/致动器), 而很少使用器件名称。但是,您可以通过器件获得诸如特定错误、ACK/NACK等有用的信息。

注释:

该图为虚拟图,未显示硬件总线。





Copyright © 2010 Aldebaran-Robotics - 版权所有