ROS2 Caught exception in launch:ReplaceString.__init__got an unexpected keyword argument ‘condition“

项目场景:

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里面,导致了冲突。


博主接下来有时间的话将更新一下在ROS1和ROS2中如何分别创建并安装,实现turtlebot3小机器人的自主导航

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值