系列文章目录
(一)、从solidworks转urdf文件,在gazebo中添加小车模型
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
要进行多机器人导航的仿真,首先要在仿真环境中创建一辆小车,通过urdf文件编写只能是简单的形状,可以借助常用的3d绘图软件soildworks绘制小车模型,再通过插件转成urdf文件。
一、插件
ROS提供的solidworks转urdf插件下载地址:sw_urdf_exporter - ROS Wikihttp://wiki.ros.org/sw_urdf_exporter
根据自己需要的版本下载安装即可。
二、使用步骤
1.solidworks绘制机器人模型
2.利用插件转成urdf文件
在solidworks中的工具,file中选择插件Export as URDF。主要是添加基座标、轮子的坐标、雷达的坐标。以及旋转的轴。
这里的base_link最好放在车子的中心的位置。 且注意车子前进的方向为x轴的方向。在装配体上添加,且四个轮子的坐标原点最好是放在车身上。
总结一下,分别要设置六个坐标以及四个旋转轴,轮子的类型选择continuous,雷达的类型选择fixed。设置好了之后,点上图的红色圈圈部分。
这里重点检查Joint Type,因为我有几次,在上一步设置雷达的类型是fixed,但是在这里变成了continuous。检查无误后点Next。
点击Export URDF and Meshes,这时候就会生成,功能包,注意的是,功能包的名字不可以用英文命名,否则后面会出现很多的错误。
这里贴出我的小车的.urdf
<?xml version="1.0" encoding="utf-8"?>
<!-- This URDF was automatically created by SolidWorks to URDF Exporter! Originally created by Stephen Brawner (brawner@gmail.com)
Commit Version: 1.5.1-0-g916b5db Build Version: 1.5.7152.31018
For more information, please see http://wiki.ros.org/sw_urdf_exporter -->
<robot
name="car_sim">
<link
name="base_link">
<inertial>
<origin
xyz="0.00130650433357116 2.77555756156289E-17 0.0259145530334998"
rpy="0 0 0" />
<mass
value="4.86927211801166" />
<inertia
ixx="0.0244884626138586"
ixy="-1.03959853431126E-17"
ixz="-0.000439502623636349"
iyy="0.0660505274162502"
iyz="-2.09485159752118E-18"
izz="0.0878377323820157" />
</inertial>
<visual>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://car_sim/meshes/base_link.STL" />
</geometry>
<material
name="">
<color
rgba="0.792156862745098 0.819607843137255 0.933333333333333 1" />
</material>
</visual>
<collision>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://car_sim/meshes/base_link.STL" />
</geometry>
</collision>
</link>
<link
name="Wheel_LF_link">
<inertial>
<origin
xyz="5.5511E-17 0.0050341 2.0817E-17"
rpy="0 0 0" />
<mass
value="0.23011" />
<inertia
ixx="0.00015836"
ixy="-2.2483E-20"
ixz="7.5834E-21"
iyy="0.00028331"
iyz="-4.9103E-21"
izz="0.00015836" />
</inertial>
<visual>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://car_sim/meshes/Wheel_LF_link.STL" />
</geometry>
<material
name="">
<color
rgba="1 1 1 1" />
</material>
</visual>
<collision>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://car_sim/meshes/Wheel_LF_link.STL" />
</geometry>
</collision>
</link>
<joint
name="Wheel_LF_joint"
type="continuous">
<origin
xyz="0.11 0.138 0.025"
rpy="0 0 0" />
<parent
link="base_link" />
<child
link="Wheel_LF_link" />
<axis
xyz="0 1 0" />
</joint>
<link
name="Wheel_LB_link">
<inertial>
<origin
xyz="-1.6653E-16 0.0050341 0"
rpy="0 0 0" />
<mass
value="0.23011" />
<inertia
ixx="0.00015836"
ixy="-1.7606E-20"
ixz="2.0331E-22"
iyy="0.00028331"
iyz="-7.8079E-23"
izz="0.00015836" />
</inertial>
<visual>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://car_sim/meshes/Wheel_LB_link.STL" />
</geometry>
<material
name="">
<color
rgba="1 1 1 1" />
</material>
</visual>
<collision>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://car_sim/meshes/Wheel_LB_link.STL" />
</geometry>
</collision>
</link>
<joint
name="Wheel_LB_joint"
type="continuous">
<origin
xyz="-0.11 0.138 0.025"
rpy="0 0 0" />
<parent
link="base_link" />
<child
link="Wheel_LB_link" />
<axis
xyz="0 1 0" />
</joint>
<link
name="Wheel_RF_link">
<inertial>
<origin
xyz="-5.5511E-17 -0.0050341 -6.9389E-18"
rpy="0 0 0" />
<mass
value="0.23011" />
<inertia
ixx="0.00015836"
ixy="-1.2648E-20"
ixz="1.0741E-20"
iyy="0.00028331"
iyz="8.4759E-22"
izz="0.00015836" />
</inertial>
<visual>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://car_sim/meshes/Wheel_RF_link.STL" />
</geometry>
<material
name="">
<color
rgba="1 1 1 1" />
</material>
</visual>
<collision>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://car_sim/meshes/Wheel_RF_link.STL" />
</geometry>
</collision>
</link>
<joint
name="Wheel_RF_joint"
type="continuous">
<origin
xyz="0.11 -0.138 0.025"
rpy="0 0 0" />
<parent
link="base_link" />
<child
link="Wheel_RF_link" />
<axis
xyz="0 1 0" />
</joint>
<link
name="Wheel_RB_link">
<inertial>
<origin
xyz="0 -0.0050341 -1.3878E-17"
rpy="0 0 0" />
<mass
value="0.23011" />
<inertia
ixx="0.00015836"
ixy="-1.5945E-20"
ixz="-2.1232E-20"
iyy="0.00028331"
iyz="-1.752E-21"
izz="0.00015836" />
</inertial>
<visual>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://car_sim/meshes/Wheel_RB_link.STL" />
</geometry>
<material
name="">
<color
rgba="1 1 1 1" />
</material>
</visual>
<collision>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://car_sim/meshes/Wheel_RB_link.STL" />
</geometry>
</collision>
</link>
<joint
name="Wheel_RB_joint"
type="continuous">
<origin
xyz="-0.11 -0.138 0.025"
rpy="0 0 0" />
<parent
link="base_link" />
<child
link="Wheel_RB_link" />
<axis
xyz="0 1 0" />
</joint>
<link
name="lr_Link">
<inertial>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<mass
value="0" />
<inertia
ixx="0"
ixy="0"
ixz="0"
iyy="0"
iyz="0"
izz="0" />
</inertial>
<visual>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://car_sim/meshes/lr_Link.STL" />
</geometry>
<material
name="">
<color
rgba="1 1 1 1" />
</material>
</visual>
<collision>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://car_sim/meshes/lr_Link.STL" />
</geometry>
</collision>
</link>
<joint
name="lr_joint"
type="fixed">
<origin
xyz="0.1 0 0.14"
rpy="0 0 0" />
<parent
link="base_link" />
<child
link="lr_Link" />
<axis
xyz="0 0 0" />
</joint>
</robot>
最后运行插件生成的launch文件,gazebo.launch.即可在gazebo中加载出机器人模型。
总结
本章主要讲了如何把solidworks中的模型利用ros提供的插件,导成urdf文件,并在gazebo中加载出机器人模型,下一章将介绍,将urdf文件转成xacro,并给小车添加控制器,控制小车运动,以及添加雷达。