1. 程式人生 > >通過Gazebo模擬學TurtleBot3(二)——環境搭建

通過Gazebo模擬學TurtleBot3(二)——環境搭建

1. Ubuntu安裝

  網路上教如何安裝ubuntu的文章很多,在這裡就不再花時間詳細介紹了,本文使用的是ubuntu16.04 LTS版本。針對是使用物理機雙系統還是虛擬機器的問題,我建議資源允許的情況下可以都裝。物理機的執行速度更快,尤其是針對Gazebo中3D顯示部分,如果是物理機加上獨立顯示卡,執行更為流暢,適合跑運算量要求較高的演算法或者大場景高複雜度的模擬。而虛擬機器則更為方便,尤其是初學者對於linux系統和ROS系統還不太熟悉,經常出現一些異常情況,或者一些誤操作,在這種情況下有可能會需要反覆重灌系統進行嘗試和熟悉。虛擬機器的快照回退或整體備份等功能,可以加快迭代速度,節省很多時間。虛擬機器可能對於實際物理的機器人系統和感測器介面相容性會有些問題,但是對於通過模擬學習TurtleBot來說還好,起碼適用於初學者儘快熟悉系統、快速迭代。
  當然在虛擬機器上搭建學習環境,對於物理計算機的效能還是有一定要求的,最好使用較好的CPU,搭配較大記憶體,同時配合固態SSD硬碟,這樣才能保證相對流暢的使用。筆者使用的筆記本配置i7處理器16g記憶體和SSD硬碟,在虛擬機器下跑ubuntu+ROS還是獲得了較為滿意的效能。如果沒有高效能機器,感覺還可以拿出一臺配有獨立顯示卡的舊機器(效能不用太高,一般的獨立顯示卡就可以)專門跑Gazebo模擬器,另一臺常用電腦來跑ROS裡的機器人控制程式碼。畢竟ROS支援分散式,而誰家又沒有臺舊電腦呢。
  ubuntu系統安裝好後,還要安裝一些常用的軟體包,如ssh、git、中文輸入法等等,同時很重要的一點就是更改軟體伺服器地址為最近的映象伺服器地址,這樣可以在後期大量軟體安裝時獲得最快的速度,節省大量的時間。

2. ROS安裝:

  本文使用的ROS是Kinetic版本,具體安裝方法見ROS官方wiki指導。安裝時建議選擇Desktop-Full Install方式,全桌面版本除ROS核心外還包含了常用的模擬器、軟體包和驅動等,適合初學者使用。

初始化rosdep依賴管理

  ROS安裝完後記得要初始化rosdep依賴項管理工具,便於後期針對ROS系統中各種軟體package包的依賴項管理和安裝。

$ sudo rosdep init
$ rosdep update

ROS環境配置

  ROS安裝還需要進行環境配置,用於自動新增相應的ROS環境變數在當前bash程序中。一般建議將環境配置新增到~/.bashrc檔案當中,以便開啟命令終端時自動啟用。

$ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc

虛擬機器顯示配置

  在虛擬機器環境下執行Gazebo會有些問題,主要是虛擬機器的顯示卡硬體加速設定引起的。要想正常使用Gazebo,需要通過如下設定關閉硬體加速。

$ echo " export SVGA_VGPU10=0" >> ~/.bashrc
$ source ~/.bashrc

  還有一種方法是在虛擬機器設定中關閉3D加速,實測效果不理想,3D顯示速度很慢,不建議使用。

系統更新

  ROS安裝完畢後,重啟ubuntu有可能會無法進入系統,給出如下提示。
這裡寫圖片描述


  這個問題可以通過系統更新加以解決,方法是在這個提示介面下按Ctl+Alt+F1,以命令模式登入系統,輸入:

$ sudo apt-get update
$ sudo apt-get upgrade
$ reboot

  重啟後又可以正常登入系統了。

3. Turtlebot3安裝:

  採用Source模式,將TurtleBot3安裝在catkin工程目錄catkin_ws中。程式碼部分分別涵蓋了TB3訊息包、TB3功能包以及TB3模擬包。

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
$ cd ~/catkin_ws
$ rosdep install --from-paths src -i -y
$ catkin_make

  注意以上命令第7行,採用rosdep install依賴安裝的方式,安裝了TB3程式碼中依賴的各種ROS軟體包。rosdep install主要基於軟體package包目錄下package.xml檔案中的依賴項關係來安裝依賴項,具體說明見ROS官方wiki。
  catkin_make編譯後,還需要將新工程的ROS環境設定加入~/.bashrc檔案,命令如下:

$ echo "source ~/catkin_ws/devel/setup.bash " >> ~/.bashrc
$ source ~/.bashrc

  最後還可以根據所選用的TB3機器人是Burger還是Waffle,將其作為環境變數加入~/.bashrc檔案,以方便後續使用。否則每次執行程式都需要先輸入“export TURTLEBOT3_MODEL=burger”或者“export TURTLEBOT3_MODEL=waffle”。
  命令如下:

$ echo "export TURTLEBOT3_MODEL=burger" >> ~/.bashrc
$ source ~/.bashrc

  最後檢查一下環境變數設定是否成功:

$ env | grep TURTLEBOT3

  如顯示TURTLEBOT3_MODEL=burger則表示成功。

3. 模擬測試:

簡單模擬測試:

$ roslaunch turtlebot3_fake turtlebot3_fake.launch

  這是turtlebot3_simulation裡給出的一個簡單模擬器,其並沒有物理引擎,只是根據速度指令和角速度指令進行積分,給出odom和base_link座標系之間的tf,無法給出感測器測量資料模擬。執行顯示結果如下:
這裡寫圖片描述

Gazebo模擬測試:

$ roslaunch turtlebot3_gazebo turtlebot3_world.launch

  首次開啟介面顯示要黑一會兒,主要是在下載所需model檔案。下載完畢後,顯示結果如下所示:
這裡寫圖片描述
  Gazebo模擬器具有物理引擎,除給出機器人的位置姿態以外,還能夠給出慣性imu、鐳射雷達以及相機或RGB-D等感測器模擬資料。因此功能更為豐富。
這裡寫圖片描述

注意:

  針對gazebo和rviz在虛擬機器中執行,就像《ROS By Example》中說的那樣,開啟有時可能會不太穩定而自動退出,可能需要重複試幾次。在我的機器上偶爾會進行3次以上的嘗試。不過一旦正常開啟,執行時一般都正常。

RViz can sometimes be a little finicky about running on different
graphics cards. If you find that RViz aborts during start up, first
just try launching it again. Keep trying a few times if necessary. (On
one of my computers, it is usually the third attempt that works.)