gazebo 入门笔记

gazebo 入门笔记

前言:太久没使用gazebo了,最近重新复习了一遍gazebo,借此机会mark 下笔记。

入门学习教程

视频资源:

国内:古月学院

一起从零手写URDF模型 · 古月
如何在Gazebo中实现移动机器人仿真 · 古月

国外:The Construct

Gazebo in 5 mins

博客:

csdn Gazebo使用笔记
深圳季连AIGRAPHX Gazebo学习笔记

常用笔记

xacro 文件使用

<!-- PROPERTY LIST property 定义变量 -->
<!-- 使用 ${parameters} 进行调用 -->

eg->声明变量:
<xacro:property name="M_PI" value="3.1415926"/>

调用: 
<origin xyz="0 0 0" rpy="${M_PI/2} 0 0" /> 
注意:所有数学运算都会转换成浮点数进行,以保证运算精度

<!-- 宏定义 -->
<xacro:macro name="name" params="A B C">
 ...
</xacro:macro>

<!--宏调用-->
<name A="A_value" B="B_value" C="C_value" />

<!--文件包含-->
包含了模型文件之后,就可以直接调用
<xacro:include filename="$(find mbot_description)/urdf/mbot_base_gazebo.xacro" />
<!--控制器Controllers-->

joint_state_controller    状态控制器
joint_effort_controller	  力控制器
joint_position_controller 位置控制器
joint_velocity_controller 速度控制器

link定义,包含三部分

link定义 参考网址: ROS学习(九):ROS URDF->link

<link name="my_link">
   <inertial>	 连杆的转动惯量矩阵	
     <origin xyz="0 0 0.5" rpy="0 0 0"/>   转动惯量参考连杆坐标系的变换矩阵
     <mass value="1"/>		连杆质量
     <inertia ixx="100"  ixy="0"  ixz="0" iyy="100" iyz="0" izz="100" />   连杆的惯性张量矩阵
   </inertial>

   <visual>      连杆的可视化属性
     <origin xyz="0 0 0" rpy="0 0 0" />    可视化连杆组件的参考坐标系相对于连杆坐标系的参考坐标系  原点偏置量
     <geometry>
       <box size="1 1 1" />		   可视化对象的形状
     </geometry>
     <material name="Cyan">		   可视化组件的材料,Cyan印刷材料
       <color rgba="0 1.0 1.0 1.0"/>
     </material>
   </visual>

   <collision>				   连杆的碰撞属性
     <origin xyz="0 0 0" rpy="0 0 0"/>     碰撞组件的参考坐标系相对于连杆坐标系的参考坐标系
     <geometry>
       <cylinder radius="1" length="0.5"/>
     </geometry>
   </collision>
 </link>

<!--为link添加gazebo标签-->
<gazebo reference="base_link">
	<material>Gazebo/Blue</material>
</gazebo>

joint定义

ROS学习(十):ROS URDF->joint

<joint name="my_joint" type="floating">    关节的名称、类型
    <origin xyz="0 0 1" rpy="0 0 3.1416"/>    变换矩阵:位置、角度
    <parent link="link1"/>  关节连接的父连杆
    <child link="link2"/>   关节连接的子连杆

    <calibration rising="0.0"/>
    <dynamics damping="0.0" friction="0.0"/>    阻尼、静摩擦
    <limit effort="30" velocity="1.0" lower="-2.2" upper="0.7" />   极限值:最大力矩、最大速度、关节下限、关节上限
    <safety_controller k_velocity="10" k_position="15" soft_lower_limit="-2.0" 

soft_upper_limit="0.5" />   
 </joint>

<!--为joint添加传动装置-->
<!-- Transmission is important to link the joints and the controller -->
<transmission name="${prefix}_wheel_joint_trans">
    <type>transmission_interface/SimpleTransmission</type>
    <joint name="${prefix}_wheel_joint" >
        <hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface>
    </joint>
    <actuator name="${prefix}_wheel_joint_motor">
        <hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface>
        <mechanicalReduction>1</mechanicalReduction>
    </actuator>
</transmission>

gazebo 仿真加速

Gazebo仿真加速

<!--gazebo 仿真加速-->
    <physics name="default_physics" default="true" type="ode">      导入ode物理引擎
      <max_step_size>0.01</max_step_size>			    指定每个物理更新步骤的持续时间
      <real_time_factor>1</real_time_factor>			    每秒尝试的物理更新次数,数字设置为0,他会尽快地运行
      <real_time_update_rate>1000</real_time_update_rate>
      <ode>
        <solver>
          <type>quick</type>
          <iters>50</iters>
          <sor>1.2</sor>
        </solver>
      </ode>
    </physics>
上一篇:【ROS】ROS入门笔记-Gazebo仿真篇


下一篇:ELK从入门到实战