gazebo 入门笔记
前言:太久没使用gazebo了,最近重新复习了一遍gazebo,借此机会mark 下笔记。
入门学习教程
视频资源:
国内:古月学院
一起从零手写URDF模型 · 古月
如何在Gazebo中实现移动机器人仿真 · 古月
国外:The Construct
博客:
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 仿真加速-->
<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>