关于如何将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文件啦~