• Burger机器人Gazebo仿真添加Kinect


    kinect_gazebo.xacro

    <?xml version="1.0"?>
    <robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="kinect_camera">
    
        <xacro:macro name="kinect_camera" params="prefix:=camera">
            <!-- Create kinect reference frame -->
            <!-- Add mesh for kinect -->
            <link name="${prefix}_link">
                <origin xyz="0 0 0" rpy="0 0 0"/>
                <visual>
                    <origin xyz="0 0 0" rpy="0 0 ${M_PI/2}"/>
                    <geometry>
                        <mesh filename="package://turtlebot3_description/meshes/kinect.dae" scale="0.4 0.4 0.4" />
                    </geometry>
                </visual>
                <collision>
                    <geometry>
                        <box size="0.07 0.3 0.09"/>
                    </geometry>
                </collision>
            </link>
    
            <joint name="${prefix}_optical_joint" type="fixed">
                <origin xyz="0 0 0" rpy="-1.5708 0 -1.5708"/>
                <parent link="${prefix}_link"/>
                <child link="${prefix}_frame_optical"/>
            </joint>
    
            <link name="${prefix}_frame_optical"/>
    
            <gazebo reference="${prefix}_link">
                <sensor type="depth" name="${prefix}">
                    <always_on>true</always_on>
                    <update_rate>20.0</update_rate>
                    <camera>
                        <horizontal_fov>${60.0*M_PI/180.0}</horizontal_fov>
                        <image>
                            <format>R8G8B8</format>
                            <width>640</width>
                            <height>480</height>
                        </image>
                        <clip>
                            <near>0.05</near>
                            <far>8.0</far>
                        </clip>
                    </camera>
                    <plugin name="kinect_${prefix}_controller" filename="libgazebo_ros_openni_kinect.so">
                        <cameraName>${prefix}</cameraName>
                        <alwaysOn>true</alwaysOn>
                        <updateRate>10</updateRate>
                        <imageTopicName>rgb/image_raw</imageTopicName>
                        <depthImageTopicName>depth/image_raw</depthImageTopicName>
                        <pointCloudTopicName>depth/points</pointCloudTopicName>
                        <cameraInfoTopicName>rgb/camera_info</cameraInfoTopicName>
                        <depthImageCameraInfoTopicName>depth/camera_info</depthImageCameraInfoTopicName>
                        <frameName>${prefix}_frame_optical</frameName>
                        <baseline>0.1</baseline>
                        <distortion_k1>0.0</distortion_k1>
                        <distortion_k2>0.0</distortion_k2>
                        <distortion_k3>0.0</distortion_k3>
                        <distortion_t1>0.0</distortion_t1>
                        <distortion_t2>0.0</distortion_t2>
                        <pointCloudCutoff>0.4</pointCloudCutoff>
                    </plugin>
                </sensor>
            </gazebo>
    
        </xacro:macro>
    </robot>
    

      

    修改turtlebot3_burger.urdf.xacro文件

    <?xml version="1.0" ?>
    <robot name="turtlebot3_burger" xmlns:xacro="http://ros.org/wiki/xacro">
      <xacro:include filename="$(find turtlebot3_description)/urdf/common_properties.xacro"/>
      <xacro:include filename="$(find turtlebot3_description)/urdf/turtlebot3_burger.gazebo.xacro"/>
      <xacro:include filename="$(find turtlebot3_description)/urdf/kinect_gazebo.xacro"/>
    
      <xacro:property name="kinect_offset_x" value="0.0" />
      <xacro:property name="kinect_offset_y" value="0.0" />
      <xacro:property name="kinect_offset_z" value="0.1" />
      <xacro:property name="M_PI" value="3.14159" />
    
      <xacro:kinect_camera prefix="camera"/>
      <joint name="kinect_frame_joint" type="fixed">
        <origin xyz="${kinect_offset_x} ${kinect_offset_y} ${kinect_offset_z}" rpy="0 0 0" />
        <parent link="base_link"/>
        <child link="camera_link"/>
      </joint>
    
      <link name="base_footprint"/>
    
      <joint name="base_joint" type="fixed">
        <parent link="base_footprint"/>
        <child link="base_link"/>
        <origin xyz="0.0 0.0 0.010" rpy="0 0 0"/>
      </joint>
    
      <link name="base_link">
        <visual>
          <origin xyz="-0.032 0 0.0" rpy="0 0 0"/>
          <geometry>
            <mesh filename="package://turtlebot3_description/meshes/bases/burger_base.stl" scale="0.001 0.001 0.001"/>
          </geometry>
          <material name="light_black"/>
        </visual>
    
        <collision>
          <origin xyz="-0.032 0 0.070" rpy="0 0 0"/>
          <geometry>
            <box size="0.140 0.140 0.143"/>
          </geometry>
        </collision>
    
        <inertial>
          <origin xyz="0 0 0" rpy="0 0 0"/>
          <mass value="8.2573504e-01"/>
          <inertia ixx="2.2124416e-03" ixy="-1.2294101e-05" ixz="3.4938785e-05"
                   iyy="2.1193702e-03" iyz="-5.0120904e-06"
                   izz="2.0064271e-03" />
        </inertial>
      </link>
    
      <joint name="wheel_left_joint" type="continuous">
        <parent link="base_link"/>
        <child link="wheel_left_link"/>
        <origin xyz="0.0 0.08 0.023" rpy="-1.57 0 0"/>
        <axis xyz="0 0 1"/>
      </joint>
    
      <link name="wheel_left_link">
        <visual>
          <origin xyz="0 0 0" rpy="1.57 0 0"/>
          <geometry>
            <mesh filename="package://turtlebot3_description/meshes/wheels/left_tire.stl" scale="0.001 0.001 0.001"/>
          </geometry>
          <material name="dark"/>
        </visual>
    
        <collision>
          <origin xyz="0 0 0" rpy="0 0 0"/>
          <geometry>
            <cylinder length="0.018" radius="0.033"/>
          </geometry>
        </collision>
    
        <inertial>
          <origin xyz="0 0 0" />
          <mass value="2.8498940e-02" />
          <inertia ixx="1.1175580e-05" ixy="-4.2369783e-11" ixz="-5.9381719e-09"
                   iyy="1.1192413e-05" iyz="-1.4400107e-11"
                   izz="2.0712558e-05" />
          </inertial>
      </link>
    
      <joint name="wheel_right_joint" type="continuous">
        <parent link="base_link"/>
        <child link="wheel_right_link"/>
        <origin xyz="0.0 -0.080 0.023" rpy="-1.57 0 0"/>
        <axis xyz="0 0 1"/>
      </joint>
    
      <link name="wheel_right_link">
        <visual>
          <origin xyz="0 0 0" rpy="1.57 0 0"/>
          <geometry>
            <mesh filename="package://turtlebot3_description/meshes/wheels/right_tire.stl" scale="0.001 0.001 0.001"/>
          </geometry>
          <material name="dark"/>
        </visual>
    
        <collision>
          <origin xyz="0 0 0" rpy="0 0 0"/>
          <geometry>
            <cylinder length="0.018" radius="0.033"/>
          </geometry>
        </collision>
    
        <inertial>
          <origin xyz="0 0 0" />
          <mass value="2.8498940e-02" />
          <inertia ixx="1.1175580e-05" ixy="-4.2369783e-11" ixz="-5.9381719e-09"
                   iyy="1.1192413e-05" iyz="-1.4400107e-11"
                   izz="2.0712558e-05" />
          </inertial>
      </link>
    
      <joint name="caster_back_joint" type="fixed">
        <parent link="base_link"/>
        <child link="caster_back_link"/>
        <origin xyz="-0.081 0 -0.004" rpy="-1.57 0 0"/>
      </joint>
    
      <link name="caster_back_link">
        <collision>
          <origin xyz="0 0.001 0" rpy="0 0 0"/>
          <geometry>
            <box size="0.030 0.009 0.020"/>
          </geometry>
        </collision>
    
        <inertial>
          <origin xyz="0 0 0" />
          <mass value="0.005" />
          <inertia ixx="0.001" ixy="0.0" ixz="0.0"
                   iyy="0.001" iyz="0.0"
                   izz="0.001" />
        </inertial>
      </link>
    
      <joint name="imu_joint" type="fixed">
        <parent link="base_link"/>
        <child link="imu_link"/>
        <origin xyz="-0.032 0 0.068" rpy="0 0 0"/>
      </joint>
    
      <link name="imu_link"/>
    
      <joint name="scan_joint" type="fixed">
        <parent link="base_link"/>
        <child link="base_scan"/>
        <origin xyz="-0.032 0 0.172" rpy="0 0 0"/>
      </joint>
    
      <link name="base_scan">
        <visual>
          <origin xyz="0 0 0.0" rpy="0 0 0"/>
          <geometry>
            <mesh filename="package://turtlebot3_description/meshes/sensors/lds.stl" scale="0.001 0.001 0.001"/>
          </geometry>
          <material name="dark"/>
        </visual>
    
        <collision>
          <origin xyz="0.015 0 -0.0065" rpy="0 0 0"/>
          <geometry>
            <cylinder length="0.0315" radius="0.055"/>
          </geometry>
        </collision>
    
        <inertial>
          <mass value="0.114" />
          <origin xyz="0 0 0" />
          <inertia ixx="0.001" ixy="0.0" ixz="0.0"
                   iyy="0.001" iyz="0.0"
                   izz="0.001" />
        </inertial>
      </link>
    
    </robot>
    

      

     加载模型文件

    turtlebot3_description/meshes文件夹

    参考

    参考2

  • 相关阅读:
    java之获取变量的类型
    java中的++和--
    java(三)基础类型之间的转换
    golang数据结构之总结
    golang数据结构之树的三种遍历方式
    golang数据结构之散哈希表(Hash)
    golang数据结构之递归解决迷宫问题
    golang数据结构之利用栈求计算表达式(加减乘除)
    golang数据结构之栈
    golang数据结构之快速排序
  • 原文地址:https://www.cnblogs.com/kay2018/p/15891314.html
Copyright © 2020-2023  润新知