1. 手动录制路线
# 启动仿真环境节点
roslaunch turtlebot3_gazebo turtlebot3_world.launch
# 启动导航节点
roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml
# 启动键盘控制节点
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
# 启动录制路径节点
rosrun path_server record_path_node
# 启动开始录制服务
rosservice call /start_record_path "path_name: 'my_path'"
然后用键盘控制机器人运动,就可以在/path_server/path_data
文件夹下生成录制路径文件。
2. 固定路线导航
# 启动仿真环境节点
roslaunch turtlebot3_gazebo turtlebot3_world.launch
# 启动导航节点
roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml
# 启动加载路径节点
rosrun path_server load_path_node
# 启动加载路径文件服务
rosservice call /load_path_server "path_name: 'my_path'"
1、加载完路经后,机器人不会立刻运动,需要在rviz上发布任意一个导航点,机器人即可沿固定路线运动。
2、加载路径文件时,也可以在rviz上订阅路径,话题名为:recored_path
,启动加载服务即可在rviz上显示固定路线。
3、如果机器人的实际起始点不是固定路线的起始点,机器人会通过局部规划运动到固定路线的起始点,再发布任意一个导航点(不同于第一圈的发送任务点,否则认为已经到达了),机器人会从起始点沿固定路线运动。
4、如果固定路线的末尾和起始点没有重合,末尾点会和起始点直线连接,机器人运动到固定路线的末尾后,再沿直线运动到起始点停止,等待下一次的循环任务。(这里面似乎起始点与末尾点距离较长,下一次任务需要重新发布任务点,如果起始点和末尾点距离较近,机器人可以自动循环导航任务。原因可能是距离较近,机器人运动过程中大概率会触发到固定路线上的点,机器人认为是又发布了一次循环导航认为,否则机器人到达起始点后就停止,等待手动发布下一次循环导航任务。)
5、机器人运动循环一圈后,需要重新给任意任务点,触发其运动信号,使其沿固定路线运动。