gazebo建模学习笔记1

一.功能包
参考文档
urdf标签查看
官方文档

包名功能
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:一个实现小车的例子

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值