不知道各位使用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. 重新编译和运行新程序。
更多产品了解
欢迎扫码加入云巴巴企业数字化交流服务群
产品交流、问题咨询、专业测评
都在这里!
1月16日,2025腾讯产业合作伙伴大会在三亚召开。云巴巴,荣膺“2024腾讯云卓越合作伙伴奖—星云奖”和“2024腾讯云AI产品突出贡献奖”双项大奖
本文将从技术先进性、场景适配性和成本效益三大核心维度,对蓝巨人WCS、畅捷通、商派、富勒、SAP五大系统进行专业对比分析,为企业选型决策提供专业参考。
智慧医疗管理系统推荐!漪云诊所管理系统精准分诊,看病效率翻倍!
游戏安全系统怎么选?腾讯ACE如何保障游戏安全?开发者必收藏!
随着AI大模型在业务中的渗透,企业对知识库的认知和需求,正在发生巨大变化。知识库本身对于企业级AI的价值,也开始越发凸显。