ROS学习记录13SLAM仿真学习2——创建一个包含LidarCameraIMU的Ackman小车
Posted 康娜喵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ROS学习记录13SLAM仿真学习2——创建一个包含LidarCameraIMU的Ackman小车相关的知识,希望对你有一定的参考价值。
零.原理
原理就是一个普通的小车,配合上Gazebo plugins
实现Gazebo里的信息采集。
对了我目前打算的是个后驱车,如果要四驱的,可以自己给前轮的Joint
加两个velocity_controllers
即可。
一.造车
1.1 写一个车
先在src/slam_model/urdf/ackman.urdf
写一个车:
<?xml version="1.0" ?>
<robot name="ackman">
<!--Main Body Begin-->
<link name="base_footprint">
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<box size="0.001 0.001 0.001"/>
</geometry>
</visual>
</link>
<joint name="base_footprint_joint" type="fixed">
<origin rpy="0 0 0" xyz="0 0 0.2"/>
<parent link="base_footprint"/>
<child link="base_link"/>
</joint>
<link name="base_link">
<inertial>
<origin xyz="0 0 0"/>
<mass value="300"/>
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
</inertial>
<visual>
<geometry>
<box size="0.8 0.4 0.1"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
<material name="blue">
<color rgba="0.5 0.2 0.8 1"/>
</material>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<box size="0.8 0.4 0.1"/>
</geometry>
<inertial>
<mass value="300"/>
<inertia ixx="0.0053" ixy="0" ixz="0" iyy="0.0083" iyz="0" izz="0.0667"/>
</inertial>
</collision>
</link>
<link name="base_wheel">
<inertial>
<origin xyz="0 0 0"/>
<mass value="0.1"/>
<inertia ixx="-1.0" ixy="0.0" ixz="0.0" iyy="-1.0" iyz="0.0" izz="-1.0"/>
</inertial>
<visual>
<geometry>
<box size="0.001 0.001 0.001"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
<material name="blue">
<color rgba="0.5 0.2 0.8 1"/>
</material>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<box size="0.001 0.001 0.001"/>
</geometry>
<inertial>
<mass value="0.1"/>
<inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1"/>
</inertial>
</collision>
</link>
<joint name="base_wheel_joint" type="fixed">
<origin rpy="0 0 0" xyz="0 0 -0.1"/>
<parent link="base_link"/>
<child link="base_wheel"/>
</joint>
<joint name="left_rear_wheel_joint" type="continuous">
<axis xyz="0 0 -1"/>
<parent link="base_wheel"/>
<child link="left_rear_wheel"/>
<origin rpy="1.57 0 0" xyz="-0.3 0.3 0"/>
<limit effort="10" velocity="100"/>
<joint_properties damping="0.0" friction="0.0"/>
</joint>
<link name="left_rear_wheel">
<inertial>
<origin rpy="0 0 0" xyz="0 0 0"/>
<mass value="10"/>
<inertia ixx="-0.05" ixy="0.0" ixz="0.0" iyy="-0.05" iyz="0.0" izz="-0.05"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<cylinder radius="0.1" length="0.05"/>
</geometry>
<material name="black">
<color rgba="0 0 0 1"/>
</material>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<cylinder radius="0.1" length="0.05"/>
</geometry>
<inertial>
<mass value="10"/>
<inertia ixx="-0.05" ixy="0.0" ixz="0.0" iyy="-0.05" iyz="0.0" izz="-0.05"/>
</inertial>
</collision>
</link>
<joint name="right_rear_wheel_joint" type="continuous">
<axis xyz="0 0 -1"/>
<parent link="base_wheel"/>
<child link="right_rear_wheel"/>
<origin rpy="1.57 0 0" xyz="-0.3 -0.3 0"/>
<limit effort="10" velocity="100"/>
<joint_properties damping="0.0" friction="0.0"/>
</joint>
<link name="right_rear_wheel">
<inertial>
<origin rpy="0 0 0" xyz="0 0 0"/>
<mass value="10"/>
<inertia ixx="-0.05" ixy="0.0" ixz="0.0" iyy="-0.05" iyz="0.0" izz="-0.05"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<cylinder radius="0.1" length="0.05"/>
</geometry>
<material name="black">
<color rgba="0 0 0 1"/>
</material>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<cylinder radius="0.1" length="0.05"/>
</geometry>
<inertial>
<mass value="10"/>
<inertia ixx="-0.05" ixy="0.0" ixz="0.0" iyy="-0.05" iyz="0.0" izz="-0.05"/>
</inertial>
</collision>
</link>
<joint name="left_bridge_joint" type="revolute">
<parent link="base_wheel"/>
<child link="left_bridge"/>
<origin rpy="0 0 0" xyz="0.3 0.255 0"/> <!--Y=0.25-0.5*whell_length-0.5*brige_y-->
<axis xyz="0 0 1"/>
<limit effort="2.5" lower="-0.758" upper="0.758" velocity="0.1"/>
</joint>
<link name="left_bridge">
<inertial>
<origin xyz="0.0 0 0"/>
<mass value="0.1"/>
<inertia ixx="-1.0" ixy="0.0" ixz="0.0" iyy="-1.0" iyz="0.0" izz="-1.0"/>
</inertial>
<visual>
<geometry>
<box size="0.06 0.04 0.01"/>
</geometry>
<material name="red">
<color rgba="1 0 0 1"/>
</material>
</visual>
<collision>
<geometry>
<box size=以上是关于ROS学习记录13SLAM仿真学习2——创建一个包含LidarCameraIMU的Ackman小车的主要内容,如果未能解决你的问题,请参考以下文章
ROS学习记录12SLAM仿真学习1——ROS Control
ROS学习记录12SLAM仿真学习1——ROS Control