要让您的机器人在Rviz中可见,您必须运行被调用的节点 robot_state_publisher 。 该节点解析给定的URDF(xarco)文件并发布参数机器人描述中给出的机器人帧,还为RViz加载模型提供了一些信息。
Clearpath与赫斯基提供了很好的例子: https://github.com/husky/husky/blob/indigo-devel/husky_description/launch/description.launch
只需编写一个这样的启动文件:
<launch> <arg name="model" default="$(find your_package_name)/path_to_your_urdf/your_urdf.urdf"/> <arg name="gui" default="true"/> <param name="robot_description" command="$(find xacro)/xacro.py $(arg model)" /> <param name="use_gui" value="$(arg gui)"/> <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" /> <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"/> <node name="rviz" pkg="rviz" type="rviz" args="-d $(find urdf_tutorial)/urdf.rviz" required="true"/> </launch>
建议使用rviz节点取消注释该部分以进行调试,这样您就不必总是重新启动rviz。相反,使用 rosrun rviz rviz 推出Rviz(确保roscore正在运行!)
rosrun rviz rviz
joint_state_publisher让你通过GUI控制机器人关节,而robot_state_publisher实际上将joint_states发布到/ tf,允许Rviz为你的机器人获得正确的转换。
看到: ROS Wiki:robot_state_publisher