E-PUCK2-WIFI协议标准
通信基于TCP;机器人将创建一个TCP服务器并等待连接。默认端口:1000
每个数据包都由一个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度
       
   
- 陀螺仪(Gyro):原始轴值,介于-32768和32767之间,范围为+ -250dps
 - 磁力计(Magnetometer):原始轴值以浮点数表示,范围为+ -4912.0 uT(磁通密度以微特斯拉表示)
 - 温度(Temp):以摄氏度为单位的温度
 - 红外接近度:0(未检测到物体)和4095(传感器附近的物体)之间
 - 红外环境:0(强光)至4095(黑暗)
 - ToF距离(ToF):以毫米为单位给出的距离
 - 麦克风音量:0到4095之间
 - 电机步数:每转1000步
 - 电池(Battery):电池电压ADC值
 - uSD状态(uSD):如果存在micro sd且可以读取/写入,则为1,否则为0
 - 电视远程数据(TV remote):RC5协议
 - 选择器位置(Selector):0到15之间
 - 地面接近度:介于0(完全没有表面或没有反射表面,例如黑色)和1023(非常反射表面,例如白色)之间
 - 地面环境:0(强光)和1023(黑暗)之间
 - 按钮状态(Button):按下1个按钮,释放0个按钮
 - 保留(Reserved)0x03 =空数据包(仅发送ID);当没有传感器且没有图像请求时,这用作命令包的确认
 
以下ID用于将数据从计算机发送到机器人:
- 0x80 =命令包;数据包大小(无id)= 20字节:
 

- 
- 请求(Request):
- bit0:0 =停止图像流;1 =开始图像流
 - bit1:0 =停止传感器流;1 =启动传感器流
 
 - 设置(Settings):
- bit0:1 =校准红外接近传感器
 - bit1:0 =禁用机载避障;1 =启用机载避障功能(尚未实施)
 - bit2:0 =设置电动机速度;1 =设置电机步进(位置)
 
 - 左右:当Settings
的bit2为0时,则为所需的电动机速度(-1000..1000);这时1将被设置为电动机位置(步长)的值 - LED:0 =熄灭; 1 =开
- bit0: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 =停止声音
 
 - 请求(Request):
 
例如,要接收摄像机图像(流),需要执行以下步骤:
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
一段上位机控制机器人运动的代码:
void CommThread::connected()
{
    qDebug() << "connected...";
    emit updateUiState(UI_STATE_ROBOT_CONNECTED);
    output_buffer[0] = 0x80;
    output_buffer[1] = 0x02; // Bit0: start/stop image stream; bit1: start/stop sensors stream.
    output_buffer[2] = 0x00; // Behavior / others
    output_buffer[3] = 0x00; // Left speed LSB
    output_buffer[4] = 0x00; // Left speed MSB
    output_buffer[5] = 0x00; // Right speed LSB
    output_buffer[6] = 0x00; // Right speed MSB
    output_buffer[7] = 0x00; // LEDs
    output_buffer[8] = 0x00; // LED2 red
    output_buffer[9] = 0x00; // LED2 green
    output_buffer[10] = 0x00; // LED2 blue
    output_buffer[11] = 0x00; // LED4 red
    output_buffer[12] = 0x00; // LED4 green
    output_buffer[13] = 0x00; // LED4 blue
    output_buffer[14] = 0x00; // LED6 red
    output_buffer[15] = 0x00; // LED6 green
    output_buffer[16] = 0x00; // LED6 blue
    output_buffer[17] = 0x00; // LED8 red
    output_buffer[18] = 0x00; // LED8 green
    output_buffer[19] = 0x00; // LED8 blue
    output_buffer[20] = 0x00; // sound
    next_request = output_buffer[1];
    socket->skip(MAX_BUFF_SIZE); // Flush input buffer.
    socket->write((char*)&output_buffer[0], OUTPUT_BUFFER_SIZE);
}

附录2:机器人底层接收部分
case 15:
	switch(demo15_state) {
		case 0:
			if(cam_advanced_config(FORMAT_COLOR, 0, 0, 640, 480, SUBSAMPLING_X4, SUBSAMPLING_X4) != MSG_OK) {
				set_led(LED1, 1);
			}
			cam_set_exposure(512, 0); // Fix the exposure to have a stable framerate.
			dcmi_set_capture_mode(CAPTURE_ONE_SHOT);
			if(dcmi_prepare() < 0) {
				set_led(LED5, 1);
			}
			spi_image_transfer_enable();
			//mpu9250_magnetometer_setup();
			// Flush the uart input to avoid interpreting garbage as real commands.
			while(chnReadTimeout(&SD3, (uint8_t*)&temp_rx, 1, MS2ST(1)>0)) {
				chThdSleepMilliseconds(1);
			}
			demo15_state = 1;
			break;
		case 1:
			run_asercom2();
			stop_loop = 1;
			break;
	}
	break;
示例:
1.前进
80 02 00 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
| 
        作者:kay  出处:https://www.cnblogs.com/kay2018/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 如果文中有什么错误,欢迎指出。以免更多的人被误导。  | 
    

                
            
        
浙公网安备 33010602011771号