问题来源
最近在跟着古月居的ROS教学视频学习,在做机器人仿真运行launch文件的时候出现了如下报错
ERROR: cannot launch node of type [robot_state_publisher/state_publisher]: Cannot locate node of type [state_publisher] in package [robot_state_publisher]. Make sure file exists in package path and permission is set to executable (chmod +x)
问题分析
大概的意思是说没有在依赖的包里面找到[state_publisher] 这个类型的节点,于是找到launch文件下的相关语句
1 <!-- 运行robot_state_publisher节点,发布tf --> 2 <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
将state_publisher改成robot_state_publisher运行成功。
再次发现问题
我发现我运行的rviz没有弹出joint_state_publisher的小插件,没有像他视频里一样有一个小框框弹出来。
问题分析
查询到ROS WIKI【http://wiki.ros.org/joint_state_publisher】当中有这样一段描述:
截至 2020 年初,GUI 功能已从主要的Joint_state_publisher包中拆分为自己的包Joint_state_publisher_gui。老use_gui参数joint_state_publisher依然兑现,但推出joint_state_publisher_gui如果已安装并可用。对于在此更改之前转换的包,应将joint_state_publisher_gui作为<exec_depend>添加到 package.xml 并且应更新启动文件以启动joint_state_publisher_gui而不是使用带有use_gui参数的joint_state_publisher。
解决问题
将package.xml文件下的语句更改为:
1 <exec_depend>urdf</exec_depend> 2 <exec_depend>xacro</exec_depend> 3 <exec_depend>joint_state_publisher_gui</exec_depend>
将launch文件下的语句更改为:
1 <!-- 运行joint_state_publisher节点,发布机器人的关节状态 --> 2 <node name="joint_state_publisher" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" />