<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="first_robot">
    <!-- 声明 base 模块 -->
    <xacro:macro name="base_link" params="length radius">
        <link name="base_link">
            <visual>
                <origin xyz="0 0 0" rpy="0 0 0" />
                <geometry>
                    <cylinder length="${length}" radius="${length}" />
                </geometry>
                <material name="blue">
                    <color rgba="0.1 0.1 1.0 0.5" />
                </material>
            </visual>
        </link>
    </xacro:macro>
    <!-- 声明 IMU 模块 -->
    <xacro:macro name="imu_link" params="imu_name xyz">
        <link name="${imu_name}_link">
            <visual>
                <origin xyz="0 0 0" rpy="0 0 0" />
                <geometry>
                    <box size="0.02 0.02 0.02" />
                </geometry>
            </visual>
            <material name="black">
                <color rgba="0 0 0 0.5" />
            </material>
        </link>
        <joint name="${imu_name}_joint" type="fixed">
            <parent link="base_link" />
            <child link="${imu_name}_link" />
            <origin xyz="${xyz}" />
        </joint>
    </xacro:macro>
    <!-- 传递参数调用 base_link 模块 -->
    <xacro:base_link length="0.12" radius="0.1" />
    <!-- 传递参数调用 imu 模块 -->
    <xacro:imu_link imu_name="imu_up" xyz="0 0 0.02" />
    <xacro:imu_link imu_name="imu_down" xyz="0 0 -0.02" />

</robot>
