《Webots移動機器人仿真實例教程》全面介紹了Webots仿真軟件的使用及其在各種機器人領域的應用。本書內(nèi)容詳盡,從Webots的基礎入門到高級操作,既包括了軟件安裝、界面操作、節(jié)點編輯等基礎知識,又涵蓋了兩輪差速機器人、四輪差速機器人、四足機器人、無人機、水下機器人、人形機器人等多種類型機器人的仿真案例。本書內(nèi)容特色在于實用性和操作性,通過豐富的案例和詳細的步驟指導,幫助讀者快速掌握Webots的仿真技巧。此外,本書還提供了控制器編程環(huán)境的搭建和編程方法,讓讀者能夠自主設計并實現(xiàn)復雜的機器人控制算法。
本書適合機器人專業(yè)的學生、科研工作者、工程師以及對機器人仿真感興趣的讀者閱讀。無論是初學者還是有一定經(jīng)驗的用戶,都能從本書中獲得寶貴的指導和啟示。通過閱讀本書,讀者能夠更深入地理解Webots軟件的功能和應用,提升自己在機器人仿真領域的技能和水平。
第1章 Webots入門
1.1 Webots簡介 001
1.2 常用機器人仿真軟件對比 002
1.3 Webots安裝 003
1.3.1 Webots軟件版本選擇 003
1.3.2 Webots軟件安裝 005
1.3.3 GitHub網(wǎng)絡安裝 007
1.3.4 GitHub源文件下載安裝 009
1.4 編譯源文件中的控制器程序 011
1.5 初識機器人運動仿真 012
1.5.1 切換到中文界面 012
1.5.2 界面風格 012
1.5.3 軟件自帶的項目示例 013
1.5.4 認識仿真環(huán)境 014
1.5.5 編寫一個簡單的機器人仿真項目 015
1.5.6 Webots世界文件(.wbt) 023
1.5.7 節(jié)點描述文件(.proto) 024
1.5.8 控制器程序 028
1.6 Webots機器人運動仿真項目搭建思路 029
1.7 幫助文檔及項目示例 029
1.7.1 在線幫助文檔 031
1.7.2 及時查看在線幫助文檔的方法 032
1.7.3 離線查看幫助文檔 032
1.7.4 半離線查看幫助文檔 033
1.7.5 項目示例文件 036
第2章 Webots基本操作
2.1 3D視圖基本操作 037
2.1.1 調(diào)整視角 037
2.1.2 移動和旋轉(zhuǎn)對象 037
2.1.3 恢復布局 037
2.2 人為施加力操作 038
2.3 工具欄 038
2.3.1 仿真時間及仿真速率 039
2.3.2 運行控制 039
2.3.3 渲染 039
2.3.4 錄屏和聲音 039
2.4 向?qū)Р藛?040
2.4.1 新建項目的主要步驟 040
2.4.2 新建項目目錄向?qū)?040
2.4.3 新建機器人控制器向?qū)?041
2.4.4 Webots控制器程序運行原理分析 041
2.5 節(jié)點 042
2.5.1 添加節(jié)點 042
2.5.2 添加節(jié)點時無法看到縮略圖 043
2.5.3 無法添加基礎節(jié)點 044
2.6 對象的導出和導入 045
2.6.1 不同版本的Webots對文件格式導入和導出的支持 045
2.6.2 URDF文件的導入和導出 046
2.6.3 外部三維模型導入(stl、obj、dae)到Webots2022a 052
2.6.4 wbo模型的導入和導出 054
2.7 查看菜單 060
2.7.1 顯示坐標系統(tǒng) 060
2.7.2 恢復視角 061
2.7.3 視角跟隨機器人移動 061
2.7.4 移動視角到對象 062
2.7.5 顯示攝像頭視場 062
2.7.6 顯示接觸點 062
2.8 Overlays菜單 062
2.9 添加聲音 063
2.9.1 添加電機旋轉(zhuǎn)聲音 063
2.9.2 添加碰撞聲音 064
2.10 DEF和USE關鍵字 064
第3章 Webots的節(jié)點Node
3.1 世界、節(jié)點、節(jié)點屬性 067
3.2 場景樹 068
3.3 節(jié)點的通用屬性 069
3.3.1 外觀調(diào)整 069
3.3.2 位姿和縮放 074
3.3.3 DEF 和name屬性 075
3.4 WorldInfo節(jié)點 076
3.4.1 基本屬性 076
3.4.2 basicTimeStep基本仿真步長 077
3.4.3 接觸屬性contact- Properties 077
3.5 TexturedBackgroundLight光源節(jié)點 085
3.6 Viewpoint節(jié)點 086
3.7 RectangleArena地面節(jié)點 087
3.7.1 地面大小floorSize屬性 087
3.7.2 地面外觀floorAppearance Parquetry屬性 088
3.7.3 地面外觀appearance PBRAppearance屬性 089
3.7.4 地面圍墻 089
3.8 其他地面 090
3.9 實體Solid節(jié)點 090
3.9.1 基本屬性 091
3.9.2 子節(jié)點children屬性 091
3.9.3 物理physics屬性 092
3.9.4 邊界(周界)boundingObject屬性 093
3.9.5 調(diào)整實體對象的大小和位姿 097
3.10 形狀Shape節(jié)點 097
3.11 關節(jié)Joint節(jié)點 098
3.11.1 關節(jié)參數(shù) 099
3.11.2 設備device節(jié)點 102
3.12 旋轉(zhuǎn)關節(jié)HingeJoint/Hinge2Joint節(jié)點 107
3.12.1 旋轉(zhuǎn)關節(jié) 107
3.12.2 編程 109
3.12.3 示例1:簡單旋轉(zhuǎn)關節(jié) 109
3.12.4 示例2:關節(jié)的參數(shù)調(diào)節(jié) 110
3.13 滑動關節(jié)SliderJoint節(jié)點 111
3.13.1 滑動關節(jié)參數(shù) 111
3.13.2 示例1:簡單滑動關節(jié) 111
3.13.3 示例2:滑動關節(jié)對比 113
3.13.4 示例3:滑動關節(jié)實現(xiàn)彈簧效果 114
3.14 球關節(jié)BallJoint節(jié)點 114
3.15 機器人Robot節(jié)點 115
3.15.1 機器人控制器controller 116
3.15.2 機器人控制器周期執(zhí)行函數(shù)wb_robot_step() 116
3.15.3 機器人控制器與仿真器并行執(zhí)行 118
3.15.4 同步與異步控制器synchronization 119
3.15.5 自碰撞檢測selfCollision 119
3.15.6 顯示機器人窗口 119
3.15.7 Controller屬性 120
3.16 組Group節(jié)點 120
3.17 位姿變換Transform節(jié)點 121
3.18 發(fā)射器Emitter和接收器Receiver節(jié)點 122
3.18.1 發(fā)射器節(jié)點Emitter 123
3.18.2 接收器節(jié)點Receiver 124
3.18.3 函數(shù)及示例 125
3.19 LED節(jié)點 127
3.20 GPS節(jié)點 128
3.20.1 描述及屬性 128
3.20.2 函數(shù)及示例 129
3.21 陀螺儀Gyro節(jié)點 130
3.21.1 描述及屬性 130
3.21.2 函數(shù)及示例 131
3.22 羅盤Compass節(jié)點 132
3.22.1 描述及屬性 132
3.22.2 函數(shù)及示例 133
3.23 慣性InertialUnit節(jié)點(IMU) 134
3.23.1 描述及屬性 134
3.23.2 函數(shù)及示例 134
3.24 監(jiān)控Supervisor節(jié)點 136
3.25 距離傳感器DistanceSensor節(jié)點 136
3.25.1 屬性 137
3.25.2 紅外距離傳感器 140
3.25.3 聲吶傳感器 140
3.25.4 編程 140
3.25.5 距離傳感器示例 141
3.26 接觸傳感器TouchSensor節(jié)點 141
3.26.1 描述及屬性 141
3.26.2 示例 142
3.27 螺旋槳Propeller節(jié)點 143
3.27.1 螺旋槳的推力和扭矩 143
3.27.2 螺旋槳的旋轉(zhuǎn)方向和推力/扭矩方向 146
3.27.3 函數(shù)及示例 146
3.28 履帶Track節(jié)點及履帶輪TrackWheel節(jié)點 149
3.28.1 描述及屬性 149
3.28.2 示例 152
3.29 流體Fluid節(jié)點及浸沒屬性immersionProperties節(jié)點 153
3.29.1 流體Fluid節(jié)點描述及屬性 153
3.29.2 浸沒屬性immersionProperties節(jié)點 154
3.29.3 示例1:浮力 156
3.29.4 示例2:拖曳力之推動力 157
3.29.5 示例3:拖曳力之黏滯力 158
3.30 阻尼Damping節(jié)點 159
3.30.1 描述及屬性 159
3.30.2 示例 159
3.31 攝像機Camera節(jié)點 160
3.31.1 描述及屬性 160
3.31.2 相機的識別功能 161
3.31.3 保存相機圖像到指定位置 163
3.32 頂點3D形狀IndexedFaceSet節(jié)點 164
3.33 皮膚Skin節(jié)點 164
3.34 鍵盤輸入 165
3.34.1 編程 166
3.34.2 鍵盤示例代碼 166
3.35 仿真項目編輯流程 167
第4章 Webots控制器編程環(huán)境搭建
4.1 Python編程 168
4.1.1 Python和Webots聯(lián)合仿真原理 168
4.1.2 Python環(huán)境設置 168
4.1.3 使用PyCharm運行Python控制器 169
4.1.4 使用Python解釋器運行Python控制器 172
4.2 Matlab編程 174
4.2.1 Matlab和Webots聯(lián)合仿真原理 174
4.2.2 Matlab環(huán)境設置 174
4.2.3 Matlab控制器程序使用 177
4.3 Visual Studio和Webots聯(lián)合仿真 177
4.3.1 Visual Studio和Webots聯(lián)合仿真原理 177
4.3.2 Webots設置 178
4.3.3 Visual Studio控制器程序使用 180
4.4 機器人窗口插件Robot Window Plugin 181
4.4.1 機器人窗口設置和使用 181
4.4.2 機器人窗口工作原理分析 182
4.4.3 機器人窗口補充說明 182
4.5 文件讀寫操作 183
第5章 Webots編程
5.1 控制器程序編程 184
5.1.1 編碼格式與習慣 184
5.1.2 HelloWorld示例 185
5.1.3 讀傳感器示例 186
5.1.4 使用執(zhí)行器示例 188
5.1.5 程序和場景對象的接口 189
5.1.6 仿真周期和控制周期 189
5.1.7 向控制器程序傳遞參數(shù)(C語言) 190
5.1.8 向控制器傳遞參數(shù)(Python) 191
5.1.9 多個機器人使用相同的控制器程序 192
5.1.10 控制器程序退出 193
5.1.11 Webots中的包含頭文件 193
5.2 監(jiān)控Supervisor節(jié)點編程 194
5.2.1 Supervisor節(jié)點工作原理 194
5.2.2 Supervisor節(jié)點示例1:基本操作 195
5.2.3 Supervisor節(jié)點示例2:為場景對象施加力和力矩 198
5.2.4 Supervisor節(jié)點常用函數(shù)和操作 200
5.3 C語言程序框架 209
5.4 Python語言程序框架 210
5.4.1 無監(jiān)督的程序框架 210
5.4.2 有監(jiān)督的程序框架 211
5.5 C語言與Python語言編程的運行差異 214
5.6 常用的庫 215
5.7 常用函數(shù) 215
5.7.1 打印輸出printf() 215
5.7.2 格式化輸出ANSI_PRINTF_IN_BLACK() 216
5.7.3 返回仿真步長wb_robot_get_basic_time_step() 218
5.7.4 返回以秒為單位的系統(tǒng)仿真模擬時間wb_robot_get_time() 218
5.7.5 返回項目路徑wb_robot_get_project_path() 219
5.7.6 C語言機器人初始化wb_robot_init()與清理環(huán)境wb_robot_cleanup() 219
5.7.7 獲取對象句柄wb_robot_get_device() 219
5.7.8 設置電機位置wb_motor_set_position() 219
5.7.9 設置電機速度wb_motor_set_velocity() 220
5.7.10 獲取電機速度wb_motor_get_velocity() 220
5.7.11 延時wb_robot_step()和自定義函數(shù) 221
第6章 兩輪差速機器人仿真
6.1 搭建兩輪差速機器人模型 222
6.1.1 添加機器人節(jié)點和車體 223
6.1.2 添加差速車輪 223
6.1.3 添加球輪 224
6.2 編寫控制器程序 224
6.3 練習題:搭建兩輪差速巡線機器人 225
第7章 四輪差速機器人仿真
7.1 搭建基本的四輪差速機器人 226
7.2 搭建具有基本避障功能的四輪差速機器人 230
7.3 練習題1:搭建四輪差速巡線機器人 232
7.4 練習題2:利用四輪差速機器人實現(xiàn)Bug2算法 232
第8章 機器人底盤仿真
8.1 全向輪的仿真 233
8.1.1 全向輪仿真結(jié)構(gòu) 233
8.1.2 全向輪的控制 235
8.2 麥克納姆輪的仿真 236
8.2.1 麥克納姆輪仿真結(jié)構(gòu) 236
8.2.2 設計自己的麥克納姆輪小車 239
8.2.3 麥克納姆輪小車的控制 240
8.3 練習題:RoboCup機器人大賽中型組仿真系統(tǒng) 242
第9章 四足機器人仿真
9.1 四足機器人模型的搭建 244
9.1.1 使用向?qū)Ы㈨椖?245
9.1.2 添加機器人Robot節(jié)點 246
9.1.3 添加機器人身體 246
9.1.4 添加機器人頭部 248
9.1.5 添加機器人右前腿 248
9.1.6 添加機器人另外三條腿 256
9.2 添加機器人控制器程序 258
9.2.1 單腿逆運動學分析 258
9.2.2 walk步態(tài)的說明 261
9.2.3 trot步態(tài)的說明 262
9.3 練習題:機器狗越障 263
第10章 無人機仿真
10.1 直升機仿真 264
10.2 四旋翼仿真 265
10.2.1 飛行原理 266
10.2.2 飛行控制系統(tǒng) 268
10.2.3 PID控制算法 268
10.2.4 仿真 268
10.3 練習題:四旋翼無人機群控 271
第11章 水下機器人仿真
11.1 水下螺旋槳推進機器人 272
11.2 水下仿生機器人 272
11.2.1 salamander仿真案例 272
11.2.2 animated_skin仿真案例 276
11.3 練習題:螺旋槳水下機器人仿真 277
第12章 人形機器人仿真
12.1 場景分析 279
12.1.1 機器人類型轉(zhuǎn)換 279
12.1.2 機器人關節(jié)及連桿 279
12.2 程序分析 281
第13章 串聯(lián)機器人仿真
13.1 使用Python的ikpy庫 288
13.2 利用utils\motion.h播放關節(jié)角的動作序列 290
13.3 練習題:協(xié)作機器人抓取物體 291
第14章 輪椅機器人仿真
第15章 軟件使用技巧
15.1 仿真軟件中的對象大小 294
15.2 場景編輯的撤銷功能 294
15.3 保存功能 294
15.4 軟件的易用性操作 295
15.5 紋理、模型等資源文件的放置位置 296
15.6 360安全軟件和殺毒軟件 296
15.7 場景對象旋轉(zhuǎn)90° 297
15.7.1 FLU、ENU和RUB、NUE坐標系統(tǒng) 298
15.7.2 解決辦法 299
15.8 節(jié)點無法顯示missing proto icon 301
15.9 地面似乎有彈性 302
15.10 從動輪的實現(xiàn) 303
15.11 移動機器人的控制 303
15.12 其他 304