gazebo仿真之四輪小車

步驟

1.建立工作空間

mkdir -p ~/smartcar/src
cd ~/smartcar/src
catkin_init_workspace
cd ~/smartcar/
catkin_make
source devel/setup.bash

注:解決編譯後一直要source問題:

gedit ~/.bashrc  

在文件末尾添加 : source ~/smartcar/devel/setup.bash

2.創建ROS小車描述包

cd ~/smartcar/src
roscreate-pkg smartcar_description urdf

3.urdf文件的編寫

1.在smartcar_description文件夾下創建文件夾:urdf,並在urdf文件夾裏創建smart.urdf文件

cd ~/smartcar/src/smartcar_description/
mkdir urdf
cd ~/smartcar/src/smartcar_description/urdf/
touch smartcar.urdf

2.在描述文件smartcar.urdf,寫入下述代碼:

<?xml version="1.0"?> 
<robot name="smartcar">
    <link name="base_link">      <!-- 連桿名爲base_link-->
        <visual>		<!--visual設置連桿的可視化信息-->
            <geometry>		<!--geometry輸入模型的形狀-->
                <box size="0.25 .16 .05"/>  <!--"box"類型,長寬高分別爲0.25,0.16,0.05-->
            </geometry>

            <origin rpy="0 0 1.57075" xyz="0 0 0"/>    <!--origin設置相對於連桿相對座標系的移動和旋轉-->

            <material name="blue">     			<!--material設置連桿的顏色和紋理-->
                <color rgba="0 .5 .8 1"/>
            </material>
        </visual>
    </link>

    <link name="right_front_wheel">            <!--設置右前輪連桿信息-->
        <visual>  
            <geometry>  
                <cylinder length=".02" radius="0.025"/>  
            </geometry>  

            <material name="black">  
                <color rgba="0 0 0 1"/>  
            </material>  
        </visual>  
    </link>  
    
    <joint name="right_front_wheel_joint" type="continuous">    <!--設置關節信息 type="continuous"表示旋轉關節,可以繞單軸無線旋轉-->
        <axis xyz="0 0 1"/>  					<!--axis設置旋轉軸-->
        <parent link="base_link"/>  				<!--parent關節的父連桿-->
        <child link="right_front_wheel"/>  			<!--child關節的子連桿-->
        <origin rpy="0 1.57075 0" xyz="0.08 0.1 -0.03"/>  	<!--origin將父連桿座標系轉換爲子連桿座標系-->
        <limit effort="100" velocity="100"/>  			<!--limit 設置關節的速度、力和半徑(僅當關節是revolute或prismatic時)-->
        <joint_properties damping="0.0" friction="0.0"/>  	<!--joint_properties設置一些屬性 阻尼係數 摩擦係數-->
    </joint>  
    
    <link name="right_back_wheel">  
    <visual>  
        <geometry>  
        <cylinder length=".02" radius="0.025"/>  
        </geometry>  
        <material name="black">  
        <color rgba="0 0 0 1"/>  
        </material>  
    </visual>  
    </link>  
    
    <joint name="right_back_wheel_joint" type="continuous">  
        <axis xyz="0 0 1"/>  
        <parent link="base_link"/>  
        <child link="right_back_wheel"/>  
        <origin rpy="0 1.57075 0" xyz="0.08 -0.1 -0.03"/>  
        <limit effort="100" velocity="100"/>  
        <joint_properties damping="0.0" friction="0.0"/>  
    </joint>  
    
    <link name="left_front_wheel">  
        <visual>  
            <geometry>  
                <cylinder length=".02" radius="0.025"/>  
            </geometry>  
            <material name="black">  
                <color rgba="0 0 0 1"/>  
            </material>  
        </visual>  
    </link>  
    
    <joint name="left_front_wheel_joint" type="continuous">  
        <axis xyz="0 0 1"/>  
        <parent link="base_link"/>  
        <child link="left_front_wheel"/>  
        <origin rpy="0 1.57075 0" xyz="-0.08 0.1 -0.03"/>  
        <limit effort="100" velocity="100"/>  
        <joint_properties damping="0.0" friction="0.0"/>  
    </joint>  
    
    <link name="left_back_wheel">  
        <visual>  
            <geometry>  
                <cylinder length=".02" radius="0.025"/>  
            </geometry>  
            <material name="black">  
                <color rgba="0 0 0 1"/>  
            </material>  
        </visual>  
    </link>  
    
    <joint name="left_back_wheel_joint" type="continuous">  
        <axis xyz="0 0 1"/>  
        <parent link="base_link"/>  
        <child link="left_back_wheel"/>  
        <origin rpy="0 1.57075 0" xyz="-0.08 -0.1 -0.03"/>  
        <limit effort="100" velocity="100"/>  
        <joint_properties damping="0.0" friction="0.0"/>  
    </joint>  
    
    <link name="head">  
        <visual>  
            <geometry>  
                <box size=".02 .03 .03"/>  
            </geometry>  
            <material name="white">
                <color rgba="1 1 1 1"/>  
            </material>  
        </visual>  
    </link>  
    
    <joint name="tobox" type="fixed">  
       <parent link="base_link"/>  
      <child link="head"/>  <!--將子link(right_front_wheel)連接到父link(base_link)上-->
        <origin xyz="0 0.08 0.025"/>  
    </joint>  
</robot>

注:
1…urdf文件主要有兩部分構成:和,其中…主要描述模型硬件結構的屬性信息,裏面對輪子的形狀、顏色、質量、慣性等信息進行了語言描述;…可以理解爲兩個…之間的連接間,如圖中藍色框所示,主要描述兩個…之間的位置等固定連接信息。
2.而輪子和小車主體連接是通過中的與建立橋樑的。
3.在正式的往smarter.launch裏面寫代碼時不要有中文註釋,否則無法讀取內容

4. launch文件的編寫

在/smartcar_description文件夾下建立launch文件夾,並創建智能車的launch文件 display.launch

<launch>
	<arg name="model" />
	<arg name="gui" default="False" />
	<param name="robot_description" textfile="$(find smartcar_description)/urdf/smartcar.urdf" />
	<param name="use_gui" value="$(arg gui)"/>
	<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node>
	<node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
	<node name="rviz" pkg="rviz" type="rviz" args="-d $(find urdf_tutorial)/urdf.rviz" />
</launch>

5. rviz模型展示

運行display.launch文件

roslaunch smartcar_description display.launch

6.rviz中一些參數的設置

1.添加Displays
a.點擊左下角的Add添加顯示內容到Display
b.選擇RobotModel,並點擊確認添加到Display
2.修改Fixed Frame選項參數
修改Fixed Frame爲base_link即可正常顯示,如下圖:

發佈了20 篇原創文章 · 獲贊 17 · 訪問量 4084
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章