Files
ros_senior/mbot_description/urdf/mbot_base.xacro
T
2023-07-20 11:12:08 +08:00

133 lines
4.2 KiB
XML

<?xml version="1.0" ?>
<robot name="mbot" xmlns:xacro="http://www.ros.org/wiki/xacro">
<xacro:property name="M_PI" value="3.1415926" />
<xacro:property name="wheel_joint_x" value="0" />
<xacro:property name="wheel_joint_y" value="0.19" />
<xacro:property name="wheel_joint_z" value="0.05" />
<xacro:property name="wheel_length" value="0.06" />
<xacro:property name="wheel_radius" value="0.06" />
<xacro:property name="caster_joint_x" value="0.18" />
<xacro:property name="caster_joint_y" value="0" />
<xacro:property name="caster_joint_z" value="0.095" />
<xacro:property name="caster_radius" value="0.015" />
<xacro:property name="base_length" value="0.16" />
<xacro:property name="base_radius" value="0.2" />
<xacro:property name="stage_length" value="0.12" />
<xacro:property name="stage_radius" value="0.1" />
<xacro:property name="camera_joint_x" value="0.17" />
<xacro:property name="camera_joint_y" value="0" />
<xacro:property name="camera_joint_z" value="0.1" />
<xacro:property name="kinect_joint_x" value="0.15" />
<xacro:property name="kinect_joint_y" value="0" />
<xacro:property name="kinect_joint_z" value="0.11" />
<xacro:property name="laser_joint_x" value="0" />
<xacro:property name="laser_joint_y" value="0" />
<xacro:property name="laser_joint_z" value="0.085" />
<material name="white">
<color rgba="1 1 1 0.9"/>
</material>
<material name="red">
<color rgba="1 0 0 1"/>
</material>
<material name="grey">
<color rgba="0.5 0.5 0.5 1"/>
</material>
<xacro:macro name="base_stage">
<link name="base_link">
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<cylinder length="${base_length}" radius="${base_radius}"/>
</geometry>
<material name="red" />
</visual>
</link>
<joint name="stage_joint" type="fixed">
<origin xyz="0 0 ${(base_length + stage_length)/2}" rpy="0 0 0" />
<parent link="base_link"/>
<child link="stage_link" />
</joint>
<link name="stage_link">
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<cylinder length="${stage_length}" radius="${stage_radius}"/>
</geometry>
<material name="red" />
</visual>
</link>
</xacro:macro>
<xacro:macro name="wheel" params="prefix reflect">
<joint name="${prefix}_wheel_joint" type="continuous">
<origin xyz="${wheel_joint_x} ${reflect*wheel_joint_y} ${-wheel_joint_z}" rpy="0 0 0" />
<parent link="base_link" />
<child link="${prefix}_wheel_link" />
<axis xyz="0 1 0" />
</joint>
<link name="${prefix}_wheel_link">
<visual>
<origin xyz="0 0 0" rpy="${M_PI/2} 0 0"/>
<geometry>
<cylinder length="${wheel_length}" radius="${wheel_radius}"/>
</geometry>
<material name="white" />
</visual>
</link>
</xacro:macro>
<xacro:macro name="caster" params="prefix reflect">
<joint name="${prefix}_caster_joint" type="continuous">
<origin xyz="${reflect*caster_joint_x} ${caster_joint_y} ${-caster_joint_z}" rpy="0 0 0" />
<parent link="base_link"/>
<child link="${prefix}_caster_link" />
<axis xyz="0 1 0" />
</joint>
<link name="${prefix}_caster_link">
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<sphere radius="${caster_radius}" />
</geometry>
<material name="white" />
</visual>
</link>
</xacro:macro>
<xacro:base_stage />
<xacro:wheel prefix="left" reflect="1"/>
<xacro:wheel prefix="right" reflect="-1"/>
<xacro:caster prefix="front" reflect="1"/>
<xacro:caster prefix="back" reflect="-1"/>
<xacro:include filename="$(find mbot_description)/urdf/sensor/camera.xacro" />
<xacro:usb_camera joint_x="${camera_joint_x}" joint_y="${camera_joint_y}" joint_z="${camera_joint_z}"/>
<xacro:include filename="$(find mbot_description)/urdf/sensor/kinect.xacro" />
<xacro:kinect joint_x="${kinect_joint_x}" joint_y="${kinect_joint_y}" joint_z="${kinect_joint_z}"/>
<xacro:include filename="$(find mbot_description)/urdf/sensor/laser.xacro" />
<xacro:laser joint_x="${laser_joint_x}" joint_y="${laser_joint_y}" joint_z="${laser_joint_z}"/>
</robot>