官术网_书友最值得收藏!

3.5.4 機器人底座模擬

通過上一節(jié)的操作,我們完成了可以用于ROS的機械臂URDF文件。我們已經(jīng)構建了一個可以用于ROS的機器人模型,下面我們需要添加一些標簽,以便在Gazebo中查看該模型。我們將從定義碰撞開始。

1.定義碰撞

為了在Gazebo中進行機器人模型的可視化,我們需要添加<collision>標簽,位于<link>標簽中,與<visual>標簽同級,如下所示:

對于底座,由于我們在robot_base.urdf.xacro文件中定義了base_link,因此將上述內容添加至該文件中的相應位置。

對于所有的四個輪子連桿,由于我們在robot_essentials.xacro中進行的定義,因此將以下內容添加至該文件中:

由于Gazebo是一個物理模擬器,因此我們需要在<inertial>標簽中添加物理學屬性。我們可以從第三方軟件中獲得質量和慣性特性,將獲得的慣性特性與適當?shù)臉撕炓黄鹛砑拥?lt;link>標簽內,如下所示:

·對于底座,添加的內容如下:

·對于所有的四個輪子,添加的內容如下:

至此,我們完成了Gazebo的屬性添加,下面創(chuàng)建機械裝置。

2.定義執(zhí)行器

下面我們需要在robot_base_essentials.xacro文件中為機器人輪子定義執(zhí)行器信息:

在機器人模型文件中以宏的形式調用:

讀者可以在本書的GitHub倉庫查看robot_base_essentials.xacro文件,網(wǎng)址為https://github.com/PacktPublishing/ROS-Robotics-Projects-SecondEdition/blob/master/chapter_3_ws/src/robot_description/urdf/robot_base_essentials.xacro。

至此,我們完成了執(zhí)行器機械裝置的調用。下面,我們將調用控制器,以便能夠使用機械裝置并使機器人動起來。

3.定義控制器

最后,我們將導入建立Gazebo和ROS通信連接所必需的插件。添加的方法為創(chuàng)建一個包含<Gazebo>標簽的gazebo_essentials_base.xacro文件。

在創(chuàng)建的文件中,添加以下gazebo_ros_control插件:

機器人的差分驅動插件為:

輪子的摩擦屬性以宏的形式定義,具體如下:

在機器人模型文件中調用宏的方式如下:

讀者可以在本書的GitHub倉庫查看gazebo_essentials_base.xacro文件,網(wǎng)址為https://github.com/PacktPublishing/ROS-Robotics-Projects-SecondEdition/blob/master/chapter_3_ws/src/robot_description/urdf/gazebo_essentials_base.xacro

至此,我們定義了包含Gazebo插件的機器人宏,下面我們將把它們添加到機器人模型文件中。具體步驟很簡單,只需要在機器人模型文件的<robot>宏標簽內添加以下代碼:

至此,我們完成了URDF文件的構建,下面對控制器進行配置。首先創(chuàng)建以下我們將要使用到的配置文件:先返回工作空間,進入我們創(chuàng)建的配置文件夾,再創(chuàng)建控制器配置文件。執(zhí)行的命令如下所示:

然后,將從本書代碼倉庫獲取的文件復制到配置文件中,獲取文件的鏈接為https://github.com/PacktPublishing/ROS-Robotics-Projects-SecondEdition/blob/master/chapter_3_ws/src/robot_description/config/control.yaml

主站蜘蛛池模板: 乌拉特中旗| 乾安县| 浙江省| 隆昌县| 泽州县| 大关县| 镇赉县| 祁门县| 定西市| 自治县| 邢台县| 张家川| 新闻| 溧阳市| 井陉县| 神池县| 恩平市| 龙陵县| 遵义市| 康乐县| 社旗县| 沧州市| 乌鲁木齐市| 福海县| 克什克腾旗| 寿阳县| 永福县| 华安县| 临猗县| 双桥区| 沭阳县| 库尔勒市| 永靖县| 杨浦区| 萨嘎县| 临颍县| 温宿县| 汾西县| 神池县| 铜陵市| 宜宾县|