<commit_before><?xml version="1.0"?>
<robot name="eklavya_hardware" xmlns:xacro="http://ros.org/wiki/xacro">

    <!-- PROPERTY LIST -->
    <!--All units in m-kg-s-radians unit system -->
    <property name="M_PI" value="3.1415926535897931" />

    <!-- Main Body-base-->
    <!-- Location of com : center of mass -->
    <property name="base_x_com" value="-0.04748000" />
    <property name="base_y_com" value="-0.00000000" />
    <property name="base_z_com" value="0.09947000" />

    <!-- Size of the base-->
    <property name="base_x_size" value="0.55000000" /> 
    <property name="base_y_size" value="0.55000000" /> 
    <property name="base_z_size" value="0.55000000" />

    <!--Weight of the base-->
    <property name="base_mass" value="33.45489000" /> <!-- in kg-->

    <!--Inertial values for the base at center of mass, aligned with coordinate system. Units are kg*m^2-->
    <property name="base_ixx_com_cs" value="0.60216370" />
    <property name="base_ixy_com_cs" value="-0.02364198" />
    <property name="base_ixz_com_cs" value="-0.11972132" />
    <property name="base_iyy_com_cs" value="1.73859574" />
    <property name="base_iyz_com_cs" value="-0.00154437" />
    <property name="base_izz_com_cs" value="2.02955229" />
    
    
  <!-- Macro for eklavya body. Including Gazebo extensions, but does not include Kinect -->
  <include filename="$(find eklavya_description)/urdf/gazebo2.urdf.xacro"/>
  <include filename="$(find eklavya_description)/urdf/materials.urdf.xacro"/>
  <include filename="$(find eklavya_description)/urdf/eklavya_hardware.xacro"/>
  <include filename="$(find eklavya_description)/urdf/eklavya_wheel.xacro"/>
  <include filename="$(find eklavya_description)/urdf/hokuyo_urg.xacro"/>
  <include filename="$(find eklavya_description)/urdf/sick_lms100_200.urdf.xacro"/>
  <include filename="$(find eklavya_description)/urdf/microstrain_3dmgx3_imu.urdf.xacro"/>
  <include filename="$(find eklavya_description)/urdf/eklavya_kinect.urdf.xacro"/>

    
  <xacro:macro name="eklavya_body">
    <!--Dummy base without INERTIA because base_link is not supposed to have inertia-->
    <!-- BASE-FOOTPRINT -->
    <!-- base_footprint is a fictitious link(frame) that is on the ground right below base_link origin, navigation stack depends on this frame -->
    <link name="base_footprint">
      <visual>
        <origin xyz="0 0 0.0" rpy="0 0 0" />
        <geometry>
          <box size="0.001 0.001 0.001" />
        </geometry>
      </visual>
      <inertial>
            <mass value="0.0001" />
            <origin xyz="0 0 0" />
            <inertia ixx="0.0001" ixy="0.0" ixz="0.0"
                iyy="0.0001" iyz="0.0" 
                izz="0.0001" />
        </inertial>
	<!--  <collision>
          <origin xyz="0 0 0.0" rpy="0 0 0" />
          <geometry>
            <box size="0.001 0.001 0.001" />
         </geometry>
      </collision>-->
    </link>
    <gazebo reference="base_footprint">
        <material>Gazebo/Green</material>
        <turnGravityOff>false</turnGravityOff>
    </gazebo>
    <joint name="base_footprint_joint" type="fixed">
      <origin xyz="0 0 ${wheel_x_size/2 - base_z_origin_to_wheel_origin}" rpy="0 0 0" />
      <parent link="base_footprint"/>
      <child link="base_link" />
    </joint>

    <!-- BASE-LINK -->
    <!--Actual body/chassis of the robot-->
    <link name="base_link">
	 <inertial>
		<mass value="${base_mass}" />
		<!--This is the pose of the inertial reference frame, relative to the link reference frame. The origin of the inertial reference frame needs to be at the center of gravity. The axes of the inertial reference frame do not need to be aligned with the principal axes of the inertia.-->
		<origin xyz="${base_x_com} ${base_y_com} ${base_z_com}" />
		<!--The 3x3 rotational inertia matrix. Because the rotational inertia matrix is symmetric, only 6 above-diagonal elements of this matrix are specified here, using the attributes ixx, ixy, ixz, iyy, iyz, izz.-->
		<inertia ixx="${base_ixx_com_cs}" ixy="${base_ixy_com_cs}" ixz="${base_ixz_com_cs}"
			iyy="${base_iyy_com_cs}" iyz="${base_iyz_com_cs}" izz="${base_izz_com_cs}" /> 
	 </inertial>
      <visual>		  
        <eklavya_base_link_mesh>
           <!--<origin xyz="0 0 ${base_x_size/2}" rpy="0 0 0" />-->
            <origin xyz="-0.33 0 0.69" rpy="0 0 0" /> 
           <box size = "${base_x_size} ${base_y_size} ${base_z_size}"/>
          
        </eklavya_base_link_mesh>
      </visual>

      <collision>
        <eklavya_base_link_mesh>
	   <origin xyz="0 0 0" rpy="0 0 0" />
            <!-- <origin xyz="0 0 ${base_x_size/2 }" rpy="0 0 0 " /> -->
           <box size = "${base_x_size} ${base_y_size} ${base_z_size}"/> <!--making it slightly bigger in x and z direction-->
        </eklavya_base_link_mesh>
      </collision>
    </link>
    <gazebo_eklavya_base_link_surface />


	 <!-- WHEEL macros -->
   <!-- <eklavya_wheel suffix="left" parent="base_link">
      <origin xyz="${ -1*base_x_origin_to_wheel_origin} ${base_y_origin_to_wheel_origin} ${ -1*base_z_origin_to_wheel_origin}" rpy="${M_PI} 0 0" /> 
    </eklavya_wheel>
  
    <eklavya_wheel suffix="right" parent="base_link">
      <origin xyz="${ -1*base_x_origin_to_wheel_origin} ${-1*base_y_origin_to_wheel_origin} ${ -1*base_z_origin_to_wheel_origin}" rpy="0 0 0" />
    </eklavya_wheel>  -->

    
    <!-- Castor -->    
  <!--  <castor_support suffix="front" parent="base_link" />	
	<caster_support_hinge suffix="front" parent="base_link" />
    <caster_wheel suffix="front" parent="base_link" /> 
	-->
	
     <!-- DECORATIONS -->
     <!-- Bars -->
	<!--  <eklavya_support_bar suffix="left" parent="base_link" length="0.6">
      <origin rpy="0 0 0" xyz="${base_x_size/2-0.03/2} ${(base_y_size/2-0.03/2)} ${base_z_size+0.6/2}"/>
	</eklavya_support_bar>
    
	<eklavya_support_bar suffix="right" parent="base_link" length="0.6">
     <origin rpy="0 0 0" xyz="${base_x_size/2-0.03/2} ${-1*(base_y_size/2+-0.03/2)} ${base_z_size+0.6/2}"/>
	</eklavya_support_bar>
     
	<eklavya_support_bar suffix="top" parent="base_link" length="0.55">
		<origin rpy="${M_PI/2} 0 0"  xyz="${base_x_size/2-0.03/2} 0 ${base_z_size+0.6+0.03/2}"/>
	</eklavya_support_bar>   -->
	
    


	<!-- Controllers -->
   <!-- <gazebo_eklavya_simple_drive_plugin />    -->
  <!--   <gazebo_eklavya_drive_plugin_diffdrive /> --> <!-- cmd_vel movement -->
  <!--   <gazebo_eklavya_p3d_plugin />--> <!-- Ground Truth-->
  <!--    <eklavya_controllers_common />   -->
    
    <!-- Simulation sensors -->
	<!-- <hokuyo_urg name="hokuyo_laser" parent="base_link" >
      <origin rpy="0 0 0" xyz="${base_x_size/2+0.05} 0  0.021"/>
    </hokuyo_urg> -->
  <!--   <sick_lms100_200 name="sick_laser" parent="base_link" >
      <origin rpy="0 0 0" xyz="${base_x_size/2+0.12} 0  0.080"/>
    </sick_lms100_200>   -->
	<!--  <microstrain_imu name="eklavya_sim_imu" parent="base_link" imu_topic="imu/data" update_rate="30" stdevNoise="0.0017">
		 <origin rpy="0 0 0" xyz="${base_x_size/2-0.03/2} ${base_y_size/4} ${base_z_size}"/>
	</microstrain_imu>  -->
    <!-- Kinect frames and mounting (includes simulation) -->
    <!-- <eklavya_kinect/>  -->
  </xacro:macro>
</robot>
<commit_msg>Tanmay's Update + IMU + Controller<commit_after><?xml version="1.0"?>
<robot name="eklavya_hardware" xmlns:xacro="http://ros.org/wiki/xacro">

    <!-- PROPERTY LIST -->
    <!--All units in m-kg-s-radians unit system -->
    <property name="M_PI" value="3.1415926535897931" />

    <!-- Main Body-base-->
    <!-- Location of com : center of mass -->
    <property name="base_x_com" value="0" />
    <property name="base_y_com" value="0" />
    <property name="base_z_com" value="0" />

    <!-- Size of the base-->
    <property name="base_x_size" value="0.55000000" /> 
    <property name="base_y_size" value="0.55000000" /> 
    <property name="base_z_size" value="0.55000000" />

    <!--Weight of the base-->
    <property name="base_mass" value="33.45489000" /> <!-- in kg-->

    <!--Inertial values for the base at center of mass, aligned with coordinate system. Units are kg*m^2-->
    <property name="base_ixx_com_cs" value="0.60216370" />
    <property name="base_ixy_com_cs" value="-0.02364198" />
    <property name="base_ixz_com_cs" value="-0.11972132" />
    <property name="base_iyy_com_cs" value="1.73859574" />
    <property name="base_iyz_com_cs" value="-0.00154437" />
    <property name="base_izz_com_cs" value="2.02955229" />
    
    
  <!-- Macro for eklavya body. Including Gazebo extensions, but does not include Kinect -->
  <include filename="$(find eklavya_description)/urdf/gazebo2.urdf.xacro"/>
  <include filename="$(find eklavya_description)/urdf/materials.urdf.xacro"/>
  <include filename="$(find eklavya_description)/urdf/eklavya_hardware.xacro"/>
  <include filename="$(find eklavya_description)/urdf/eklavya_wheel.xacro"/>
  <include filename="$(find eklavya_description)/urdf/hokuyo_urg.xacro"/>
  <include filename="$(find eklavya_description)/urdf/sick_lms100_200.urdf.xacro"/>
  <include filename="$(find eklavya_description)/urdf/microstrain_3dmgx3_imu.urdf.xacro"/>
  <include filename="$(find eklavya_description)/urdf/eklavya_kinect.urdf.xacro"/>

    
  <xacro:macro name="eklavya_body">
    <!--Dummy base without INERTIA because base_link is not supposed to have inertia-->
    <!-- BASE-FOOTPRINT -->
    <!-- base_footprint is a fictitious link(frame) that is on the ground right below base_link origin, navigation stack depends on this frame -->
    <link name="base_footprint">
      <visual>
        <origin xyz="0 0 0" rpy="0 0 0" />
        <geometry>
          <box size="0.1 0.1 0.01" />
        </geometry>
      </visual>
      <inertial>
            <mass value="0.0001" />
            <origin xyz="0 0 0" />
            <inertia ixx="0.0001" ixy="0.0" ixz="0.0"
                iyy="0.0001" iyz="0.0" 
                izz="0.0001" />
        </inertial>
	<!--  <collision>
          <origin xyz="0 0 0.0" rpy="0 0 0" />
          <geometry>
            <box size="0.001 0.001 0.001" />
         </geometry>
      </collision>-->
    </link>
    <gazebo reference="base_footprint">
        <material>Gazebo/Green</material>
        <turnGravityOff>false</turnGravityOff>
    </gazebo>
    <joint name="base_footprint_joint" type="fixed">
      <origin xyz="0 0 ${wheel_x_size/2 - base_z_origin_to_wheel_origin}" rpy="0 0 0" />
      <parent link="base_footprint"/>
      <child link="base_link" />
    </joint>

    <!-- BASE-LINK -->
    <!--Actual body/chassis of the robot-->
    <link name="base_link">
	 <inertial>
		<mass value="${base_mass}" />
		<!--This is the pose of the inertial reference frame, relative to the link reference frame. The origin of the inertial reference frame needs to be at the center of gravity. The axes of the inertial reference frame do not need to be aligned with the principal axes of the inertia.-->
		<origin xyz="${base_x_com} ${base_y_com} ${base_z_com}" />
		<!--The 3x3 rotational inertia matrix. Because the rotational inertia matrix is symmetric, only 6 above-diagonal elements of this matrix are specified here, using the attributes ixx, ixy, ixz, iyy, iyz, izz.-->
		<inertia ixx="${base_ixx_com_cs}" ixy="${base_ixy_com_cs}" ixz="${base_ixz_com_cs}"
			iyy="${base_iyy_com_cs}" iyz="${base_iyz_com_cs}" izz="${base_izz_com_cs}" /> 
	 </inertial>
      <visual>		  
        <eklavya_base_link_mesh>
           <!--<origin xyz="0 0 ${base_x_size/2}" rpy="0 0 0" />-->
            <origin xyz="0 0 0" rpy="0 0 0" /> 
           <box size = "0.001 0.001 0.001"/>
          
        </eklavya_base_link_mesh>
      </visual>

      <collision>
        <eklavya_base_link_mesh>
            <origin xyz="0 0 0" rpy="0 0 0" />
           <box size = "${base_x_size} ${base_y_size} ${base_z_size}"/> <!--making it slightly bigger in x and z direction-->
        </eklavya_base_link_mesh>
      </collision>
    </link>
    <gazebo_eklavya_base_link_surface />


	 <!-- WHEEL macros -->
   <eklavya_wheel suffix="left" parent="base_link">
      <origin xyz="${ -1*base_x_origin_to_wheel_origin} ${base_y_origin_to_wheel_origin} ${ -1*base_z_origin_to_wheel_origin}" rpy="${M_PI} 0 0" /> 
    </eklavya_wheel>
  
    <eklavya_wheel suffix="right" parent="base_link">
      <origin xyz="${ -1*base_x_origin_to_wheel_origin} ${-1*base_y_origin_to_wheel_origin} ${ -1*base_z_origin_to_wheel_origin}" rpy="0 0 0" />
    </eklavya_wheel>

    
    <!-- Castor -->    
    <castor_support suffix="front" parent="base_link" />	
	<caster_support_hinge suffix="front" parent="base_link" />
    <caster_wheel suffix="front" parent="base_link" />  

<!-- Controllers -->
   <!-- <gazebo_eklavya_simple_drive_plugin />    -->
    <gazebo_eklavya_drive_plugin_diffdrive /><!-- cmd_vel movement -->
    <gazebo_eklavya_p3d_plugin /> <!-- Ground Truth-->
     <eklavya_controllers_common /> 
    
    <!-- Simulation sensors -->
    <hokuyo_urg name="hokuyo_laser" parent="base_link" >
      <origin rpy="0 0 0" xyz="${-base_x_size/2} 0  0.23"/>
    </hokuyo_urg> 
  <!--   <sick_lms100_200 name="sick_laser" parent="base_link" >
      <origin rpy="0 0 0" xyz="${base_x_size/2+0.12} 0  0.080"/>
    </sick_lms100_200>   -->
	 <microstrain_imu name="eklavya_sim_imu" parent="base_link" imu_topic="imu/data" update_rate="30" stdevNoise="0.0017">
		 <origin rpy="0 0 0" xyz="0 0 0"/>
	</microstrain_imu> 
    <!-- Kinect frames and mounting (includes simulation) -->
    <eklavya_kinect>
	  <!--origin rpy="0 0 ${M_PI/2}" xyz="${-base_x_size/2-0.05} 0  0.6"/-->
	</eklavya_kinect>
  </xacro:macro>
</robot>

{'fraction_non_alphanumeric': 0.17285041224970554, 'fraction_numerical': 0.04843934040047114, 'mean_word_length': 3.1017512077294684, 'pattern_counts': {'":': 0, '<': 285, '<?xml version=': 2, '>': 285, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 4}, 'pii_count': 0, 'substrings_counts': 1, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1555749', 'n_tokens_mistral': 5580, 'n_tokens_neox': 4968, 'n_words': 1006}