如何将Solidworks导出的urdf模型导入至ROS中使用

        关于如何将Solidworks建立的三维模型导出为urdf文件包已有众多的文章对此进行了详细的描述,但是对于如何将导出的urdf模型导入至ROS中使用(如在Gazebo仿真中加载)还没有针对性的文章对此进行描述,因此记录下自己初次尝试的详细操作分享给大家~

1、urdf文件准备

        以我所建立的水坝模型为例,从Solidworks中得到的urdf文件包中包含config、launch、meshes、textures、urdf五个文件夹及独立的manifest.xml文件,其中在meshes文件夹中包含Dam.STL文件,urdf文件夹中包含dam.urdf文件,其他文件夹均为空。

2、建立工作空间并编译

        建立工作空间并对其初始化的步骤在此不做过多描述,和普通的ROS工作空间无异。将模型的urdf文件包拷贝至workspace的src目录下,修改其文件名为dam_description。接着cd至dam_description文件目录下,将manifest.xml文件名修改为package.xml,文件具体内容如下:

<package format="2">
  <name>dam_description</name>
  <version>1.0.0</version>
  <description>
    <p>URDF Description package for dam</p>
    <p>This package contains configuration data, 3D models and launch files
for dam robot</p>
  </description>
  <author>TODO</author>
  <maintainer email="TODO@email.com" />
  <license>BSD</license>
  <buildtool_depend>catkin</buildtool_depend>
  <depend>roslaunch</depend>
  <depend>robot_state_publisher</depend>
  <depend>rviz</depend>
  <depend>joint_state_publisher</depend>
  <depend>gazebo</depend>
  <export>
    <architecture_independent />
  </export>
</package>

       接着在同样目录下新建CMakeLists.txt文件,文件的具体内容如下:

cmake_minimum_required(VERSION 2.8.3)
project(dam_description)

find_package(catkin REQUIRED)

catkin_package()

find_package(roslaunch)

install(DIRECTORY config DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})
install(DIRECTORY launch DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})
install(DIRECTORY meshes DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})
install(DIRECTORY urdf DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})

        接着cd到launch文件夹下,新建display.launch文件,文件的具体内容如下:

<?xml version="1.0"?>

<launch>

	<include file="$(find gazebo_ros)/launch/empty_world.launch">
      <arg name="world_name" value="worlds/basic.world"/>
      <arg name="debug" value="false" />
      <arg name="paused" value="true" />
      <arg name="gui" value="true" />
      <arg name="verbose" value="false"/>
      
    </include>

    <param name="dam_description" command="cat $(find dam_description)/urdf/dam.urdf"/>
      
    <node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" output="screen"
          args="-urdf -param dam_description -model dam"/>

</launch>

        完成上述步骤后,回到workspace目录下执行catkin_make编译整个工作空间,编译完成后执行 roslaunch dam_description display.launch,该命令执行后即可自动启动Gazebo,在Gazebo中即可看到之前在Solidworks中建立好的模型。(Tips:该步需要调用Gazebo,建议在运行之前先手动开启一次Gazebo,防止因Gazebo加载不出来导致失败。)

3、在Gazebo中将模型保存为.world文件

        在诸如PX4等框架中,建筑物模型等通常为固定在世界中的物体场景,因此可以将带有该物体的场景保存为Dam.world文件方便之后调用。在Gazebo中,点击左上角菜单 File-->Save World 或 File-->Save World As 即可将其保存为.world文件(Save World As 选项可手动在文件名中添加.world后缀)。

        为验证保存的.world模型是否为我们所想要的场景,开启命令行执行 gazebo Dam.world,该命令执行后Gazebo自动启动并将之前保存好的场景呈现出来,就可以看到我们之前在Solidworks中建立好的水坝模型,在之后的各框架仿真中可以调用该.world文件啦~

 


版权声明:本文为hdlwyt原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。