gazebo打开urdf文件
·
前言
需求:假如你有一个urdf文件,你想要在gazebo中打开。
比如:myarm.urdf文件如下
<?xml version="1.0"?>
<robot name="myarm">
<link name="arm_base_link">
<visual>
<origin rpy="0 0 0" xyz="0 0 0.09"/>
<geometry>
<cylinder length="0.18" radius="0.1"/>
</geometry>
<material name="yellow">
<color rgba="1 1 0 1"/>
</material>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0.09"/>
<geometry>
<cylinder length="0.18" radius="0.1"/>
</geometry>
</collision>
<inertial>
<mass value="1"/>
<inertia ixx="0.0052" ixy="0.0" ixz="0.0" iyy="0.0052" iyz="0.0" izz="0.005"/>
</inertial>
</link>
<joint name="arm_joint1" type="revolute">
<parent link="arm_base_link"/>
<child link="arm_link1"/>
<origin rpy="0 0 0" xyz="0 0 0.18"/>
<axis xyz="0 0 1" />
<limit effort="300" velocity="0.6" lower="-2.96" upper="2.96"/>
<dynamics damping="50" friction="1"/>
</joint>
<link name="arm_link1">
<visual>
<geometry>
<box size="0.1 0.06 0.2"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0.03 0.1"/>
<material name="blue">
<color rgba="0 0 1 1"/>
</material>
</visual>
<collision>
<geometry>
<box size="0.1 0.06 0.2"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0.03 0.1"/>
</collision>
<inertial>
<mass value="1"/>
<inertia ixx="0.004167" ixy="0.0" ixz="0.0" iyy="0.001133" iyz="0.0" izz="0.003633"/>
</inertial>
</link>
<joint name="arm_joint2" type="revolute">
<parent link="arm_link1"/>
<child link="arm_link2"/>
<origin rpy="0 0 0" xyz="0 0 0.18"/>
<axis xyz="0 1 0" />
<limit effort="300" velocity="0.6" lower="-2.09" upper="2.09"/>
<dynamics damping="50" friction="1"/>
</joint>
<link name="arm_link2">
<visual>
<geometry>
<cylinder length="0.24" radius="0.03"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0.12"/>
<material name="red">
<color rgba="1 0 0 1"/>
</material>
</visual>
<collision>
<geometry>
<cylinder length="0.24" radius="0.03"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0.12"/>
</collision>
<inertial>
<mass value="1"/>
<inertia ixx="0.005025" ixy="0.0" ixz="0.0" iyy="0.005025" iyz="0.0" izz="0.00045"/>
</inertial>
</link>
<joint name="arm_joint3" type="revolute">
<parent link="arm_link2"/>
<child link="arm_link3"/>
<origin rpy="0 0 0" xyz="0 0 0.24"/>
<axis xyz="0 1 0" />
<limit effort="300" velocity="0.6" lower="-2.09" upper="2.09"/>
<dynamics damping="50" friction="1"/>
</joint>
<link name="arm_link3">
<visual>
<geometry>
<box size="0.04 0.04 0.18"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0.09"/>
<material name="green">
<color rgba="0 1 0 1"/>
</material>
</visual>
<collision>
<geometry>
<box size="0.04 0.04 0.18"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0.09"/>
</collision>
<inertial>
<mass value="1"/>
<inertia ixx="0.002833" ixy="0.0" ixz="0.0" iyy="0.000267" iyz="0.0" izz="0.002833"/>
</inertial>
</link>
<joint name="gripper_base_joint" type="fixed">
<parent link="arm_link3"/>
<child link="gripper_base_link"/>
<origin rpy="0 0 0" xyz="0 0 0.18"/>
</joint>
<link name="gripper_base_link">
<visual>
<geometry>
<box size="0.03 0.1 0.02"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0.01"/>
<material name="white">
<color rgba="1 1 1 1"/>
</material>
</visual>
<collision>
<geometry>
<box size="0.03 0.1 0.02"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0.01"/>
</collision>
<inertial>
<mass value="1"/>
<inertia ixx="0.000108" ixy="0.0" ixz="0.0" iyy="0.000083" iyz="0.0" izz="0.000867"/>
</inertial>
</link>
<joint name="finger1_joint" type="prismatic">
<parent link="gripper_base_link"/>
<child link="finger1_link"/>
<origin rpy="0 0 0" xyz="0 0.03 0.02"/>
<axis xyz="0 1 0" />
<limit effort="300" velocity="0.6" lower="-0.025" upper="0.01"/>
<dynamics damping="50" friction="1"/>
</joint>
<link name="finger1_link">
<visual>
<geometry>
<box size="0.03 0.01 0.05"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0.025"/>
<material name="purple">
<color rgba="1 0 1 1"/>
</material>
</visual>
<collision>
<geometry>
<box size="0.03 0.01 0.05"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0.025"/>
</collision>
<inertial>
<mass value="1"/>
<inertia ixx="0.000283" ixy="0.0" ixz="0.0" iyy="0.000083" iyz="0.0" izz="0.000217"/>
</inertial>
</link>
<joint name="finger2_joint" type="prismatic">
<parent link="gripper_base_link"/>
<child link="finger2_link"/>
<origin rpy="0 0 0" xyz="0 -0.03 0.02"/>
<axis xyz="0 1 0" />
<limit effort="300" velocity="0.6" lower="-0.01" upper="0.025"/>
<dynamics damping="50" friction="1"/>
<mimic joint="finger1_joint" multiplier="-1"/>
</joint>
<link name="finger2_link">
<visual>
<geometry>
<box size="0.03 0.01 0.05"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0.025"/>
<material name="purple">
<color rgba="1 0 1 1"/>
</material>
</visual>
<collision>
<geometry>
<box size="0.03 0.01 0.05"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0.025"/>
</collision>
<inertial>
<mass value="1"/>
<inertia ixx="0.000283" ixy="0.0" ixz="0.0" iyy="0.000083" iyz="0.0" izz="0.000217"/>
</inertial>
</link>
<joint name="gripper_centor_joint" type="fixed">
<parent link="gripper_base_link"/>
<child link="gripper_centor_link"/>
<origin rpy="0 0 0" xyz="0 0 0.045"/>
</joint>
<link name="gripper_centor_link" />
</robot>
然后我查了很多资料,发现:
这部分,网上的博客资料比较少(至少我觉得,初学者很难找到有用的资料),在一些视频全程课中,可以找到,所以,我觉得资料并不是很多(不然我早就找到会了),因此,这里写一个教程。
最开始,我以为gazebo导入urdf很简单,现在发现,也是比较困难的,需要创建包,写launch文件。
创建包
- 创建目录,进入目录
mkdir -p catkin_ws/src/
cd catkin_ws/src/
- 创建功能包
catkin_create_pkg my_gazebo_pkg urdf xacro gazebo_ros gazebo_ros_control gazebo_plugins
其中,my_gazebo_pkg是你要创建的包的名称,可以不是这个,urdf xacro gazebo_ros gazebo_ros_control gazebo_plugins是需要的插件。
创建launch和urdf目录
你可以选择在vscode中打开src目录,然后在my_gazebo_pkg目录下创建launch和urdf文件夹,用来放置launch文件和urdf文件。这一步你可以在终端使用mkdir命令创建。

编写urdf和launch文件
- 将最开头的
myarm.urdf放入到urdf目录下。 - 编写launch文件,
gazebo.launch文件如下
<launch>
<!-- 将 Urdf 文件的内容加载到参数服务器 -->
<param name="robot_description" textfile="$(find my_gazebo_pkg)/urdf/myarm.urdf" />
<!-- 启动 gazebo -->
<include file="$(find gazebo_ros)/launch/empty_world.launch" />
<!-- 在 gazebo 中显示机器人模型 -->
<node pkg="gazebo_ros" type="spawn_model" name="model" args="-urdf -model mycar -param robot_description" />
</launch>
在其他项目的launch文件中,只需要修改$(find my_gazebo_pkg)/urdf/myarm.urdf的find 后面的包名称即可(只需要你按照这样的架构创建包)
运行
在终端中,或者vscode终端运行
roslaunch my_gazebo_pkg gazebo.launch
my_gazebo_pkg就是包名称,gazebo.launch就是launch文件。
ps:如果你需要更改模型,你只需要在模型,右键,点击edit model即可

此时,已经进入编辑模式了。
更多推荐


所有评论(0)