# RTK循迹
## 目录
* 功能介绍
* 传感器介绍
* 实现原理
## 功能介绍
RTK循迹是机器人循着用户提前录好的轨迹自主行走,行走过程中机器人能够自动躲避障碍物,自动规划路线,达到目标点。
RTK循迹要求配置好RTK接收机,然后控制车端完成循迹。
RTK接收机的数据与里程计的数据融合定位,得到M1在环境中的坐标点,控制M1运动,边走边记录当前坐标点的位置,将这些坐标点记录为文件保存下来,得到路径文件。
在开始循迹的时候,程序加载路径文件,RTK接收机定位数据与里程计融合定位匹配路径数据,机器人按照指定路径行走。
## 传感器介绍
RTK循迹 用到的传感器有:
* 单线激光雷达x2,安装在M1车内前后底部
* RTK接收机,安装在M1套件内
* 编码器/轮速里程计x2,安装在车体内部前侧
* 电机x2,安装在车体内部中间位置
![](imgs/rtk_intro_1.png)
## 实现原理
![](imgs/rtk_intro_2.png)
| 步骤 | 输入数据 | 操作 | 输出数据 | 使用ROS包 |
|-----|------------------|--------------------------------------------|----------------|-------------------------------------------------------------------------------------------------------|
| 1 | | RTK接收机 | 定位数据 | marvelmind驱动包(catkin_ws\src\driver\location\al_rtk_ros_driver) |
| 2 | 里程计数据 定位数据 | 定位融合 | 当前机器人在环境中的位姿 | location_fusion(catkin_ws\src\navigation\location_fusion) |
| 3 | 当前机器人位姿 | 控制机器人运动,录制路径 | 路径数据 | path_server(catkin_ws\src\navigation\path_server) |
| 4 | 路径数据 | 读取录制的路径数据,执行循迹操作 | 目标机器人位姿 | path_server(catkin_ws\src\navigation\path_server) [move_base](http://wiki.ros.org/move_base/) |
| 5 | 当前机器人位姿 目标机器人位姿 | 根据机器人当前位姿,进行全局规划路线 | 路径数据(初步预估导航路线) | [global_planner(dijkstra) ](http://wiki.ros.org/global_planner) |
| 6 | 路径数据 前雷达数据 后雷达数据 | 根据规划路径开始导航,进行过程中随着实际环境、障碍物变化,进行局部路径规划,实时避障 | 局部路径规划 避障 | [costmap_2d ](http://wiki.ros.org/cost_map)[teb_local_planner](http://wiki.ros.org/teb_local_planner) |
| 7 | 速度信息 /cmd_vel | 向底层发送速度命令 | | [move_base](http://wiki.ros.org/move_base/) |
定位循迹 launch配置示例
```
```