目标
- 了解自主导航的实现方法
- 用实验五里建好的地图,实现自主导航功能
内容
1、机器人自主导航的实现
首先确保机器人已经回到实验二中设定的起点,锁定机器人遥控器。在香橙派终端打开navigation文件夹,同样可以输入
ls
查看navigation文件夹下的文件。
依次运行run_navi.sh、start_mavros.sh和set_ekf_origin.sh脚本,并依次检查弹终端窗口,检查每个终端中的节点是否正常启动。
输入
./run_navi.sh
启动重定位和导航算法。
输入
./start_mavros.sh
启动飞行控制单元。飞控部分负责处理传感器数据,计算机器人的姿态和位置,并生成控制信号来调整执行器的动作,从而实现对机器人的控制。
输入
./set_ekf_origin.sh
为机器人设置原点,为了与实验二的建图保持一致,选取大黑楼的地理坐标为原点。
将遥控器右上方拨杆拨到左端的自动模式,机器人会按照实验二中建好的地图运动。由于纯跟踪轨迹跟踪控制算法的设定,可以选择两种运动模式。
第一,执行避障功能。进入pure_persuit文件夹下的launch文件夹,打开pure_persuit.py文件,修改避障函数is_avoid_obstacle中的参数为true,并同时修改local_planner文件夹下的local_planner.py文件,同样修改避障函数is_avoid_obstacle中的参数为true。在完成以上两处修改后,机器人在进行导航运动时将执行避障功能。执行避障功能时,当机器人前方出现障碍物,机器人将自动绕过障碍物并重新回到原路线继续行驶。
第二,不执行避障功能。当pure_persuit.py和local_planner.py文件中函数is_avoid_obstacle的参数均设置为为false时,机器人在进行导航运动时不执行避障功能。机器人运动的过程中, 每前进五米就会暂停五秒。当机器人前方出现障碍物时,机器人会停止前进,障碍物消失后,机器人继续按照地图运动。
当机器人返回起点,停止运动,可以在终端输入输入
./kill.sh
关闭全部进程。
2、rviz可视化结果
导航结束后,会自动生成俩个文件夹,分别保存里程计的数据和实验数据。进入navigation文件夹,进入data文件夹下的bags文件夹,输入
ls
可以查看当前文件夹下保存的包名。这里将存放里程计数据的包命名为navigation01,将存放实验数据的包命名为navigation02。
首先查看里程计数据的可视化结果。打开香橙派终端,输入
rviz2
进入rviz可视化界面。
在bags文件夹下打开终端,输入
ros2 bag play navigation01/
将navigation01包中的消息载入到rviz中。
在rviz界面中,点击Add——By topic—— 选择里程计数据话题 —— 点击OK。
将rviz中的Fixed_Frame参数修改为odom。将shape参数修改为Axes显示坐标系。将keep参数修改为100000显示机器人运动的整个轨迹。
等待一段时间后,可以显示机器人导航运动的完整轨迹。这里显示的是在避障模式下机器人的轨迹,从图中可以看到机器人的轨迹出现一定的弯曲,表示在该位置机器人绕过障碍物并返回原路线。
接着查看导航实验数据的可视化结果。打开终端,输入
./run_navi_replay.sh
运行脚本,rviz窗口会自动弹出。
进入navigation文件夹,进入data文件夹下的bags文件夹,在bags文件夹下打开一个新的终端,输入
ros2 bag play navigation02/
将navigation02包中的消息载入到rviz中。这时可以看到rviz界面中出现一条蓝色的线,这条线代表建图过程录入的机器人的轨迹。
机器人前方的白线代表机器人可以选择的运动轨迹,当前方蓝色的轨迹上出现障碍物,机器人可以选择白线的轨迹进行避障。
图中的红线代表机器人的实际运动轨迹,由可视化结果可以看出,机器人的实际运动轨迹与设定的轨迹基本相符。
最后编辑:hyx 更新时间:2024-09-26 15:07