http://wiki.ros.org/urdf/Tutorials/Building%20a%20Movable%20Robot%20Model%20with%20URDF
当出现这种现象时,是因为joint_state_publisher没有启动。
在launch中添加joint_state_publisher 和robot_state_publisher会正常。
<launch>
<!-- these are the arguments you can pass this launch file, for example paused:=true
<arg name="model" default="04-materials.urdf"/>
-->
<arg name="paused" default="false"/>
<arg name="use_sim_time" default="true"/>
<arg name="gui" default="true"/>
<arg name="headless" default="false"/>
<arg name="debug" default="false"/>
<arg name="model" default="04-materials.urdf"/>
<!-- We resume the logic in empty_world.launch, changing only the name of the world to be launched -->
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="debug" value="$(arg debug)" />
<arg name="gui" value="$(arg gui)" />
<arg name="paused" value="$(arg paused)"/>
<arg name="use_sim_time" value="$(arg use_sim_time)"/>
<arg name="headless" value="$(arg headless)"/>
</include>
<param name="robot_description" command="$(find xacro)/xacro --inorder $(arg model)" />
<!-- push robot_description
<param name="robot_description" command="$(find xacro)/xacro.py $(arg model)" />
to factory and spawn robot in gazebo -->
<node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model"
args="-z 1.0 -unpause -urdf -model robot -param robot_description" respawn="false" output="screen" />
<node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher">
<param name="publish_frequency" type="double" value="30.0" />
</node>
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
<node name="my_controller_spawner" pkg="controller_manager" type="spawner" respawn="false"
output="screen" args="my_controller_name"/>
</launch>
<?xml version="1.0"?>
<robot name="materials" xmlns:xacro="http://ros.org/wiki/xacro">
<xacro:macro name="default_inertial" params="mass">
<inertial>
<mass value="${mass}" />
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0" />
</inertial>
</xacro:macro>
<material name="blue">
<color rgba="0 0 0.8 1"/>
</material>
<material name="white">
<color rgba="1 1 1 1"/>
</material>
<link name="base_link">
<visual>
<geometry>
<cylinder length="0.1" radius="0.6"/>
</geometry>
<material name="blue"/>
</visual>
<collision>
<geometry>
<cylinder length="0.1" radius="0.6"/>
</geometry>
</collision>
<xacro:default_inertial mass="10"/>
</link>
<link name="right_leg">
<visual>
<geometry>
<cylinder length="0.05" radius="0.2"/>
</geometry>
<origin rpy="1.5707963267948966 0 0" xyz="0 -0 0"/>
<material name="white"/>
</visual>
<collision>
<geometry>
<cylinder length="0.05" radius="0.2"/>
</geometry>
</collision>
<xacro:default_inertial mass="10"/>
</link>
<joint name="base_to_right_leg" type="continuous">
<parent link="base_link"/>
<child link="right_leg"/>
<axis xyz="0 0 1" />
<origin rpy="0 0 0" xyz="0 -0.6 0"/>
</joint>
<link name="left_leg">
<visual>
<geometry>
<cylinder length="0.05" radius="0.2"/>
</geometry>
<origin rpy="1.5707963267948966 0 0" xyz="0 0. 0"/>
<material name="white"/>
</visual>
<collision>
<geometry>
<cylinder length="0.05" radius="0.2"/>
</geometry>
</collision>
<xacro:default_inertial mass="10"/>
</link>
<gazebo reference="right_leg">
<material>Gazebo/Orange</material>
</gazebo>
<joint name="base_to_left_leg" type="continuous">
<parent link="base_link"/>
<child link="left_leg"/>
<axis xyz="0 0 1" />
<origin rpy="0 0 0" xyz="0 0.6 0"/>
</joint>
<!-- stereo camera -->
<gazebo reference="base_link">
<sensor type="multicamera" name="stereocamera">
<always_on>true</always_on>
<update_rate>10</update_rate>
<visualize>false</visualize>
<camera name="left">
<pose>0 0 0 0 0 0</pose>
<horizontal_fov>1.047</horizontal_fov>
<image>
<width>320</width>
<height>240</height>
</image>
<clip>
<near>0.1</near>
<far>100</far>
</clip>
</camera>
<camera name="right">
<pose>0 -0.07 0 0 0 0</pose>
<horizontal_fov>1.047</horizontal_fov>
<image>
<width>320</width>
<height>240</height>
</image>
<clip>
<near>0.1</near>
<far>100</far>
</clip>
</camera>
<plugin name="stereo_camera_controller" filename="libgazebo_ros_multicamera.so">
<cameraName>stereocamera</cameraName>
<alwaysOn>true</alwaysOn>
<updateRate>10</updateRate>
<cameraName>stereocamera</cameraName>
<imageTopicName>image_raw</imageTopicName>
<cameraInfoTopicName>camera_info</cameraInfoTopicName>
<frameName>camera_link_optical</frameName>
<baseline>0.07</baseline>
<distortion_k1>0.0</distortion_k1>
<distortion_k2>0.0</distortion_k2>
<distortion_k3>0.0</distortion_k3>
<distortion_t1>0.0</distortion_t1>
<distortion_t2>0.0</distortion_t2>
</plugin>
</sensor>
</gazebo>
<transmission name="base_to_left_leg_joint_trans">
<type>transmission_interface/SimpleTransmission</type>
<joint name="base_to_left_legjoint"/>
<actuator name="base_to_left_leg_joint_motor">
<hardwareInterface>PositionJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="base_to_right_leg_joint_trans">
<type>transmission_interface/SimpleTransmission</type>
<joint name="base_to_right_legjoint"/>
<actuator name="base_to_right_leg_joint_motor">
<hardwareInterface>PositionJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<gazebo>
<plugin filename="libgazebo_ros_diff_drive.so" name="differential_drive_controller_front">
<rosDebugLevel>Debug</rosDebugLevel>
<publishWheelTF>True</publishWheelTF>
<publishTf>1</publishTf>
<publishWheelJointState>true</publishWheelJointState>
<alwaysOn>true</alwaysOn>
<updateRate>100.0</updateRate>
<leftJoint>base_to_left_leg</leftJoint>
<rightJoint>base_to_right_leg</rightJoint>
<wheelSeparation>0.3</wheelSeparation>
<wheelDiameter>0.08</wheelDiameter>
<broadcastTF>1</broadcastTF>
<wheelTorque>30</wheelTorque>
<wheelAcceleration>1.8</wheelAcceleration>
<commandTopic>cmd_vel</commandTopic>
<odometryFrame>odom</odometryFrame>
<odometryTopic>odom</odometryTopic>
<robotBaseFrame>base_link</robotBaseFrame>
</plugin>
</gazebo>
<gazebo>
<plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so">
<robotNamespace>/</robotNamespace>
</plugin>
</gazebo>
</robot>
正常了。