# 2024-04-28

##### 1.已有功能

- UWB融合IMU、ODOM定位。
- 双目测距、目标检测
- 全覆盖路径规划
- 碰撞传感器、超声波传感器接入：可以考虑扩展三个超声波传感器，用于提高障碍物分辨率
- 基于双目、碰撞、超声波的避障＋全覆盖：目前割草机器人的避障识别能力需要进一步优化
- 手持标签划定范围：用户预先划定机器人的割草范围
- USB-HID通信：利用USB-HID通信，可以精确确定USB设备并开启，提高设备的稳定性和扩展性。

##### 2. 需开发功能

- 草坪和非草坪识别功能：通过摄像头识别草坪与非草坪，决定是否开启割草马达
- 基于语义分割的环境建图 ：根据语义分割功能，创建语义地图，识别草坪的实际边界和障碍物，建立语义地图
- UWB融合定位自动对准：自动对齐IMU和UWB的坐标系
- UWB杆位置初始化：机器人运动一段时间后，估计出UWB标杆的位置，省去手动输入坐标位置的问题
- APP控制机器人操作，省去命令行控制机器人
- 自动回充

##### 3.当前问题

# 2024-04-01

#### 1.当前状态：

​		目前融合定位和摄像头检测避障程序都有初步DEMO，联合运行存在问题。

#### 2.摄像头避障问题

​		目前摄像头避障存在不及时的问题，已经检测到目标障碍物了，但是会撞到障碍物。原因：全覆盖地图和摄像头避障回调是两个单独的线程。当摄像头检测到避障后，回调函数设置障碍标志位。但是此时全覆盖的策略亦然在线程里面运行，还没有进入避障逻辑，已经撞到障碍物了。

```C++
void sendNavigation(vector<loc> pos){
    for(p in pos){
        NavigationSet(pos);
        sleep(0.1);
    }
}

void navigateExplorationPath(){
    if(flag == true){
        // 避开障碍物策略
        ...
    }
    // 发送导航目标
    sendNavigation(pos);
}

void SteroCB(float dist){
    if(dist > 10 && dist < 60){
        flag = true;
    }
}
```

​		解决方案：2024/04/01实验确定了是全覆盖的策略导致的避障不及时问题。 需要额外增加合适的标志位打断原先的全覆盖逻辑，进入避障的逻辑

#### 3.UWB草坪测试问题

​		在草坪环境里面跑UWB融合定位全覆盖，会出现异常情况。在下面箭头位置，全覆盖会失效错误。目前草坪UWB全覆盖有下面两个问题：

​		1、转弯处有额外的圈圈，怀疑是因为UWB放在车头导致转弯产生额外的偏移，引起全覆盖算法出现调整导致。

​		2、全覆盖异常问题：运行一段时间后，全覆盖出现异常导航

​		![f74ccf4edc58d341763b35346d6fc5b](./Image/2024-04-01/UWBFusion.png)

​		问题1解决方案：调整UWB基站的位置，放在两个轮子中间，重新设计银星机器人结构，减少摄像头遮挡。

​		问题 2解决方案：全覆盖的log采用文件存储方式，在关键节点记录全覆盖的log并保存，在复现bug的时候，通过log回推代码逻辑。

#### 4.融合定位问题

​		目前融合定位存在下面两个问题：

​		1.初始收敛慢，缺少初始阶段快速收敛

​		2.缺少方向对准