diff --git a/4.17组会.md b/4.17组会.md index dc0d668..d61748c 100644 --- a/4.17组会.md +++ b/4.17组会.md @@ -89,4 +89,28 @@ SUBSYSTEM=="usb" ATTRS{idVendor}=="YOUR_VENDOR_ID", ATTRS{idProduct}=="YOUR_PROD 3 -4 \ No newline at end of file +4 + +### 6.4 组会 + +##### 这周完成了: + +1. 完成了UPbot的通信协议设计 + +2. 沟通研一完成了APP具体功能的实现 + + + + + + + +3. 制作初始化定位的视频渲染 + +4. 实际草坪的数据采集 + +5. 单独测试APP功能实现(不通过协议,简单通过发送指令例如1等实现程序启动) + +##### 下周工作: + +根据协议解析客户端的数据,在服务端实现割草机的相关功能 \ No newline at end of file diff --git a/UPBot 通信协议.md b/UPBot 通信协议.md new file mode 100644 index 0000000..9b4d9be --- /dev/null +++ b/UPBot 通信协议.md @@ -0,0 +1,135 @@ +# UPBot 通信协议: + +## 一、消息定义 + +| | 消息头 | 消息体 | 校验 | +| ------------ | ------ | ---------- | ---- | +| 大小(字节) | 3 | N(0-255) | 1 | + +#### 消息头定义 + +```c +struct head +{ + unsigned char flag;// 头部标记,固定帧头:0X5b + unsigned char msg_id;// 消息ID,表示消息具体作用,决定消息体具体格式 + unsigned char length;// 消息体长度 +} +``` + +| | 帧头 | id | 消息体长度 | 消息体 | 校验 | +| ---- | ---- | ---------------- | ---------- | -------- | ---- | +| 内容 | 0x5b | 0x01(命令类) | 2字节 | 0-0xffff | | +| | 0x5b | 0x02 (配置类) | | | | +| | | | | | | + +#### 二、命令类消息体含义 + +| 消息体数值 | 含义 | +| ---------- | -------------------- | +| 0x00 | **启动机器人** | +| 0x01 | 启动导航定位 | +| 0x02 | **启动全覆盖客户端** | +| 0x03 | 启动全覆盖服务端 | +| 0x04 | 启动摄像头和超声波 | +| 0x05 | 手持标签划定边界 | +| 0x06 | 手动控制机器人 | +| 0x07 | **返回充电** | +| 0x08 | 停止割草 | +| 0x09 | 暂停割草 | +| 0x10 | **基站初始化** | + +启动机器人:0x5b,0x01,0x02,0x00,校验和 + +#### 三、配置类消息体含义 + +#### 3.1 基站配置类 + +| 配置类型 | 配置类型标识符 | +| -------- | -------------- | +| 坐标配置 | 0x00 | +| 频率配置 | 0x01 | +| 电源配置 | 0x02 | + +###### 坐标配置类的数据格式如下: + +**0x5b | 0x02 | xx | 0x00 | base_num(1 byte) | (float,float,float) x base_num) | 校验位(1 byte)** + +0x5b: 坐标配置类的特定标识符 + +0x02: 固定值,表示开始 + +xx: 消息体长度(动态计算) + +0x00: 配置类型标识符 + +base_num: 基站数量,表示后续有多少组坐标数据 + +float: 每组基站的x, y, z坐标,分别为三个浮点数 + +校验位: 数据校验和 + +###### 频率配置类数据格式如下: + +**0x5b | 0x02 | xx | 0x01 |float 频率 | 校验位(1 byte)** + +###### 电源配置类数据格式如下: + +**0x5b | 0x02 | xx | 0x02 |电源状态 0x00关闭 0x01开启 | 校验位(1 byte)** + +#### 3.2 地图配置类 + +| 配置类型 | 配置类型标识符 | +| ------------ | -------------- | +| 地图编号配置 | 0x03 | +| 地图校准配置 | 0x04 | +| 虚拟墙配置 | 0x05 | + +###### 地图编号配置: + +**0x5b | 0x02 | xx | 0x03|消息体内容 | 校验位(1 byte)** + +###### 地图校准配置: + +**0x5b | 0x02 | xx | 0x04 |校准参数| 校验位(1 byte)** + +校准参数:X轴偏移量(float)、Y轴偏移量(float)、旋转角度(float) + +###### 虚拟墙配置:用户在地图上设置虚拟墙 ,限制割草机的移动范围,避免进入不想割草的区域。 + +**0x5b | 0x02 | xx | 0x05 |虚拟墙数量| 虚拟墙数据|校验位(1 byte)** + +虚拟墙数据:每个虚拟墙包含起点和终点坐标,表示虚拟墙在地图上的位置和形状。 + +```python +# 通过socket获得数据 +data = socket.get_data() + +frame_head = data[0] + +# 校验数据头 +if(frame_head != 0x5b): + print("frame error") + return + +data_id = data[1] + +swtich data_id: + case UPBOT_COMMAND: + # 解析命令类的数据,并执行对应的功能 + upbot_parse_cmd(data) + case UPBOT_CONFIG: + upbot_prase_config(data) + default: + break; + +def upbot_parse_cmd(data): + cmd_type = data[4] + + switch_case: + UPBOT_LAUNCH_ROS: # 这个全大写的就是0x00 + subprocess.run(ros_core) + ... + +``` + diff --git a/image/6 b/image/6 new file mode 100644 index 0000000..e6465a7 Binary files /dev/null and b/image/6 differ diff --git a/image/7.jpg b/image/7.jpg new file mode 100644 index 0000000..b20d350 Binary files /dev/null and b/image/7.jpg differ diff --git a/image/8.jpg b/image/8.jpg new file mode 100644 index 0000000..641c767 Binary files /dev/null and b/image/8.jpg differ