项目场景:
turtlebot3配置过程中的问题
在turtlebot3配置完成,快要结束实现自主导航阶段,开终端运行gazebo和Rviz进行小乌龟导航时,出现下面问题。
问题描述
执行launch文件时候报错:
cd tb3_ws/
source install/setup.bash
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
新开一个终端:
cd tb3_ws/src/wk_navigation2/
source install/setup.bash
ros2 launch wk_navigation2 navigation2.launch.py use_sim_time:=True
执行第二个命令时候出现报错信息:
[INFO] [launch]: All log files can be found below /home/wk/.ros/log/2024-01-02-14-37-10-241741-wk-virtual-machine-13910
[INFO] [launch]: Default logging verbosity is set to INFO
[ERROR] [launch]: Caught exception in launch (see debug for traceback): ReplaceString.__init__()
默认日志记录详细程度设置为 INFO
[错误][launch]:启动时捕获异常(请参阅调试进行回溯):ReplaceString.__init__() 得到一个意外的关键字参数“condition”
原因分析:
下面是我修正bug时候分析过程:
这个问题找了不少的解决方法
1.首先想到的是路径的问题,然后发现不管是进入的wk_navigation2还是只是在工作空间tb3_ws下面,都是报这个错误。
2.想是不是没有编译包的问题,就执行下面的几行
cd tb3_ws/src/wk_navigation2/
colcon build
发现编译通过,并没有什么问题。但是当再次执行ros launch时还是报错。
3.想到是不是工作空间的问题,就新建了一个工作空间,并将之前的步骤都执行了一遍,发现,运行到上面这一步的时候,还是会报错(把之前所有的包都放进去)。
4.想到看啊可能到底是哪一步的时候出现了错误,一直执行launch程序,直到执行完下面的都没有问题。
仿真环境命令搭建
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
创建遥控键盘命令
ros2 run turtlebot3_teleop teleop_keyboard
启动cartographer建图算法
ros2 launch turtlebot3_cartographer cartographer.launch.py use_sim_time:=True
接下来便是创建工作空间,编写实际运行的launch文件,从这里找问题。
测试navigation2导航包是否安装成功
如果是源码编译请先source下工作空间后再使用下面指令查看是否安装成功;
ros2 pkg list | grep navigation2
能看到下面的结果即可
navigation2
发现并没有什么问题,接下来执行编译的语句。
cd tb3_ws
colcon build --packages-up-to wk_navigation2
发现报错的更加离谱,便果断放弃,重新另寻他路。
c++: fatal error: 已杀死 signal terminated program cc1plus
compilation terminated.
gmake[2]: *** [CMakeFiles/nav2_rviz_plugins.dir/build.make:104:CMakeFiles/nav2_rviz_plugins.dir/src/nav2_panel.cpp.o] 错误 1
gmake[1]: *** [CMakeFiles/Makefile2:138:CMakeFiles/nav2_rviz_plugins.dir/all] 错误 2
gmake: *** [Makefile:146:all] 错误 2
---
Failed <<< nav2_rviz_plugins [1min 9s, exited with code 2]
Aborted <<< nav2_behavior_tree [5min 29s]
Aborted <<< nav2_costmap_2d [5min 2s]
Summary: 11 packages finished [7min 32s]
1 package failed: nav2_rviz_plugins
2 packages aborted: nav2_behavior_tree nav2_costmap_2d
2 packages had stderr output: nav2_rviz_plugins nav2_simple_commander
18 packages not processed
5.最后再重新尝试一下,新建包,按照步骤一步一步过来,并且不把之前加入的包都加进去,最后错误解决。
解决方案:
删掉navigation2包
把原先src里面的navigation2包删掉,重新执行便好了
原因:我猜测是因为在整个home里面已经存在我下载的navigation2源码包,但是在我的工作空间下,我又把一个完好的能见到代码的navigation2包放置到我的turtlebot3_ws里面,导致了冲突。