通信基于TCP;机器人将创建一个TCP服务器并等待连接。
每个数据包都由一个ID(1字节)标识。以下ID用于将数据从机器人发送到计算机:
- 0x00 =保留
- 0x01 = QQVGA彩色图像数据包(仅第一段包含此ID);数据包大小(无ID)= 38400字节; 图像格式= RGB565
- 0x02 =传感器数据包;数据包大小(无ID)= 104字节;返回值的格式基于高级sercom协议,并且与e-puck1.x兼容:
- Acc:原始轴值,介于-1500和1500之间,分辨率为+ -2g
- 加速:加速幅度,在0.0到2600.0(〜3.46 g)之间
- 方向:0.0至360.0度之间
0.0度 90.0度 180度 270度
- 倾斜度:0.0至90.0度(在任何方向倾斜时)
0.0度 90.0度
- 陀螺仪:原始轴值,介于-32768和32767之间,范围为+ -250dps
- 磁力计:原始轴值以浮点数表示,范围为+ -4912.0 uT(磁通密度以微特斯拉表示)
- 温度:以摄氏度为单位的温度
- 红外接近度:0(未检测到物体)和4095(传感器附近的物体)之间
- 红外环境:0(强光)至4095(黑暗)
- ToF距离:以毫米为单位给出的距离
- 麦克风音量:0到4095之间
- 电机步数:每转1000步
- 电池:
- uSD状态:如果存在micro sd且可以读取/写入,则为1,否则为0
- 电视远程数据:RC5协议
- 选择器位置:0到15之间
- 地面接近度:介于0(完全没有表面或没有反射表面,例如黑色)和1023(非常反射表面,例如白色)之间
- 地面环境:0(强光)和1023(黑暗)之间
- 按钮状态:按下1个按钮,释放0个按钮
- 0x03 =空数据包(仅发送ID);当没有传感器且没有图像请求时,这用作命令包的确认
以下ID用于将数据从计算机发送到机器人:
- 0x80 =命令包;数据包大小(无id)= 20字节:
-
- 请求:
- bit0:0 =停止图像流;1 =开始图像流
- bit1:0 =停止传感器流;1 =启动传感器流
- 设置:
- bit0:1 =校准红外接近传感器
- bit1:0 =禁用机载避障;1 =启用机载避障功能(尚未实施)
- bit2:0 =设置电动机速度;1 =设置电机步进(位置)
- 左右:当
settings
field的bit20
为时,则为所需的电动机速度(-1000..1000);这时1
将被设置为电动机位置(步长)的值 - LED:0 =熄灭; 1 =开
- 位0:0 = LED1熄灭; 1 = LED1亮
- bit1:0 = LED3熄灭; 1 = LED3亮
- bit2:0 = LED5熄灭;1 = LED5亮
- bit3:0 = LED7熄灭; 1 = LED7亮
- bit4:0 =身体LED熄灭;1 =身体LED亮
- bit5:0 =前LED熄灭;1 =前LED亮
- RGB LED:对于每个LED,依次指定红色,绿色和蓝色(0 ... 100)的值
- 声音ID:0x01 = MARIO,0x02 = UNDERWOLRD,0x04 = STARWARS,0x08 = 4KHz,0x10 = 10KHz,0x20 =停止声音
- 请求:
例如,要接收摄像机图像(流),需要执行以下步骤:
1)通过TCP连接到机器人
2)发送命令包:
0x80 | 0x01 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
3)读取ID(1字节)和QQVGA彩色图像包(38400字节)
4)转到步骤3