不再需要遥控,让赛车自己思考路径。
有了地图之后,赛车就能实现自主飞行... 喔不对,是自主行驶。 导航主要解决两个问题:
在启动底盘之后,我们要唤醒赛车的“导航大脑”。
# 在赛车终端输入 roslaunch tianracer_navigation tianracer_teb_nav.launch
TEB 规划器:这是赛车默认使用的“老司机”算法,它非常擅长处理阿克曼转向(像真车一样不能原地转圈)的路径优化。
同样地,我们在电脑上打开 Rviz 来指挥赛车。
# 在你的个人 PC 终端输入 roslaunch tianracer_rviz view_teb_planner.launch
如果赛车在屏幕上的位置和真实位置不对:
注意:如果小车没动,请检查遥控器是否还处于控制状态。赛车非常绅士,遥控器拥有最高优先级。
在实际环境中按预设路径点自动巡航:
roslaunch tianracer_bringup tianracer_bringup.launch
roslaunch tianracer_navigation tianracer_teb_nav.launch
roslaunch tianracer_navigation tianracer_multi_goal.launch
通过修改 tianracer_multi_goal.launch 中的列表:
tianracer_multi_goal.launch
goalListX
[1.0, 2.0, 3.0]
goalListY
[0.5, 1.5, 0.5]
优点:支持剩余路径点感知,发布更灵活。
先按常规步骤启动真车和导航:
# 1. 启动真车 roslaunch tianracer_bringup tianracer_bringup.launch # 2. 启动导航 (需指定地图) # xxx 为保存地图时的文件名称 roslaunch tianracer_navigation tianracer_teb_nav.launch use_rviz:=true map_file:=xxx
# 设置路径点保存文件名为test_points roslaunch tianracer_gazebo click_waypoint.launch filename:=test_points
2D Nav Goal
Ctrl + C
tianracer_gazebo/scripts/waypoint_race/test_points.yaml
使用环境变量告知程序目标点文件位置:
# 设置地图环境标识,使得multi_goals_rc3.py能够正确读取test_points.yaml文件, 注意不要拼写错误 export TIANRACER_WORLD=test # 运行控制脚本 (__ns 指定机器人名字空间) rosrun tianracer_gazebo multi_goals_rc3.py __ns:=tianracer
如果在导航启动时没有自动开启 Rviz,或者不小心关闭了,可以手动调出:
roslaunch tianracer_rviz view_teb_planner.launch
建议在单独终端运行此命令以保持清晰的日志输出。
说明:该策略会根据赛车距离当前目标点的距离自动发布下一个点。