Robot-UESTC/README.md

161 lines
9.7 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 机器人开发规划和进度跟踪
> 2023-11-30 机器人开发状态更新
>
> SLAM仓库http://logzhan.ticp.io:30000/logzhan/ORB-SLAM3-UESTC
>
> 定位参考系统仓库http://logzhan.ticp.io:30000/logzhan/LightHouse-UESTC
>
> 路径规划仓库http://logzhan.ticp.io:30000/logzhan/PathPlanning-UESTC
>
> 机器人硬件设计仓库http://logzhan.ticp.io:30000/logzhan/RobotDriver-UESTC
>
> 机器人控制APP仓库http://logzhan.ticp.io:30000/logzhan/RobotApp-UESTC
>
> 割草机器人硬件厂商https://cn.sunseekerpower.com/index.php?m=home&c=Lists&a=index&tid=81
## 一、 项目状态
##### 1.1.1 最新状态
- UWB融合IMU、ODOM定位。
- 双目测距、目标检测
- 全覆盖路径规划
- 碰撞传感器、超声波传感器接入:可以考虑扩展三个超声波传感器,用于提高障碍物分辨率
- 基于双目、碰撞、超声波的避障+全覆盖:目前割草机器人的避障识别能力需要进一步优化
- 手持标签划定范围:用户预先划定机器人的割草范围
- USB-HID通信利用USB-HID通信可以精确确定USB设备并开启提高设备的稳定性和扩展性。
##### 1.1.2 场景
##### 1.1.3 演示视频和图片内容
1. 小车全图路径规划 + 规避障碍物 * 3
2. 如果超声波传感器、碰撞检测传感器支持:则加入 未知障碍物突然阻碍(距离`10~30cm`)->小车避障、 行人突然挡住机器人侧面导致碰撞触发,触发机器人后退+避障
3. 记录小车的`UWB`轨迹、真值轨迹、里程计轨迹、融合轨迹, 轨迹能体现出机器人遇到障碍物避障
##### 1.1.4 其他工作:
- 林跃杭: & 和颜1) 银星车子前面超声波和摄像头模组安装的结构设计:银星的车子头部需要安装超声波和摄像头,同时需要塑料结构对传感器进行保护,防止小车在碰撞的时候导致传感器损坏。
- 马涛峰: 超声波传感器的调试与代码建议采用IIC协议与IMU共同连接然后读超声波传感器的寄存器地址。
- 瑞瑞整理转发目标检测的ROS节点的大致文档说明。整理推送代码到git
- 研一其他人UPbot的APP启动界面的设计以及串口和Pibot通信。
- 林跃航:整理碰撞转弯策略的代码和文档介绍
1. 林跃杭
1. `RK3588`上成功运行`NPU`加速的DEMO
2. 输出`RK3588`上普通模型转`rknn`模型文档(刘洪堃)
3. `DOING`: 把双目测距功能移植到`RK3588`
1. 问题分析:`VideoCapture`这个类始终无法链接。怀疑是链接的官方DEMO中库存在问题
2. 解决方案:参考`ORB-SLAM3`的链接样例,参考`cmake`实现最简单的读取视频`demo`然后再进行整合
2. 李瑞瑞
1. `RK3568`上双目测距DEMO运行
2. 熟悉双目摄像头标定流程
3. `DOING`: 解决现在双目摄像头标定精度不高的问题
1. 原因分析:怀疑因为虚拟机上读取视频太慢,图片存在畸形,影响标定的精度。正常误差`0.1mm`,我们`0.9mm`
2. 解决方案:在`windows`上用python读取视频进行标定
3. 马涛锋
1. 小车嵌入式文档整理
#### 1.1 进度说明(2023-12-15)
##### 1.1.1 小车融合定位的说明:
下图描述了小车采用`UWB`和`IMU`以及`ODM`的曲线对比。其中蓝色线表示`Lighthouse`的轨迹,红色线表示里程计的轨迹。黄色点表示的是`UWB`的轨迹点,紫色线表示多传感器融合后的结果。
<img src="http://logzhan.ticp.io:30000/logzhan/PictureHost/raw/branch/main/LocationFusion-UESTC/UWBInsOdomFusion/UWBInsODOM_Compare_231215.png" style="zoom: 67%;" />
近期的实验以及上图说明:
1. `Lighthouse`定位精度较高,各种现象符合预期。
2. 里程计在运行的早期精度很高,早期阶段远比`UWB`精度高。
3. 虽然现阶段数据看起来融合后的结果比单纯里程计差,实际上是因为里程计的运行时间较短位置还没有发散,所以融合后的结果看起来比单纯里程计差。如果长时间运行,融合的优势才会逐步体现。
4. 目前融合结果很大意义在于:目前我们的割草机器人初步拥有了一套完整的定位系统。相比单纯`UWB`定位和单纯里程计定位,融合后的结果结合了里程计的轨迹波动小的优点以及`UWB`长期运行不发散的问题。虽然对于部分同学毕业设计存在些许问题,但是对于**割草机器人项目推进来说,定位已经不是阻碍,可以继续推进后续的目标检测、目标测距、导航避障、基于避障的全图路径规划**。
##### 1.1.2 下一阶段要解决的问题
最近和许洪裱和卢瑞飞一同联调定位算法,发现项目有以下问题需要改进:
1. 文档支持: 目前研二同学较多使用的是`notion`记录笔记,这个用于个人和团队使用没有问题。但是对应的,我们需要在代码仓库中维护一套`markdown`的文档。目前我已经在仓库中写了很多文档样例,后续研二开发同学`clone`仓库,完善文档和提交。
1. 目前小车融合定位的节点如何启动的文档已经写了,但是全图路径规划的操作文档没有写。整个小车融合定位启动和路径规划的文档需要再梳理完善下(瑞飞较为熟悉操作步骤,跃杭协同瑞飞一起完善下)。
2. 小车的直线偏移问题:这个问题还是影响比较大的,直接会影响路径规划的准确性。怀疑小车的`PID`调节模块没有起到作用。解决思路:给定小车前进的命令,记录小车的左右轮速,如果上报的左右轮速不同说明小车底盘的`PID`调节没有生效,需要看看编译选项问题或者代码逻辑问题。(涛锋)
3. `ros_merge_test`代码问题:
1. `uwb_slam::System`功能无效,内部有死循环会占用`CPU`,需要删除模块
2. `read_sensor_data.cpp和.h` 功能无效,需要删除
3. `avoid.h`无效需要删除
4. 标准的注释格式需要完善, 无效代码需要整理,` ../RobotKernal-UESTC/src/branch/main/Code/RK3588/Robot_ROS_APP/src/ros_merge_test/src/main.cpp` 样例如下:
```c++
/******************** (C) COPYRIGHT 2023 UPBot **********************************
* File Name : main.cpp
* Current Version : V1.0
* Date of Issued : 2023.12.13 zhanli@review
* Comments : UPbot割草机器人项目传感器融合定位入口函数
********************************************************************************/
#include "../include/system.h"
#include "../include/uwb.h"
#include <iostream>
#include <ros/ros.h>
#include <thread>
#include "senddata.h"
/**---------------------------------------------------------------------
* Function : main
* Description : 多传感器融合定位的入口函数
* Date : 2023/12/13 zhanli@review
*---------------------------------------------------------------------**/
int main(int argc, char** argv)
```
4. 路径规划问题:
目前路径规划是依靠`ROS`运行的,但是存在如下的疑问:
4.1.`ros`内置的全图规划原理是什么?需要给出文档
4.2.`ros`内置的路径规划代码,能否抽离出来?或者自己掌握路径规划包的编写自己的路径规划包?
4.3.思考后续如何和目标检测的结果进行协同,观测到障碍物重新避障,给出思路文档
#### 1.1 进度说明(2023-12-01)
| 项目 | 状态和说明 | 负责人 | 状态 | 更新时间 |
| ------------------------------------------------- | ------------------------------------------------------------ | ------ | ------ | ---------- |
| ORB-SLAM3采用实时图像和IMU测试 | 目前购买的IMU数据存在问题IMU的Y轴数据存在异常。Linux下IMU的串口驱动程序不够完善。ORB-SLAM3没有实时接入摄像头和IMU的样例需要修改适配。 | 李瑞瑞 | 进行中 | 2023-11-30 |
| ORB-SLAM3在RK3588上运行 | 需要观测ORB-SLAM3(纯摄像头、摄像头+IMU)对RK3588的CPU的占用情况记录文档。 | — | | |
| 定位参考系统 | 采用HTC vive VR的激光定位系统用于评估机器人定位算法误差文档和资料[仓库路径](http://logzhan.ticp.io:30000/logzhan/LightHouse-UESTC) | 詹力 | 完成 | 2023-12-01 |
| 多平台可视化GUI系统(IOS、android、windows、linux) | 有GUI界面显示机器人的位置信息、检测边界信息、规划路径信息、电量信息、地图信息等。可以对机器人进行执行和控制。跨平台开发建议选择flutter. | — | | |
| 机器人硬件和结构搭建 | 已购买割草机器人包含充电底座和机器人主体12月2日发货地址高研院10楼。 | 詹力 | 完成 | |
## 1.2 项目里程碑
<img src="./Image/Status_1130.png" style="zoom:80%;" />
## 二、项目开发规划
![image-20231201124843447](./Image/Rebot-Develop-Graph.png)
## 三、机器人硬件搭建
### 3.1 机器人硬件
机器人的基础硬件采用[Sunseeker](https://cn.sunseekerpower.com/index.php?m=home&c=View&a=index&aid=186)的智能机器人。支持自动寻址充电和蓝牙&WIFI控制。目前已经找到公司的官网卖家说可以通过app控制机器人操作暂时还未联系厂商要求提供app。
### 3.1.1 外观和功能
<center>
<img src="./Image/机器人正面.png" alt="image-20231201181931675" style="zoom:80%;" >
</center>
<center>机器人正面和背面图</center>
![image-20231201182548239](./Image/机器人充电界面和充电底座.png)
<center>机器人充电界面和充电底座</center>