传感器服务

传感器是一种能检测到外界的某种或多种信息,并能按一定规律变换成为电信号或其他所需形式的信息输出的装置,机器人能通过传感器来感知外界环境,正因为有了传感器,机器人才具备了类似人类的知觉功能和反应能力。

传感器服务提供了一系列控制机器人传感器的的接口,我们可以通过RobotContext 对象获取到SensorManager来控制传感器。

SensorManager sensorManager = robotContext.getSystemService(SensorManager.SERVICE);

获取传感器

使用传感器前,可先获取机器人支持的传感器列表,并可查看传感器信息。

  • 获取指定ID的传感器

java SensorDevice sensorDevice = sensorManager.getDevice(sensorId);/* [1] */

[1] SensorDevice对象描述传感器的信息具体如下:

类型 属性 说明
String id 传感器ID
String type 传感器类型
String name 传感器名称
String description 描述
List supportedCommandList 支持的指令列表
Map commandOptionClassMap 特殊指令参数
  • 获取传感器列表 java List<SensorDevice> sensorDeviceList = sensorManager.getDeviceList();

  • 获取指定类型的传感器列表

java List<SensorDevice> sensorDeviceList = sensorManager.getDeviceList(type);/* [2] */

[2] 传感器类型由具体传感器服务实现处定义,根据产品设计各有差异。

开关传感器

通过ID可以开关传感器

  • 打开传感器
Promise<Void, SensorException> result = sensorManager.enable(sensorId);/* [1] */

[1] 返回结果为Promise的方法为异步方法,可通过注册回调获取执行结果,也可执行get()方法转换成同步方法,具体请参考async

  • 关闭传感器
Promise<Void, SensorException> result = ssensorManager.disable(sensorId);

获取传感器状态

通过ID可以查询传感器状态

boolean sensorStatus = sensorManager.isEnabled(sensorId);

监听器

  • 注册传感器监听器

    java SensorListener sensorListener = new SensorListener() { @Override public void onSensorChanged(SensorDevice sensorDevice, SensorEvent sensorEvent/* [1] */) { //此处查看传感器变化事件 } }; sensorManager.registerListener(sensorId, sensorListener);

    [1] 传感器数值变化值储存在SensorEvent对象中,具体信息如下:

    类型 属性 说明
    String id 传感器ID
    long timestamp 时间戳
    float[] values 变化后的传感器值
  • 移除传感器监听器

    java sensorManager.unregisterListener(sensorListener);

传感器列表

Name Id Description
ultrasonic1 ultrasonic1 超声1
ultrasonic2 ultrasonic2 超声2
ultrasonic3 ultrasonic3 超声3
ultrasonic4 ultrasonic4 超声4
ultrasonic5 ultrasonic5 超声5
ultrasonic6 ultrasonic6 超声6
ultrasonic7 ultrasonic7 超声7
ultrasonic8 ultrasonic8 超声8
rgbd rgbd1 深度摄像机
wallIR1 wallIR1 墙检红外1
wallIR2 wallIR2 墙检红外2
wallIR3 wallIR3 墙检红外3
wallIR4 wallIR4 墙检红外4
wallIR5 wallIR5 墙检红外5
wallIR6 wallIR6 墙检红外6
groundIR1 groundIR1 地检红外1
groundIR2 groundIR2 地检红外2
groundIR3 groundIR3 地检红外3
groundIR4 groundIR4 地检红外4
groundIR5 groundIR5 地检红外5
groundIR6 groundIR6 地检红外6
lidar lidar1 雷达
obstacle_detect obstacle_detect 障碍状态
human_detect human_detect 人体检测
cliff_detect cliff_detect 悬崖检测
humiture humiture 温湿度检测
pyroelectric pyroelectric 热释电
TOF_infrared TOF_infrared TOF红外
geomagnetism_detect geomagnetism_detect 地磁检查
LPalm_skin LPalm_skin 左手掌电子皮肤
LPalm_switch LPalm_switch 左手掌电子开关
LFArm_skin LFArm_skin 左前手臂电子皮肤
LBArm_skin LBArm_skin 左后手臂电子皮肤
RPalm_skin RPalm_skin 右手掌电子皮肤
RPalm_switch RPalm_switch 右手掌电子开关
RFArm_skin RFArm_skin 右前手臂电子皮肤
RBArm_skin RBArm_skin 右后手臂电子皮肤
emergency_stop emergency_stop 急停
totalSwitch totalSwitch 总开关