当自己在特定工作空间内安装好ur5的相关包后,进行仿真时出现下面的报错:
解决方法:修改source路径
source /opt/ros/indigo/setup.bash
roslaunch ur_gazebo ur5.launch
即可正常打开gazebo
至于无法在原工作空间source的原因,还未研究明白,等待继续更新。
3.30更新
之前的解决办法并没有解决根本问题,只是变成调用原本功能包的ur5模型。
我是在修改了该功能包ur_description/urdf/ur5_urdf.xacro中的模型后(简单的加一些障碍物),发现按照上述方法并没有变化,因此意识到之前并未解决根本问题。
于是我又重新看了报错。由于我安装的是ros_indigo。之前的根据之前的经验,我猜测是因为版本问题导致的。故查看ur_gazebo下的ur5.launch文件。但是发现并没有调用报错的中的hardware_interface/PositionJointInterface
查看ur5.launch时发现它打开了ur_description/launch/ur5_upload.launch文件。于是继续查看该文件。最终发现问题所在:
<?xml version="1.0"?>
<launch>
<arg name="limited" default="false" doc="If true, limits joint range [-PI, PI] on all joints." />
<arg name="transmission_hw_interface" default="hardware_interface/PositionJointInterface" />
<param command="$(find xacro)/xacro --inorder '$(find ur_description)/urdf/ur5_robot.urdf.xacro' transmission_hw_interface:=$(arg transmission_hw_interface)" name="robot_description" unless="$(arg limited)" />
<param if="$(arg limited)" name="robot_description" command="$(find xacro)/xacro --inorder '$(find ur_description)/urdf/ur5_joint_limited_robot.urdf.xacro' transmission_hw_interface:=$(arg transmission_hw_interface)" />
</launch>
将其中的hardware_interface/PositionJointInterface改成
PositionJointInterface。
即去掉hardware_interface即可
整个launch文件变为
<?xml version="1.0"?>
<launch>
<arg name="limited" default="false" doc="If true, limits joint range [-PI, PI] on all joints." />
<arg name="transmission_hw_interface" default="PositionJointInterface" />
<param command="$(find xacro)/xacro --inorder '$(find ur_description)/urdf/ur5_robot.urdf.xacro' transmission_hw_interface:=$(arg transmission_hw_interface)" name="robot_description" unless="$(arg limited)" />
<param if="$(arg limited)" name="robot_description" command="$(find xacro)/xacro --inorder '$(find ur_description)/urdf/ur5_joint_limited_robot.urdf.xacro' transmission_hw_interface:=$(arg transmission_hw_interface)" />
</launch>
此时在运行
source devel/setup.bash
roslaunch ur_gazebo ur5.launch
即可打开该功能包下的gazebo模拟器,如图