iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0
自我挑戰組

ROS 筆記:要怎麼叫無人機自己飛系列 第 19

【ROS 筆記:要怎麼叫無人機自己飛】Day 19:使用 Gazebo 的插件(plugins)來為模型增加感測器

  • 分享至 

  • xImage
  •  

今天繼續介紹感測器插件的部分,比起模型插件還會用到 PID 控制演算法,感測器插件基本上就是一些感測能力的設置,應該會比模型插件稍微好理解一些。

添加感測器插件的基礎步驟

和模型插件一樣,如果要為模型新增感測器功能,也是模型的 SDF 或 URDF 文件中定義要加入的感測器插件,感測器插件的定義通常包括感測器的類型、更新頻率、輸出資料格式等。

找到在 ardrone_gazebo 專案ardrone_gazebo.urdf 檔,文件已經很貼心地把感測器的部分用備註標示出來了,讓我們來看看作者的感測器插件都寫了什麼。

IMU 感測器

為了讓說明比較有條理一點,我稍微調整了文件內容的順序。

<sensor name='sensor_imu' type='imu'>

    <!-- 匯入 so -->
    <plugin name='ros_imu' filename='libplugin_ros_imu.so'>
    </plugin>

    <!-- 一般設置 -->
    <always_on> 1 </always_on>
    <update_rate> 100 </update_rate>
    <pose> 0 0 0 0 0 0 </pose>

    <!-- IMU 感測設置 -->
    <imu>
        <noise>
            <type>gaussian</type>
            <rate>
                <mean> 0 </mean>
                <stddev> 0 </stddev>
            </rate>
            <accel>
                <mean> 0 </mean>
                <stddev> 0.00 </stddev>
            </accel>
        </noise>
    </imu>
</sensor>
  • Gazebo 、感測器標籤和插件標籤:

    同養也是全部定義在 <gazebo> 標籤中。不過相較於模型插件將參數全部定義在 <plugin> 標籤裡,感測器則是只利用 <plugin> 標籤匯入共享物件檔,其餘設置則是在定義在 <sensor> 標籤裡面。

  • 一般設置:

    這邊設定一些感測器的常用的設定,包含啟用狀態與否、更新率和感測器與模型的相對位置。

  • IMU 感測設置:

    這部份描述 IMU 感測器的功能,主要設定了數值的雜訊特性。

相機感測器

ardrone_gazebo 專案裡定義無人機有兩個鏡頭,一個前鏡頭(Front Camera)和一個向下鏡頭(Downward Camera),比如說以下這段是向下鏡頭:

<!-- downward looking camera -->
<sensor name="down_camera" type="camera">
    
    <!-- 匯入 so -->
    <plugin name='down_camera' filename='libplugin_ros_cam.so'>
        <!--
        I remvoed the /ardrone part here.
        <imageTopicName>/ardrone/down_camera/image_raw</imageTopicName>
        -->
        <imageTopicName>/down_camera/image_raw</imageTopicName>
    </plugin>
    
    <!-- 一般設置 -->
    <pose> 0.0 0.0 0.0 0 1.570796326794897 0 </pose> <!-- pitch 設定旋轉 90 度(朝正下方) -->
    <always_on>1</always_on>
    <update_rate>15</update_rate>
    <visualize>true</visualize> <!-- 在 Gazebo 中顯示相機 -->
    
    <!-- 相機感測設置 -->
    <camera>
        <horizontal_fov>1.047</horizontal_fov>
        <image>
            <width>640</width>
            <height>360</height>
            <format>R8G8B8</format>
        </image>
        <clip>
            <near>0.1</near>
            <far>100</far>
        </clip>
        <noise>
            <type>gaussian</type>
            <mean>0.0</mean>
            <stddev>0.005</stddev>
        </noise>
    </camera>
</sensor>
  • 相機感測設置:

    這部份同樣是描述相機的功能,包含視野(Field of view)、影像解析度和格式、剪裁範圍(最近與最遠可以看到的範圍),以及視訊雜訊特性。



上一篇
【ROS 筆記:要怎麼叫無人機自己飛】Day 18:使用 Gazebo 的插件(plugins)來控制模型
下一篇
【ROS 筆記:要怎麼叫無人機自己飛】Day 20:控制 Gazebo 中的無人機
系列文
ROS 筆記:要怎麼叫無人機自己飛25
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言