不知道各位使用Kinetic和Melodic的小伙伴最近有木有遇到这样的一个问题:之前好端端的一套代码,在重装了Ubuntu和ROS之后,突然运行报错了:
是的,你没看错,确实是黑底红字的error。到底咋回事,下面看看官方的说明。
一、官方说明
关于这个问题的最早消息,是在github上ROS源码项目的Pull requests里,原文网址:
https://github.com/ros/joint_state_publisher/pull/31
大致意思就是,原来的joint_state_publisher功能包将会分裂成两个不同的包:
其中一个,名字还是joint_state_publisher,只是不带GUI界面。
另一个,名字变成joint_state_publisher_gui,带有GUI界面。
这是什么意思呢?这就要从joint_state_publisher的用法讲起:
我们知道,在ROS里描述机器人模型,使用的是urdf文件。在运行程序的launch文件中,我们会将这个urdf文件名赋值到到环境变量robot_description。然后再启动joint_state_publisher包里的joint_state_publisher节点,它会自动解析robot_description里的关节(joint)名称和角度,发送到主题sensor_msgs/JointState里。这样我们就能在Rviz里看到机器人的关节处于一个初始的弯曲角度。
在很多的ROS教程的urdf的章节,会特别提到use_gui这个bool类型变量。use_gui的默认值是false,这时候运行的Rviz,只会显示机器人的模型和关节初始角度。当use_gui被赋值为true的时候,除了Rviz会显示机器人的模型和关节初始角度,还会额外弹出一个小窗口,里面有一系列调节数值的滑杆,每个滑杆都和urdf里的关节角度值有所对应,这样就能通过拖动这个窗口里的滑杆,控制Rviz里的机器人模型的关节角度。这个功能在标定一些传感器参数(比如Kinect立体相机)和构建机器人urdf模型的时候常常会用到。
按照官方的说法,将会去除使用use_gui来决定joint_state_publisher运行状态的机制,直接将joint_state_publisher分拆成带滑杆窗口和不带滑杆窗口的两个不同功能包。这么做的理由是可以保持joint_state_publisher处于一个依赖比较少的轻松状态(毕竟QtGUI依赖库确实太大了)。
二、具体的影响
1. 如果只是使用joint_state_publisher发布机器人关节的默认角度,那么恭喜你,这次的分裂对你没有影响。
2. 如果在使用joint_state_publisher的同时,还将use_gui赋值为true,那么在新的版本里,会得到如下error提示:
程序报错退出,Rviz无法启动。
3. 在我们的测试当中,发现似乎只有在2020年1月之后新安装的ROS系统才会受到这个影响。在2020年1月之前安装的ROS系统,无论Kinetic还是Melodic,都不会出现上述问题,但是1月份之后重装系统,就会出现这个问题。说明这里面还存在版本同步的问题,具备一定的隐蔽性。
三、解决方法
1. 如果现在已安装的ROS版本没有出现上述问题,可以暂不理会。如果已经遇到关于joint_state_publisher的运行error,请按照如下步骤进行调整。
2. 首先是安装新的joint_state_publisher_gui功能包。
如果是Kinetic版本,运行如下指令:
|
sudo apt update sudo apt install ros-kinetic-joint-state-publisher-gui |
如果是Melodic版本,运行如下指令:
|
sudo apt update sudo apt install ros-melodic-joint-state-publisher-gui |
3. 修改launch文件,将里面的joint_state_publisher修改为joint_state_publisher_gui。
4. 重新编译和运行新程序。
更多产品了解
欢迎扫码加入云巴巴企业数字化交流服务群
产品交流、问题咨询、专业测评
都在这里!



抖音算法推流核心指标是互动率而非GMV。天志互联直播抽盒系统从订单秒级上屏、一键拆盒、氛围引爆三个维度拉高互动率,驱动算法推流的正循环。

从"换皮联名"到"游戏化体验共创"——拆解彩棠敦煌联名案例的壁画修复小游戏设计逻辑、奶茶品牌联名翻车教训和中小品牌三条低成本高ROI的IP联名路径。

低代码时代品牌游戏化运营体系的"乐高式"搭建指南——从选模板、搭积分闭环、数据迭代到多活动并行管理和团队交接的全流程实操方法。

一个快消品牌用游戏化方法三个月救活240个死群的完整复盘——从签到排行榜、互动任务、习惯养成到赛季制防疲劳的六周运营节奏拆解。

游戏化社交裂变的三个底线原则深度拆解——让转发不像广告、让奖品有炫耀价值、给用户不转发的自由,加3%超级用户识别策略和三个常见翻车点避坑指南。