每个子器件类型的强制性和特殊ALMemory关键码

LED(致动器)

Value:

每个发光二极管都是一个简单的致动器,具有的浮点值从0.0(无光)到1.0(全光)。每个发光二极管只有一个颜色,但是在同一位置可以安装3个发光二极管(RGB),以获得一个全彩RGB发光二极管。但是,从DCM的角度,始终有3个发光二极管。

在机器人上,耳部的发光二极管有16个可能的蓝色值, 眼睛附近的有64个,而胸部和足部的则达255个。

主要的“Value”是指使用定时命令最后发送到发光二极管的值。 这个值首先被转换为适当的整数值(取决于分辨率), 发送至致动器,然后在ALMemory里重新转换为0.0-1.0值。

注意:

然而,即使把3个RGB发光二极管都设定为1.0,也未必会获得 完美的白色,因为其中1个或2个发光二极管会比其它的更亮一些。

LED值关键码列表

Device/SubDeviceList/ChestBoard/Led/Blue/Actuator/Value Device/SubDeviceList/ChestBoard/Led/Green/Actuator/Value Device/SubDeviceList/ChestBoard/Led/Red/Actuator/Value Device/SubDeviceList/Ears/Led/Left/0Deg/Actuator/Value Device/SubDeviceList/Ears/Led/Left/108Deg/Actuator/Value Device/SubDeviceList/Ears/Led/Left/144Deg/Actuator/Value Device/SubDeviceList/Ears/Led/Left/180Deg/Actuator/Value Device/SubDeviceList/Ears/Led/Left/216Deg/Actuator/Value Device/SubDeviceList/Ears/Led/Left/252Deg/Actuator/Value Device/SubDeviceList/Ears/Led/Left/288Deg/Actuator/Value Device/SubDeviceList/Ears/Led/Left/324Deg/Actuator/Value Device/SubDeviceList/Ears/Led/Left/36Deg/Actuator/Value Device/SubDeviceList/Ears/Led/Left/72Deg/Actuator/Value Device/SubDeviceList/Ears/Led/Right/0Deg/Actuator/Value Device/SubDeviceList/Ears/Led/Right/108Deg/Actuator/Value Device/SubDeviceList/Ears/Led/Right/144Deg/Actuator/Value Device/SubDeviceList/Ears/Led/Right/180Deg/Actuator/Value Device/SubDeviceList/Ears/Led/Right/216Deg/Actuator/Value Device/SubDeviceList/Ears/Led/Right/252Deg/Actuator/Value Device/SubDeviceList/Ears/Led/Right/288Deg/Actuator/Value Device/SubDeviceList/Ears/Led/Right/324Deg/Actuator/Value Device/SubDeviceList/Ears/Led/Right/36Deg/Actuator/Value Device/SubDeviceList/Ears/Led/Right/72Deg/Actuator/Value Device/SubDeviceList/Face/Led/Blue/Left/0Deg/Actuator/Value Device/SubDeviceList/Face/Led/Blue/Left/135Deg/Actuator/Value Device/SubDeviceList/Face/Led/Blue/Left/180Deg/Actuator/Value Device/SubDeviceList/Face/Led/Blue/Left/225Deg/Actuator/Value Device/SubDeviceList/Face/Led/Blue/Left/270Deg/Actuator/Value Device/SubDeviceList/Face/Led/Blue/Left/315Deg/Actuator/Value Device/SubDeviceList/Face/Led/Blue/Left/45Deg/Actuator/Value Device/SubDeviceList/Face/Led/Blue/Left/90Deg/Actuator/Value Device/SubDeviceList/Face/Led/Blue/Right/0Deg/Actuator/Value Device/SubDeviceList/Face/Led/Blue/Right/135Deg/Actuator/Value Device/SubDeviceList/Face/Led/Blue/Right/180Deg/Actuator/Value Device/SubDeviceList/Face/Led/Blue/Right/225Deg/Actuator/Value Device/SubDeviceList/Face/Led/Blue/Right/270Deg/Actuator/Value Device/SubDeviceList/Face/Led/Blue/Right/315Deg/Actuator/Value Device/SubDeviceList/Face/Led/Blue/Right/45Deg/Actuator/Value Device/SubDeviceList/Face/Led/Blue/Right/90Deg/Actuator/Value Device/SubDeviceList/Face/Led/Green/Left/0Deg/Actuator/Value Device/SubDeviceList/Face/Led/Green/Left/135Deg/Actuator/Value Device/SubDeviceList/Face/Led/Green/Left/180Deg/Actuator/Value Device/SubDeviceList/Face/Led/Green/Left/225Deg/Actuator/Value Device/SubDeviceList/Face/Led/Green/Left/270Deg/Actuator/Value Device/SubDeviceList/Face/Led/Green/Left/315Deg/Actuator/Value Device/SubDeviceList/Face/Led/Green/Left/45Deg/Actuator/Value Device/SubDeviceList/Face/Led/Green/Left/90Deg/Actuator/Value Device/SubDeviceList/Face/Led/Green/Right/0Deg/Actuator/Value Device/SubDeviceList/Face/Led/Green/Right/135Deg/Actuator/Value Device/SubDeviceList/Face/Led/Green/Right/180Deg/Actuator/Value Device/SubDeviceList/Face/Led/Green/Right/225Deg/Actuator/Value Device/SubDeviceList/Face/Led/Green/Right/270Deg/Actuator/Value Device/SubDeviceList/Face/Led/Green/Right/315Deg/Actuator/Value Device/SubDeviceList/Face/Led/Green/Right/45Deg/Actuator/Value Device/SubDeviceList/Face/Led/Green/Right/90Deg/Actuator/Value Device/SubDeviceList/Face/Led/Red/Left/0Deg/Actuator/Value Device/SubDeviceList/Face/Led/Red/Left/135Deg/Actuator/Value Device/SubDeviceList/Face/Led/Red/Left/180Deg/Actuator/Value Device/SubDeviceList/Face/Led/Red/Left/225Deg/Actuator/Value Device/SubDeviceList/Face/Led/Red/Left/270Deg/Actuator/Value Device/SubDeviceList/Face/Led/Red/Left/315Deg/Actuator/Value Device/SubDeviceList/Face/Led/Red/Left/45Deg/Actuator/Value Device/SubDeviceList/Face/Led/Red/Left/90Deg/Actuator/Value Device/SubDeviceList/Face/Led/Red/Right/0Deg/Actuator/Value Device/SubDeviceList/Face/Led/Red/Right/135Deg/Actuator/Value Device/SubDeviceList/Face/Led/Red/Right/180Deg/Actuator/Value Device/SubDeviceList/Face/Led/Red/Right/225Deg/Actuator/Value Device/SubDeviceList/Face/Led/Red/Right/270Deg/Actuator/Value Device/SubDeviceList/Face/Led/Red/Right/315Deg/Actuator/Value Device/SubDeviceList/Face/Led/Red/Right/45Deg/Actuator/Value Device/SubDeviceList/Face/Led/Red/Right/90Deg/Actuator/Value Device/SubDeviceList/Head/Led/Front/Left/0/Actuator/Value Device/SubDeviceList/Head/Led/Front/Left/1/Actuator/Value Device/SubDeviceList/Head/Led/Front/Right/0/Actuator/Value Device/SubDeviceList/Head/Led/Front/Right/1/Actuator/Value Device/SubDeviceList/Head/Led/Middle/Left/0/Actuator/Value Device/SubDeviceList/Head/Led/Middle/Right/0/Actuator/Value Device/SubDeviceList/Head/Led/Rear/Left/0/Actuator/Value Device/SubDeviceList/Head/Led/Rear/Left/1/Actuator/Value Device/SubDeviceList/Head/Led/Rear/Left/2/Actuator/Value Device/SubDeviceList/Head/Led/Rear/Right/0/Actuator/Value Device/SubDeviceList/Head/Led/Rear/Right/1/Actuator/Value Device/SubDeviceList/Head/Led/Rear/Right/2/Actuator/Value Device/SubDeviceList/LFoot/Led/Blue/Actuator/Value Device/SubDeviceList/LFoot/Led/Green/Actuator/Value Device/SubDeviceList/LFoot/Led/Red/Actuator/Value Device/SubDeviceList/RFoot/Led/Blue/Actuator/Value Device/SubDeviceList/RFoot/Led/Green/Actuator/Value Device/SubDeviceList/RFoot/Led/Red/Actuator/Value

Switch(传感器)

Value:

开关是一个简单的传感器,返回2个状态浮点值: 0.0(未按下)或1.0(按下)。

请注意,每10ms才会读取值,所以如果变化得太快,可能会不被察觉。

注意:

在同一只脚上的两个开关之间最好使用“or”逻辑,并把它们当作一个碰撞器使用。

开关值关键码列表

Device/SubDeviceList/ChestBoard/Button/Sensor/Value Device/SubDeviceList/LFoot/Bumper/Left/Sensor/Value Device/SubDeviceList/LFoot/Bumper/Right/Sensor/Value Device/SubDeviceList/RFoot/Bumper/Left/Sensor/Value Device/SubDeviceList/RFoot/Bumper/Right/Sensor/Value

Joint(Position/Actuator)

这个致动器是一个子器件,给出关节要达到的角度(以弧度为单位)。您需要向这个致动器发送定时命令。在ALMemory里,可以看到最后发送至传感器的值。该值以16位精确度整数的形式(0-360度为0-65535)发送至电机电路板器件。在ALMemory和定时命令里,所有值都为以弧度为单位。您可以使用硬度值(见下文)来控制发送至电机的最大电流。

有一个特殊情况:当硬度<=0时,会使用器件上同一个子器件编号,自动把位置设定在Position/Actuator上。

以下是一些关于关节位置控制回路的信息:

在机器人里,控制回路使用一到两个MRE传感器(MRE即磁旋转编码器,用作电位器/光电编码器)。MRE传感器是一些小芯片,利用一个磁铁探测旋转的角度。磁铁和MRE可以安装在电机或关节上,在齿轮后面。返回的角度值是一个12位整数(0-360度为0-4095)。它相当精确,几乎没有误差(有时可能会有1度的绝对误差)。NAO的关节使用两种Maxon电机。最大的电机是为了下半身的所有关节(髋关节及以下)。

机器人上有如下两种情况。一种是一个大Maxon电机,带有2个MRE,其中一个在 电机上,另一个在关节上(用于机器人的下半身)。另一种是一个小电机,只在关节上 有一个MRE(用于机器人的上半身)。

第一种情况更精确,位置更准确,即使在低速时,动作仍很流畅。 在这两种情况下,控制回路都是一种经过修改的比例积分微分(PID)控制。 在有2个MRE的情况下,由电机上的MRE进行控制。

MRE关节需要经过校准才能知道0度的位置。 校准时,将关节推至机械极限,直到不能动为止,然后发出一个特别请求。 该校准值存储在胸部电路板(参见有关首选项的章节)。 它是一个0-4095的整数,对MRE来说,是关节的0位置。 电机电路板在启动时没有任何关于电机和MRE的地址和数据。 在由DCM完成配置过程后,电机和MRE会收到所有信息。

此外,还会出现一些控制回路无法使用(或使用被减少)的错误情况 :

  • 如果在两个传感器(如果有两个的话)中的一个上连续 出现50次错误(不是警告),控制回路就无法使用。 只有不再有错误的情况下,才会重新启动。有错误的MRE值 会被忽略,使用的是最后的值。您要等到出现50个错误以后才能停用控制回路。
  • 如果没有探测到电流,并且脉冲宽度调制(PWM)大于10%时,dsPic会认为电机未插电源, 从而减少控制回路。
  • 如果出现温度问题时(参见温度传感器)。这会降低最大电流。
  • 如果没有校准(校准值为0)的时候。
  • 如果电机电路板(motorBoard)在500ms里未收到任何命令, 控制回路会自动停止。
    注意:

    请注意:如果DCM过程或线程中断,每个电机的 控制回路会在半秒后停止,只有电磁刹车会继续运行。 机器人会慢慢地倒下。

  • 如果硬度没有设定在100%(参见硬度致动器)。这会降低最大电流。
  • 如果电流与限制值相比过高(参见电流传感器)。

其它关键码为:

  • ImportanceLevel1...7

    这些关键码目前尚未使用。

  • InvertControlDirection

    布尔型(Boolean)。如果想让控制回路随电机旋转而转向, 就配置为“true”。DCM在启动时会读取这一配置值,然后在配置过程中发送至母板(motherBoard)。

    注意:

    请务必不要更改这个值!

  • Kp, Ki, Kp

    这些整数值是修改过的PID的系数。 DCM在启动时会读取这一配置值,然后在配置过程中发送至母板。

    注意:

    请勿更改这些配置值。如果值过高可能会损坏关节。

  • MotorNumber

    整数值。“0”意味着这个子器件没有电机。 “1”或“2”是电机编号。 DCM在启动时会读取这一配置值,然后在配置过程中发送至母板。

    注意:

    请勿改变这个配置值。

位置/致动器(position/actuator)值关键码列表

Device/SubDeviceList/HeadPitch/Position/Actuator/Value Device/SubDeviceList/HeadYaw/Position/Actuator/Value Device/SubDeviceList/LAnklePitch/Position/Actuator/Value Device/SubDeviceList/LAnkleRoll/Position/Actuator/Value Device/SubDeviceList/LElbowRoll/Position/Actuator/Value Device/SubDeviceList/LElbowYaw/Position/Actuator/Value Device/SubDeviceList/LHand/Position/Actuator/Value Device/SubDeviceList/LHipPitch/Position/Actuator/Value Device/SubDeviceList/LHipRoll/Position/Actuator/Value Device/SubDeviceList/LHipYawPitch/Position/Actuator/Value Device/SubDeviceList/LKneePitch/Position/Actuator/Value Device/SubDeviceList/LShoulderPitch/Position/Actuator/Value Device/SubDeviceList/LShoulderRoll/Position/Actuator/Value Device/SubDeviceList/LWristYaw/Position/Actuator/Value Device/SubDeviceList/RAnklePitch/Position/Actuator/Value Device/SubDeviceList/RAnkleRoll/Position/Actuator/Value Device/SubDeviceList/RElbowRoll/Position/Actuator/Value Device/SubDeviceList/RElbowYaw/Position/Actuator/Value Device/SubDeviceList/RHand/Position/Actuator/Value Device/SubDeviceList/RHipPitch/Position/Actuator/Value Device/SubDeviceList/RHipRoll/Position/Actuator/Value Device/SubDeviceList/RHipYawPitch/Position/Actuator/Value Device/SubDeviceList/RKneePitch/Position/Actuator/Value Device/SubDeviceList/RShoulderPitch/Position/Actuator/Value Device/SubDeviceList/RShoulderRoll/Position/Actuator/Value Device/SubDeviceList/RWristYaw/Position/Actuator/Value

jointHardness(Hardness/Actuator)

这是一个定义关节硬度(在“动作”模块里称为“刚度”)的特殊致动器。它的值从0.0到1.0,“0”是指0%,“1”是指100%(全功率)。在主板里,这个百分比直接应用在最大电流上。如硬度设定为0.5,就意味着电流限制降低了50%。

注释:

硬度的以上用法会对脉宽调制有一定影响。

效果不是线性的。硬度设定为0.5意味着提供给电机的功率减小。

有一种特殊情况。当硬度<=0时,会自动将位置设定在Position/Sensor上,并使用器件上同一个子器件编号。

另有一种特殊情况。当没有校准时(即Position/Sensor/jointZeroPosition为0,参见“jointPosition”传感器),硬度不能高于0.0。

硬度值会在每个DCM循环时间发送到电机上,因此可以迅速地减少或增加控制回路。

注意:

迅速提高硬度可能会导致机器人做出剧烈的动作,这取决于上一个致动器命令与由传感器给出的实际位置之间的差异。

硬度常用来在机器人接通电源后,流畅地启动控制回路。 它也可以作为一项安全措施来使用。例如,当DCM出现循环时间错误超过500ms时,所有的硬度都会被设定为0,然后在2秒内 回升到以前的值。 您也可以在结束时缓慢地降低硬度。

当硬度为0.0时(默认值,也包括电机电路板刚启动时),电机短路。因此,会有电磁刹车。这是一项避免机器人摔倒的安全措施(机器人仍会摔倒,但是倒下的速度会很慢)。

如果硬度为<0,电机就处于自由状态(无电磁刹车),但是由于硬件限制,只有当同一个电路板的两个电机硬度都为<0时才有可能(两个电机都会处于自由状态)。 否则,仍会有电磁刹车。

如果来自电池的电流超过限制(见下文),所有关节的硬度都会(缓慢地)降低,以避免电池切断电源。

硬度(Hardness)值关键码列表

Device/SubDeviceList/HeadPitch/Hardness/Actuator/Value Device/SubDeviceList/HeadYaw/Hardness/Actuator/Value Device/SubDeviceList/LAnklePitch/Hardness/Actuator/Value Device/SubDeviceList/LAnkleRoll/Hardness/Actuator/Value Device/SubDeviceList/LElbowRoll/Hardness/Actuator/Value Device/SubDeviceList/LElbowYaw/Hardness/Actuator/Value Device/SubDeviceList/LHand/Hardness/Actuator/Value Device/SubDeviceList/LHipPitch/Hardness/Actuator/Value Device/SubDeviceList/LHipRoll/Hardness/Actuator/Value Device/SubDeviceList/LHipYawPitch/Hardness/Actuator/Value Device/SubDeviceList/LKneePitch/Hardness/Actuator/Value Device/SubDeviceList/LShoulderPitch/Hardness/Actuator/Value Device/SubDeviceList/LShoulderRoll/Hardness/Actuator/Value Device/SubDeviceList/LWristYaw/Hardness/Actuator/Value Device/SubDeviceList/RAnklePitch/Hardness/Actuator/Value Device/SubDeviceList/RAnkleRoll/Hardness/Actuator/Value Device/SubDeviceList/RElbowRoll/Hardness/Actuator/Value Device/SubDeviceList/RElbowYaw/Hardness/Actuator/Value Device/SubDeviceList/RHand/Hardness/Actuator/Value Device/SubDeviceList/RHipPitch/Hardness/Actuator/Value Device/SubDeviceList/RHipRoll/Hardness/Actuator/Value Device/SubDeviceList/RHipYawPitch/Hardness/Actuator/Value Device/SubDeviceList/RKneePitch/Hardness/Actuator/Value Device/SubDeviceList/RShoulderPitch/Hardness/Actuator/Value Device/SubDeviceList/RShoulderRoll/Hardness/Actuator/Value Device/SubDeviceList/RWristYaw/Hardness/Actuator/Value

jointPosition(Position/Sensor)

这些传感器把以弧度为单位的角度值返回到关键码“Value”中。正如“Joint(Position/Actuator)”一节中提到的,每个关节有1到2个MRE。这里返回的都是在关节上的MRE的值。 这是一个12位的精确值(从0到4095),以弧度为单位。更多有关在控制回路中使用MRE传感器的信息,请参见上文“Joint(Position/Actuator)”。

传感器值总会在每个DCM循环时间返回。该值使用一个存储在特殊关键码“jointZeroPosition”里的校准值。MRE传感器的值相当精确,错误极少。

其它关键码为:

  • “GearRatio”

    这个关键码是一个浮点,即电机和关节之间的齿轮比。 控制回路使用这个关键码。这个配置值在启动时由DCM读取,然后在配置过程中发送至母板。

    注意:

    请勿改变这个配置值。

  • “SensorType”

    这个关键码指明传感器的类型。 目前,关节只有1到2个MRE。这个配置值在启动时由DCM启动读取,然后在配置过程中发送至母板。

    注意:

    请勿改变这个配置值。

  • "jointZeroPosition"

    这个关键码是关节上的MRE校准值。 它是一个从0到4095的整数。“0”意味着没有校准(默认状态),因而也无法设定硬度。通常情况下,这个关键码的值在“Device.xml”标准文件里为“0”,但是,另一个非0的值会由配置文件设定在胸部电路板中。 这个胸部电路板文件连接至机器人的身体,并且是身体的一个特定文件。 这个配置值在启动时由DCM读取,然后在配置过程中发送至母板。

    注意:

    请勿在胸部电路板和/或“Device.xml”文件里更改这个配置值。

  • “positionChainMREJoint”

    这个关键码是一个0-4的整数,指明关节MRE传感器在连接至电机电路板的MRE链上的位置。 “0”指没有传感器。这个配置值在启动时由DCM读取,然后在配置过程中发送至母板。

    注意:

    请勿改变这个配置值。

  • “positionChainMREMotor”

    这个关键码是一个0-4的整数,指明电机MRE传感器在连接至电机电路板的MRE链上的位置。 “0”指没有传感器。机器人上身所有关节都是如此。 这个配置值在启动时由DCM读取,然后在配置过程中发送至母板。

    注意:

    请勿改变这个配置值。

位置/传感器(Position/Sensor)值关键码列表

Device/SubDeviceList/HeadPitch/Position/Sensor/Value Device/SubDeviceList/HeadYaw/Position/Sensor/Value Device/SubDeviceList/LAnklePitch/Position/Sensor/Value Device/SubDeviceList/LAnkleRoll/Position/Sensor/Value Device/SubDeviceList/LElbowRoll/Position/Sensor/Value Device/SubDeviceList/LElbowYaw/Position/Sensor/Value Device/SubDeviceList/LHand/Position/Sensor/Value Device/SubDeviceList/LHipPitch/Position/Sensor/Value Device/SubDeviceList/LHipRoll/Position/Sensor/Value Device/SubDeviceList/LHipYawPitch/Position/Sensor/Value Device/SubDeviceList/LKneePitch/Position/Sensor/Value Device/SubDeviceList/LShoulderPitch/Position/Sensor/Value Device/SubDeviceList/LShoulderRoll/Position/Sensor/Value Device/SubDeviceList/LWristYaw/Position/Sensor/Value Device/SubDeviceList/RAnklePitch/Position/Sensor/Value Device/SubDeviceList/RAnkleRoll/Position/Sensor/Value Device/SubDeviceList/RElbowRoll/Position/Sensor/Value Device/SubDeviceList/RElbowYaw/Position/Sensor/Value Device/SubDeviceList/RHand/Position/Sensor/Value Device/SubDeviceList/RHipPitch/Position/Sensor/Value Device/SubDeviceList/RHipRoll/Position/Sensor/Value Device/SubDeviceList/RHipYawPitch/Position/Sensor/Value Device/SubDeviceList/RKneePitch/Position/Sensor/Value Device/SubDeviceList/RShoulderPitch/Position/Sensor/Value Device/SubDeviceList/RShoulderRoll/Position/Sensor/Value Device/SubDeviceList/RWristYaw/Position/Sensor/Value

Current(Current/Sensor)

发送电流的器件有两个:MotorBoard(电机电路板,每10ms更新一次)和Battery(电池,每20ms更新一次)。电池的值带符号,即充电时为正号,放电时为负号。对于电机电路板,其值为电机的电流,以安培为单位。

每个电机电路板上都为每个电机配有一个电流传感器,这是一个很小的电阻器,位于H桥和0v之间。

电阻器的电压值由微型控制器ADC于一个确切的时间在脉宽调制PWM里读取。 如果没有PWM,就看不到电流,即使电机有电流通过(例如,当您用手来移动电机时)。

每个motorBoard都有电流限制:如果电流达到“Max”最大值(“ElectricCurrent/Sensor/Max”),(由控制回路返回的)PWM会稍微降低,等至电流低于最大值后,会重新回升。 这是一种围绕着最大值的电流控制回路。

这一限制的目的在于保护电机、电路板和关节的机械部分。

这个配置值在启动时由DCM读取,然后在配置过程中发送至母板。

电池也有电流限制。当来自电池的电流高于限制值(最大值)时,所有关节的硬度都会由DCM(缓慢)降低,以避免电池切断电源。

注意:

请务必不要提高这些配置值!

注释:

新的三洋(Sanyo)电池的电流每3.5秒更新。

电流子器件类型没有特殊的关键码,“Max”值用来限制电流。

电流(Current)值关键码列表

Device/SubDeviceList/Battery/Current/Sensor/Value Device/SubDeviceList/HeadPitch/ElectricCurrent/Sensor/Value Device/SubDeviceList/HeadYaw/ElectricCurrent/Sensor/Value Device/SubDeviceList/LAnklePitch/ElectricCurrent/Sensor/Value Device/SubDeviceList/LAnkleRoll/ElectricCurrent/Sensor/Value Device/SubDeviceList/LElbowRoll/ElectricCurrent/Sensor/Value Device/SubDeviceList/LElbowYaw/ElectricCurrent/Sensor/Value Device/SubDeviceList/LHand/ElectricCurrent/Sensor/Value Device/SubDeviceList/LHipPitch/ElectricCurrent/Sensor/Value Device/SubDeviceList/LHipRoll/ElectricCurrent/Sensor/Value Device/SubDeviceList/LHipYawPitch/ElectricCurrent/Sensor/Value Device/SubDeviceList/LKneePitch/ElectricCurrent/Sensor/Value Device/SubDeviceList/LShoulderPitch/ElectricCurrent/Sensor/Value Device/SubDeviceList/LShoulderRoll/ElectricCurrent/Sensor/Value Device/SubDeviceList/LWristYaw/ElectricCurrent/Sensor/Value Device/SubDeviceList/RAnklePitch/ElectricCurrent/Sensor/Value Device/SubDeviceList/RAnkleRoll/ElectricCurrent/Sensor/Value Device/SubDeviceList/RElbowRoll/ElectricCurrent/Sensor/Value Device/SubDeviceList/RElbowYaw/ElectricCurrent/Sensor/Value Device/SubDeviceList/RHand/ElectricCurrent/Sensor/Value Device/SubDeviceList/RHipPitch/ElectricCurrent/Sensor/Value Device/SubDeviceList/RHipRoll/ElectricCurrent/Sensor/Value Device/SubDeviceList/RHipYawPitch/ElectricCurrent/Sensor/Value Device/SubDeviceList/RKneePitch/ElectricCurrent/Sensor/Value Device/SubDeviceList/RShoulderPitch/ElectricCurrent/Sensor/Value Device/SubDeviceList/RShoulderRoll/ElectricCurrent/Sensor/Value Device/SubDeviceList/RWristYaw/ElectricCurrent/Sensor/Value

Temperature

两个器件会返回温度值:MotorBoard和Battery。 对这两个器件来说,在“Value”里返回的温度都以摄氏度为单位。 电机温度为模拟温度,使用电机的电流值。 即使机器人是刚启动,温度已经相当高(50°C)。 这个现象主要是由内部温度值造成的。 电机电路板有温度限制,即当模拟温度达到75°C时,电流最大值会随之降低,以保证温度低于85°C。

温度(Temperature)值关键码列表

Device/SubDeviceList/Battery/Temperature/Sensor/Value Device/SubDeviceList/HeadPitch/Temperature/Sensor/Value Device/SubDeviceList/HeadYaw/Temperature/Sensor/Value Device/SubDeviceList/LAnklePitch/Temperature/Sensor/Value Device/SubDeviceList/LAnkleRoll/Temperature/Sensor/Value Device/SubDeviceList/LElbowRoll/Temperature/Sensor/Value Device/SubDeviceList/LElbowYaw/Temperature/Sensor/Value Device/SubDeviceList/LHand/Temperature/Sensor/Value Device/SubDeviceList/LHipPitch/Temperature/Sensor/Value Device/SubDeviceList/LHipRoll/Temperature/Sensor/Value Device/SubDeviceList/LHipYawPitch/Temperature/Sensor/Value Device/SubDeviceList/LKneePitch/Temperature/Sensor/Value Device/SubDeviceList/LShoulderPitch/Temperature/Sensor/Value Device/SubDeviceList/LShoulderRoll/Temperature/Sensor/Value Device/SubDeviceList/LWristYaw/Temperature/Sensor/Value Device/SubDeviceList/RAnklePitch/Temperature/Sensor/Value Device/SubDeviceList/RAnkleRoll/Temperature/Sensor/Value Device/SubDeviceList/RElbowRoll/Temperature/Sensor/Value Device/SubDeviceList/RElbowYaw/Temperature/Sensor/Value Device/SubDeviceList/RHand/Temperature/Sensor/Value Device/SubDeviceList/RHipPitch/Temperature/Sensor/Value Device/SubDeviceList/RHipRoll/Temperature/Sensor/Value Device/SubDeviceList/RKneePitch/Temperature/Sensor/Value Device/SubDeviceList/RShoulderPitch/Temperature/Sensor/Value Device/SubDeviceList/RShoulderRoll/Temperature/Sensor/Value Device/SubDeviceList/RWristYaw/Temperature/Sensor/Value

Charge(指电池充电)

  • Value:充电的相对状态,以“%”为单位(从0.0到1.0,“1.0”意为100%), 直接由电池发送。
    注意:

    由于在校准和功率集成上缺乏精确性,因此在此前的BMZ电池上,这个值也不十分精确。

  • Accu Voltage(蓄电池电压,单位:V),在最后一个Learning Cycle之后

    :未应用

  • Remaining Capacity(剩余容量,单位:Ah)

    :未应用

  • “FullChargeCapacity”(满充容量FCC,单位:Ah)

    :已应用

  • Cycle Counts(循环计数,0-0xffff)

    :未应用

  • Design Capacity(设计容量,单位:Ah)

    :未应用

  • Design Voltag(设计电压,单位:V)

    :未应用

  • Cell Voltage(电池单体电压,单位:mV max)

    :已应用,即电池组里6个电池单体的最大电压值(mV)

  • Cell Voltage(电池单体电压,单位:mV min)

    :已应用,即电池组里6个电池单体的最小电压值(mV) 如果该值< 2.7V,电池的安全保护程序就会停止电池供电。

  • “DelayForDischargeErrorReset”(单位:s)

    :未应用

  • Count of cycles after last learning cycle(最后一个Leaning Cycle之后的循环计数)

    :未应用

  • Status(电池状态)

    :已应用。见下文。

注释:

在新的三洋(Sanyo)电池上, 电池单体电压的最大和最小值现在均为六个电池单体相应的平均值。

布尔值

这些布尔值尚未应用。然而,可以通过“Status”关键码、作为一个2字节整数字来使用直接位。 使用位掩码来找到每个位的“True/False”结果。

  • End off Discharge flag (放电结束标记)(=3.0V/cell) (bit 0)

    使用“Cell Voltage min” (最小电池单体电压)

  • Near End off Discharge flag (放电即将结束标记)(=3.2V/cell) (bit 1)

    使用“Cell Voltage min”

  • Charge FET on (FET充电开) (bit 2)
  • Discharge FET on (FET放电开) (bit 3)
  • Accu learn flag (蓄电池learn标记) (bit 4)
  • Discharging flag (放电标记) (bit 5)
  • full charge flag (满充标记) ((bit 6)
  • charge flag (充电标记) (bit 7)
  • Charge Temperature Alarm (充电温度警报) (bit 8)
  • Over Charge Alarm (充电过满警报) (bit 9)
  • Discharge Alarm (放电警报) (bit 10)
  • Charge Over Current Alarm (充电高于电流警报)(bit 11)
  • Discharge Over Current Alarm > 14A (放电高于电流警报 >14A)(bit 12)

    电池会在几毫秒内自行切断

  • Discharge Over Current Alarm > 6A (放电高于电流警报 >6A)(bit 13)

    电池会在几毫秒内自行切断

  • Discharge Temperature Alarm (放电温度警报)(bit 14)
  • Power-Supply for charging is present (出现充电电源)(bit 15)

新三洋(Sanyo)电池上有一个不同的状态,为1个字节,其中:

  • 保留(bit 0)

    未定义

  • 保留(bit 1)

    未定义

  • 保留(bit 2)

    未定义

  • 保留(bit 3)

    未定义

  • LEARNF (bit 4)

    “Learn Flag”(获知标志) 设为1时可使用一个充电循环来了解电池容量。 在以下情况下设定为1:( VOLT falls from above VAE to below VAE ) AND ( CURRENT > IAE ) 在以下情况下清为0: ( CHGTF = 1 ) OR ( CURRENT negative ) OR ( ACR = 0 **) OR ( ACR written or recalled from EEPROM) OR ( SLEEP Entered )

  • SEF (bit 5)

    “Standby Empty Flag”(待机空标志) 在以下情况下设为1: RSRC < 10% 在以下情况下清为0:RSRC > 15%

  • AEF (bit 6)

    “Active Empty Flag”(启动空标志) 在以下情况下设为1: VOLT < VAE 在以下情况下清为0: RARC > 5%

  • CHGTF (bit 7)

    “Charge Termination Flag”(充电结束标志) 在以下情况下设为1: ( VOLT > VCHG ) AND ( IAVG between 0 and IMIN ) 在两个IAVG注册之间继续一段时间(28秒到56秒)。在以下情况下清为0: RARC < 90%

注释:

RemainingCapacity在三洋(Sanyo)电池内更新,值以Ah为单位。

注释:

FullChargeCapacity在三洋(Sanyo)电池内更新,值以Ah为单位,由RemainingCapacity除以充电量百分比而得。 如果充电量小于10%,该值不会被更新。

注释:

三洋(Sanyo)电池有一个新的"Age"值,以百分比为单位,是一个电池寿命估计值(取决于循环)。最佳状态为100%。

US/Actuator/Value (超声波/致动器/值)

向该致动器发送一个值来发送超声波。利用这个值,您可以(在左侧或右侧中)选择哪一个是发送器,哪一个是接收器。

选择接收器、发送器的左右侧可以影响到探测椎角,并提供有关障碍物的信息。

结果大约在10ms后写入US/Sensor/Value,以米为单位。如果值<=0或>=2.55m,就说明传感器出现错误或没有探测到回声。

  • 通过该值的第一位来选择哪一侧作为接收器。0为左,1为右。
  • 通过第二位来选择发送器。同样的,0为左,1为右。

发送器 接收器
0.0
1.0
2.0
3.0

注释:

自从使用了新的固件版本(第2版)以后,就有了使用超声波来测量物体距离的新模式。您可以在“/Device/USBoard/ProgVersion”里了解固件版本。

  • 第三位(值为4)是指只用一个命令来完成两个捕获,左侧和右侧。 其结果可在“US/Left/Sensor”和“US/Right/Sensor”这两个新子器件上获得。 目前,每个传感器可使用10个值,对应于10个最先探测到的回声距离。
  • 第四位(值为8)命令同时使用两个发送器。
  • 第七位(值为64)用来记录一个周期性捕获,即您只需给DCM发送一次读取请求,就可以在ALMemory里每100ms读取一次值。若要停止周期性模式,只需发送一个不含该位的新读取命令。

所有的位组合未必都会有用。以下是一些例子:

发送器 接收器
4.0 右和左 右和左
12.0 (8.0 + 4.0) 右和左 右和左
68.0 (64.0 + 4.0) 右和左 右和左

超声波(US)致动器值关键码

Device/SubDeviceList/US/Actuator/Value

US/Sensor/Value (超声波/传感器/值)

这是由UltraSound器件传感器返回的值(在胸部的两个传感器中的一个)。 该值在使用超声波致动器发送超声波大约10ms后变化。

这个请求决定使用哪一个发送器/接收器。

结果以米(m)为单位。如果结果为0或>=2.55m,就意味着出现了错误(除非有一个“NACK”)。

以下为其它有关超声波传感器的信息:

最大探测距离约为1.2米(旧版本)。可能会先探测地面。

可能会探测到机器人的手臂,请小心!

发送椎角取决于机器人前方物体的大小。

探测质量取决于物体(或障碍物)的大小、面积、方向等。

超声波(US)传感器值关键码

Device/SubDeviceList/US/Sensor/Value

US/Right/Sensor/Value 和 US/Left/Sensor/Value

这是分别专用于左、右接收器的新传感器,在发送到致动器的值里设定有第三位时使用(仅限V2卡)。

每个接收器上探测到的第一个回声的结果在“Value”中,后面的9个结果在“Value1”到“Value9”中。

值为0时,就是出现了错误。最小有效值(距离)为0.25米。值为2.55米时,就是没有回声。最大可探测距离为2.54米。

例如,如果“Value”为0.40,“Value1”为1.2,“Value2”为2.55,那么后面的值(Value3到9)都将为2.55。这可以解释为在距离0.40米和1.2米处分别有一个物体。 左、右两个传感器的工作原理相同,协同完成物体定位。

超声波(US)左/右传感器值关键码列表

Device/SubDeviceList/US/Left/Sensor/Value Device/SubDeviceList/US/Left/Sensor/Value1 Device/SubDeviceList/US/Left/Sensor/Value2 Device/SubDeviceList/US/Left/Sensor/Value3 Device/SubDeviceList/US/Left/Sensor/Value4 Device/SubDeviceList/US/Left/Sensor/Value5 Device/SubDeviceList/US/Left/Sensor/Value6 Device/SubDeviceList/US/Left/Sensor/Value7 Device/SubDeviceList/US/Left/Sensor/Value8 Device/SubDeviceList/US/Left/Sensor/Value9 Device/SubDeviceList/US/Right/Sensor/Value Device/SubDeviceList/US/Right/Sensor/Value1 Device/SubDeviceList/US/Right/Sensor/Value2 Device/SubDeviceList/US/Right/Sensor/Value3 Device/SubDeviceList/US/Right/Sensor/Value4 Device/SubDeviceList/US/Right/Sensor/Value5 Device/SubDeviceList/US/Right/Sensor/Value6 Device/SubDeviceList/US/Right/Sensor/Value7 Device/SubDeviceList/US/Right/Sensor/Value8 Device/SubDeviceList/US/Right/Sensor/Value9

陀螺仪

机器人上配备了一个两轴陀螺仪,位于身体中心部位。它包括3个子器件以及一个参考值。

这些传感器提供围绕机器人X轴和Y轴的旋转速度。

当机器人停止不动时,会得到一个“no rotation”(无旋转)值而不是0,并需要校准,通常约为-2000。这里最大的困难就是如何校准这个0值。

此后,该值的变化约为增值2.7/°/s。

您可以阅读传感器数据表(IDG300Q)来获得更多信息。

该值随后由一个微型控制器ADC(12位,范围从0至3.3V)读取,读取时带有少许平均数,并被直接返回(只是乘以-1来获得正确方向)。

陀螺仪(Gyr)值关键码列表

Device/SubDeviceList/InertialSensor/GyrRef/Sensor/Value Device/SubDeviceList/InertialSensor/GyrX/Sensor/Value Device/SubDeviceList/InertialSensor/GyrY/Sensor/Value

加速计

机器人配备了一个8位三轴数字加速计,位于身体的中心部位。

加速器的3个值是从带有滤光器的三轴加速计传感器返回的值。值为“0”是指该轴没有任何加速。“g”的值约为56。

您可以阅读传感器数据表(LIS302DL)来获得更多信息。值为数字式,直接返回到ALMemory里(Y轴的值带有*-1)。

加速计(Acc)值关键码列表

Device/SubDeviceList/InertialSensor/AccX/Sensor/Value Device/SubDeviceList/InertialSensor/AccY/Sensor/Value Device/SubDeviceList/InertialSensor/AccZ/Sensor/Value

角度

惯性电路板根据陀螺仪和加速计的数据计算机器人身体的2个倾斜角度。

两个角都以弧度为单位。

角度(Angle)值关键码列表

Device/SubDeviceList/InertialSensor/AngleX/Sensor/Value Device/SubDeviceList/InertialSensor/AngleY/Sensor/Value

压力传感器FSR

“FSR”的全称为“Force Sensing Resistor”。机器人上共有8个FSR子器件,每只脚上4个。具体位置请参见“硬件”说明书(也可使用关键码/XPosition和/YPosition,单位为m)。

每个FSR的返回值类似于公斤(Kg)。如果FSR经过校准(见机器人配置关键码),以kg为单位的值的精确度约为20%(取决于时间和实际力量的位置)。如果没有校准,误差会更大,而且特定于每个传感器。

注释:

前一个原始值可以通过倒置公式再次进行计算:New value = ((1.0/old raw value) - offset)*gain.

Total Weight Value (总重量值)为一只脚上4个FSR的总和。

压力传感器(FSR)值关键码列表

Device/SubDeviceList/LFoot/FSR/FrontLeft/Sensor/Value Device/SubDeviceList/LFoot/FSR/FrontRight/Sensor/Value Device/SubDeviceList/LFoot/FSR/RearLeft/Sensor/Value Device/SubDeviceList/LFoot/FSR/RearRight/Sensor/Value Device/SubDeviceList/LFoot/FSR/TotalWeight/Sensor/Value Device/SubDeviceList/RFoot/FSR/FrontLeft/Sensor/Value Device/SubDeviceList/RFoot/FSR/FrontRight/Sensor/Value Device/SubDeviceList/RFoot/FSR/RearLeft/Sensor/Value Device/SubDeviceList/RFoot/FSR/RearRight/Sensor/Value Device/SubDeviceList/RFoot/FSR/TotalWeight/Sensor/Value

CenterOfPressure (压力中心)

“CenterOfPressure”的值计算每只脚上FRS的重心(使用各自的重量和位置)X和Y的返回值以m为单位,来自足部参数。请参见“硬件”说明书。

使用“centerOfPressure”和来自两只脚的重量,可以计算机器人上所有重量的重心。

注意:

如果机器人脚上的重量很轻,那么压力中心就可能有问题。

注意:

如果实际压力中心不在4个FSR组成的平行四边形里,由于内部机械限制,重量和压力中心的值可能会不准确。

Total Weight Value为一只脚上4个FSR的总和。

压力中心(CenterOfPressure)值关键码列表

Device/SubDeviceList/LFoot/FSR/CenterOfPressure/X/Sensor/Value Device/SubDeviceList/LFoot/FSR/CenterOfPressure/Y/Sensor/Value Device/SubDeviceList/RFoot/FSR/CenterOfPressure/X/Sensor/Value Device/SubDeviceList/RFoot/FSR/CenterOfPressure/Y/Sensor/Value

触觉开关

Academics版机器人的头顶上有3个触觉接近开关,可以探测到人的手或手指。当传感器探测到物体时,传感器附近的发光二极管会点亮。

从3.3版本开始,NAO每只手上配备三个触摸传感器,分别位于手的两侧及上部。

注意:

插入电池充电器时,触觉传感器可能会在很短的时间里变得非常敏感。

触摸(Touch)值关键码列表

Device/SubDeviceList/Head/Touch/Front/Sensor/Value Device/SubDeviceList/Head/Touch/Middle/Sensor/Value Device/SubDeviceList/Head/Touch/Rear/Sensor/Value Device/SubDeviceList/LHand/Touch/Back/Sensor/Value Device/SubDeviceList/LHand/Touch/Left/Sensor/Value Device/SubDeviceList/LHand/Touch/Right/Sensor/Value Device/SubDeviceList/RHand/Touch/Back/Sensor/Value Device/SubDeviceList/RHand/Touch/Left/Sensor/Value Device/SubDeviceList/RHand/Touch/Right/Sensor/Value





Copyright © 2010 Aldebaran-Robotics - 版权所有