包名 | 功能 |
---|---|
urdf | 包含一个c++解析器,用于解析URDF(机器人统一描述格式unifed robot description format urdf)文件,用于表示机器人模型的urdf文件 |
urdf_parser_plugin | 实现写入urdf数据结构方法 |
urdfdom_headers | 提供使用urdf解析器的核心数据结构头文件 |
collada_parser | 解析collada文件填充数据结构 |
urdfdom | 解析URDF填充数据结构 |
collada-dom | 独立组建,使用Maya、Blender、softmage等3D软件对Collada文档进行转换 |
jiont_state_publisher | 一个节点,用于读取机器人描述,调试和验证非固定关节 |
kdl_parser | 从URDF构建KDL树,可以用运动学树发布关节状态,也可以表示是正/逆运动学 |
xarco | 包含一些插件用于构建机器人的描述 |
常用标签
<link name="<name of the link>">
<inertial>...</inertial> //惯性
<visual>...</visual> //可视化
<collision>...</collsion> //碰撞
</link>
<joint name="<name of the jiont>">
<parent link="link1"/>
<child link="link2/">
<calibration .../> //校准,标定
<dynamics damping .../> //动态抑制
<limit effort ... /> //设置关节的速度、力和半径
//(仅当关节是revolute或prismatic时)
</jiont>
<robot name= "robot name">
<link>...</link>
<link>...</link>
<jiont> ... </joint>
<joint> ... </joint>
1 创建一个包:
环境:vscode 配置号xml ros 拓展插件
catkin_create_pkg my_ros_description_pkg roscpp tf geometry urdf rviz xacro
2 创建一个物体必须有
link属性 | tag |
---|---|
visual属性 | 形状属性geometry;origin属性; |
collision属性 | origin属性l;geometry属性; |
inertial属性 | origin属性;mass属性;inertia属性 |
创建俩个物体之间关系
joint属性 | tag |
---|---|
visual属性 | parent属性;child属性;origin属性; |
编辑一个一个自定义插件
使用urdf导入gazebo插件
3 一个例子:自定义一个物体
<?xml version="1.0"?>
<robot name="simple" >
<link name="base_link">
<visual> <!--可视化-->
<geometry> <!--外形-->
<cylinder length="0.2" radius="0.2"/> <!--圆柱 长 半径-->
</geometry>
<material name="red"> <!--颜色-->
<color rgba="0.8 0 0 1"/>
</material>
</visual>
<collision> <!--碰撞属性-->
<geometry>
<cylinder length="0.2" radius="0.2"/>
</geometry>
</collision>
<inertial> <!--惯性属性-->
<mass value="10"/> <!--重量-->
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/><!--惯性矩阵3×3-->
</inertial>
</link>
<link name="front_wheel">
<visual>
<origin rpy="0 1.57 0" xyz="0 0 0"/>
<geometry>
<cylinder length="0.03" radius="0.08"/>
</geometry>
<material name="black">
<color rgba="0 0 0 1"/>
</material>
</visual>
<collision>
<origin rpy="0 1.57 0" xyz="0 0 0"/>
<geometry>
<cylinder length="0.03" radius="0.08"/>
</geometry>
</collision>
<inertial>
<origin rpy="0 1.57 0" xyz="0 0 0"/>
<mass value="10"/>
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
</inertial>
</link>
<link name="left_wheel">
<visual>
<origin rpy="0 1.57 2.09" xyz="0 0 0"/>
<geometry>
<cylinder length="0.03" radius="0.08"/>
</geometry>
<material name="white">
<color rgba="1 1 1 1"/>
</material>
</visual>
<collision>
<origin rpy="0 1.57 2.09" xyz="0 0 0"/>
<geometry>
<cylinder length="0.03" radius="0.08"/>
</geometry>
</collision>
<inertial>
<origin xyz="0 0 0"/>
<mass value="10"/>
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
</inertial>
</link>
<link name="right_wheel">
<visual>
<origin rpy="0.0 1.57 2.09" xyz="0.0 0.0 0.0"/>
<geometry>
<cylinder radius="0.08" length="0.03"/>
<material name="blue">
<color rgba="0.0 0.0 0.8 1.0"/>
</material>
</geometry>
</visual>
<collision>
<origin rpy="0 1.57 -2.09" xyz="0 0 0"/>
<geometry>
<cylinder radius="0.08" length="0.03"/>
</geometry>
</collision>
<inertial>
<origin rpy="0.0 0.0 0.0"/>
<mass value="0.0"/>
<inertia ixx="1" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
</inertial>
</link>
<joint name="base_to_front_wheel" type="fixed">
<parent link="base_link"/>
<child link="front_wheel"/>
<origin rpy="0.0 0.0 0.0" xyz="0.2 0 -0.08"/>
</joint>
<joint name="base_to_left_wheel" type="fixed"> <!--关节 fixed 固定的-->
<parent link="base_link"/> <!--父坐标系-->
<child link="left_wheel"/> <!--子坐标系-->
<origin rpy="0.0 0.0 0.0" xyz="-0.1 0.172 -0.08"/> <!--roll pitch yaw旋转;坐标-->
</joint>
<joint name="base_to_right_wheel" type="fixed">
<parent link="base_link"/>
<child link="right_wheel"/>
<origin rpy="0.0 0.0 0.0" xyz="-0.1 -0.172 -0.08"/>
</joint>
</robot>
运行
roslaunch urdf_tutorial display.launch model:=/home/.../my.urdf//上边建立的urdf路径+文件
添加活动关节
<joint name="left_back_wheel_joint" type="revolute">
<parent link="left_base"/>
<child link="left_back_wheel"/>
<origin rpy="0 0 0" xyz="-0.133333333333 0 -0.085"/>
<limit lower="-1.586" upper="0.1" effort="1000.0" velocity="0.5"/>
<axis xyz="0.0 0.0 1.0"/>
</joint>
天加碰撞和物理属性
4:如何获得惯性(通过meshlab获得:略)
5:自定义一个ROS plugins
6: 导入一个gazebo 雷达插件
7:一个实现小车的例子