循迹导航
更新时间:2019-11-28
范例程序app_tracking和guide_receiver配套使用可以实现循迹导航功能(按录制地图时的路线行走),由app_tracking进行轨迹存储、调用,guide_receiver负责接收导航信号,源代码均提供在程序包中。
- 轨迹存储命令与记录地图相同:
./app_tracking -sensor_type XP2 -cam_calib_path xxxxx.yaml -pb_save /tmp/room.pb
- 如果需要在轨迹中存储路径点,可在对应的位置按下字母键
A
、B
、C
、D
、E
(最多5个,用于从任意地点走向对应路径点),若同一个路径点的字母被第二次按到,将会开启路径闭合,认为第一次按下的位置和第二次按下的位置处于同一个地点。强制路径闭合有利于帮助建立更准确的轨迹地图。(若不在录制过程中设置路径点,则之后导航时系统默认走完整个轨迹) - 录制完轨迹后,按ESC键退出。
- 轨迹导航的使用可分为两种:
- 使用
guide_receiver
通过UDP接收导航信息 - 使用
app_tracking
直接对步科Dilili底盘控制导航
使用guide_receiver
进行导航
- 开启另一个命令行窗口,运行
./guide_receiver
guide_receiver
是命令行的接收客户端(也是利用traker.h里面的函数实现),通过UDP传输的方式从app_tracking处接收导航信息,并打印在命令行窗口中。guide_receiver
用于接收UDP协议的默认端口是8889,IP地址没有限制,收到的信息格式为: guide message from [IP]: [PORT][a, b, c]- A为当前位置到下一个特征点的距离
- B为导航指示的偏离角度(从-180度到+180度,左负右正,正中间为0度)
- C为导航状态(0为失败,1为正确,2为停止,3为到达目的地结束)。
- 对应的发送端app_tracking命令如下:
./app_tracking -sensor_type XP2 -cam_calib_path xxxxx.yaml -pb_load /tmp/room.pb -path_follower walk
- 程序启动后,若录制地图时没有设置路径点,则程序会自动进行定位,并按照预设路径进行导航,若为闭合轨迹,则会无限循环直至退出。若录制地图时设置过路径点,则需先按一下所需要行走的路径点对应字母,系统会给出导航,行走至对应点后会进入待机状态。
使用app_tracking
直接控制步科底盘
- 步科Dilili智慧桌是一款采用双轮驱动的实验机器人平台。其控制系统已经集成到了程序包中。
- 首先将步科底盘控制USB线连接到PC端,修改读写权限:
sudo chmod a+rw /dev/ttyUSB0
- 然后启动
app_tracking
程序:
./app_tracking -sensor_type XP2 -cam_calib_path xxxxx.yaml -pb_load /tmp/room.pb -path_follower robot
- 程序启动后,若录制地图时没有设置路径点,则程序会自动进行定位,机器人底盘会按照预设路径行走,若为闭合轨迹,则会无限循环直至退出。若录制地图时设置过路径点,则需先按一下所需要行走的路径点对应字母,机器人底盘会按照导航行走,行走至对应点后会进入待机状态。
- 机器人在行走的过程中,会启动避障模式,即如果有物体进入视觉模组前方0.75米范围内,则机器人会停止行走并停止特征点跟踪以防SLAM结果漂移。