传感器服务
传感器是一种能检测到外界的某种或多种信息,并能按一定规律变换成为电信号或其他所需形式的信息输出的装置,机器人能通过传感器来感知外界环境,正因为有了传感器,机器人才具备了类似人类的知觉功能和反应能力。
传感器服务提供了一系列控制机器人传感器的的接口,我们可以通过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 | 总开关 |