ROS控制机械臂【1】:urdf模型(非.xacro)导入gazebo过程及注意事项

文章目录

    • 1. 生成gazebo功能包
    • 2. 修改SolidWorks生成的urdf文件
    • 3. 添加launch文件
    • 4. 测试

本笔记包含四部分

  1. urdf模型导入gazebo
  2. ros_control与实现
  3. 使用Qt Creator加载Rviz显示机械臂模型
  4. 使用ros+rviz控制真实的机械臂

这篇笔记主要记录urdf模型导入gazebo的过程对应下图绿框的部分。
ROS控制机械臂【1】:urdf模型(非.xacro)导入gazebo过程及注意事项_第1张图片

1. 生成gazebo功能包

cd ~/catkin_ws/src
catkin_create_pkg myrobot_gazebo std_msgs rospy roscpp
cd myrobot_gazebo 
mkdir launch
mkdir config

2. 修改SolidWorks生成的urdf文件

想要在gazebo中实现机械臂仿真,需要在已生成的urdf模型里面添加传动装置(transmission),即需要为每个joint添加驱动,链接执行器和关节,从而让它在真实的物理环境中转动起来;同时要为添加控制插件,它会自动解析transmission标签,装载合适的硬件接口和controller manager。具体代码如下:

<!--add transmission for every joint-->
<transmission name="trans_joint1">
        <type>transmission_interface/SimpleTransmission</type>
        <joint name="joint1">
            <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
        </joint>
        <actuator name="joint1_motor">
            <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
            <mechanicalReduction>1</mechanicalReduction>
        </actuator>
    </transmission>
<!-- add one gazebo plugin-->
    <gazebo>
        <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so">
            <robotNamespace>/</robotNamespace>
            <robotSimType>gazebo_ros_control/DefaultRobotHWSim</robotSimType>
            <legacyModeNS>true</legacyModeNS>
        </plugin>
    </gazebo>

固定到世界坐标系(非常重要,如果你的机器人是以悬空的状态摆放,它在gazebo模型中会因为重力立马掉落到地上)

  <!-- Used for fixing robot to Gazebo 'base_link' -->
  <link name="world"/>
  <joint name="fixed" type="fixed">
    <parent link="world"/>
    <child link="based_linkl"/>
  </joint>

修改urdf在gazebo中显示的颜色(对应.STL文件格式):


     Gazebo/Blue

注意事项:

  • transmission是专门为了gazebo实现对模型驱动添加的标签,如果你不搞仿真而是为了控制真实的机械臂则不需要该标签;
  • 模型有几个joint就添加几个transmission;
  • 关节转角限制在urdf中配置,但速度和角加速度只能在.yaml文件中配置;
  • robotNamespace:插件实例所用的命名空间,名字随便起,主要是为了避免出现多机器人仿真重名的问题;
  • 对于有力控仿真需求的情况,不要随意修改urdf模型中interia项的值;
  • 像在rviz中一样,gazebo中的模型支持.STL和.DAE两种格式,个人建议使用.DAE文件,因为他们支持颜色和纹理,显示起来更加逼真,推荐使用SimLab Collada插件将solidworks模型生成.dae文件。

3. 添加launch文件

在launch文件夹新建.launch文件:

cd ~/catkin_ws/src/myrobot_gazebo/launch
touch myrobot_gazebo_world.launch

复制以下代码,具体使用时将模型及路径换成你的就行:

<launch>
  <!-- these are the arguments you can pass this launch file, for example paused:=true -->
  <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"/>
 
  <!-- We resume the logic in empty_world.launch -->
  <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>
 
  <!-- Load the URDF into the ROS Parameter Server -->
  <param name="robot_description" textfile = “$(find package)/urdf/xx.urdf” /> 
 
 
  <!-- Run a python script to the send a service call to gazebo_ros to spawn a URDF robot -->
  <node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
	args="-urdf -model myrobot -param robot_description"/> 
</launch>

4. 测试

cd ~/catkin_ws
catkin_make
roslaunch myrobot_gazebo myrobot_gazebo_world.launch

gazebo成功打开,模型显示,证明模型导入gazebo成功,但是此时模型由于没有control,会出现乱动的现象。

你可能感兴趣的:(ROS,机械臂仿真,ROS,Gazebo)