阿克曼小车urdf模型搭建与gazebo仿真

本文档详细介绍了如何构建阿克曼小车的URDF模型,包括link、joint和偏移关系的设置,并通过xacro进行描述。此外,还讲解了在Gazebo中创建贴图模型、添加物理属性、配置传感器和执行器,以及解决模型加载问题的方法。提供了一系列关键步骤和示例代码,帮助读者快速搭建仿真环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:

文章仅为个人搭建urdf模型时的笔记,可能重点不突出,有的地方也不详细

请配合TIANBOT的博客(阿克曼结构移动机器人的gazebo仿真)一起阅读,能极大加快构建仿真环境的效率

一、urdf模型

1.urdf 模型搭建

1.1 link标签

wiki:查看哪些标签是必须的

<link name="my_link">
	<!--惯性相关-->
    <inertial> 
        <!--位置-->
   		<origin xyz="0 0 0.5" rpy="0 0 0"/>
        <!--重量 kg-->
        <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" />
 		<!--几何形状 m-->
        <geometry>
			<box size="1 1 1" />
		</geometry>
		<!--材质-->
        <material name="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>

1.2 joint相关

wiki:查看哪些标签是必须的

<!--名称及活动方式-->
<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>
  1. type:
    • revolute-有上下限的旋转活动
    • continuous-没有上下限的连续旋转
    • prismatic-有上下限的滑动
    • fixed-固定
    • floating-没有约束,可在六个自由度运动,三平移三旋转
    • plannar-允许在垂直于轴的某个平面内移动或转动

1.3 偏移关系讲解

<?xml version="1.0"?>  
<robot name="arckmann_car">

<link name="base_link">
    <!--可视化相关-->
	<visual>
 		<!--几何形状 m-->
        <geometry>
			<box size="5 3 1" />
		</geometry>
        <origin xyz="0 0 0" rpy="0 0 0" />			<!--不偏移-->
		<!--材质-->
        <material name="Cyan">
 			<color rgba="0 1.0 1.0 1.0"/>
		</material>
	</visual>
</link>

<joint name="camera_to_baselink" type="continuous">
    <parent link="base_link"/>
    <child link="camera"/>
    <origin xyz="-1 0 0" rpy="0 0 0"/>				<!--x偏移-1-->
    <axis xyz="0 0 1"/>
</joint>

<link name="camera">
	<visual>
        <geometry>
			<box size="1 1 1" />
		</geometry>
        <origin xyz="0 0 2" rpy="0 0 0" />			<!--z偏移2-->
        <material name="Red">
 			<color rgba="1 0 0 0.5"/>
		</material>
	</visual>
</link>

</robot>  

如图,base_link不偏移,camera在自身坐标系下向上偏移2,joint标签只是表明了base_link和camera的偏移关系。

2. xacro描述机器人

xacro wiki

参考博客

wiki翻译

  • 使用xacro时根标签必须包含 <robot name="XXX" xmlns:xacro="http://ros.org/wiki/xacro">
  • 属性定义:<xacro:property name="XXXX" value="YYYY">
  • 属性调用:${XXXX}
  • 属性块定义与调用:
<xacro:property name="front_left_origin">
  <origin xyz="0.3 0 0" rpy="0 0 0" />
</xacro:property>

<pr2_wheel name="front_left_wheel">
  <xacro:insert_block name="front_left_origin" />
</pr2_wheel>
  • 数学公式计算:${a+b/c}
  • 条件判断的使用
<xacro:if value="<expression>">  <!-- value="${变量=='值'}" -->
  <... some xml code here ...>
</xacro:if>
<xacro:unless value="<expression>">
  <... some xml code here ...>
</xacro:unless>
  • 函数定义与调用
<!--函数声明,传入参数-->
<xacro:macro name="XXXX" params="YY ZZ"> 
${YY}	<!--形参-->
</xacro:macro>

<!--函数调用-->
<xacro:XXXX YY="?"  ZZ="?" />
  • 头文件包含: <xacro:include filename="$(find hhbot_description)/urdf/hhbot_body.urdf.xacro" />

3. rviz中加载urdf

<launch>
  <arg name="model" />
  <param name="robot_description" textfile="$(find suv1)/urdf/suv.urdf" />
  <node name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" />
  <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
  <node name="rviz" pkg="rviz" type="rviz" args="-d $(find suv1)/urdf.rviz" />
</launch>

4. solidworks阿克曼模型创建

不要用solidworks直接导出的urdf文件去配置,最好是先用简单形状把模型搭好跑通之后去修改link中的vision标签

二、Gazebo

1. 创造gazebo贴图模型

Gazebo仿真环境搭建 7:00

1.为link添加gazebo标签

gazebo官方网页
请添加图片描述

  • 添加颜色

Gazebo material颜色列表

    <gazebo reference="base_link">
        <material>Gazebo/GreenTransparent</material>
    </gazebo>
  • 添加摩擦力

3. 配置gazebo传感器和执行器

4. gazebo加载urdf模型

  • 若出现模型翻转或与初始位置不对的情况,如下,将paused改为true,观察初始加载时模型的状态,有可能嵌到了地下
  <!-- 运行gazebo仿真环境 -->
  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="debug" value="false" />
    <arg name="gui" value="true" />
    <arg name="paused" value="true" />
    <arg name="use_sim_time" value="true" />
    <arg name="headless" value="false" />
  </include>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值