本書的范圍
在卷1我們學習了使用機器人編程的基礎,包括在移動端對機器人進行控制,SLAM, 機器人視覺(OpenCV, OpenNI 以及很少的PCL), 語音識別,使用動態伺服服務,這卷書中我們將會接觸更多比較高級的ROS概念和包,能夠使我們真正達到無人為干擾的機器人行為:
使用Smatch和behavior trees進行復雜的可執行任務管理
使用URDF/Xacro創建自己機器人描述 : 頭部的傾斜和平移,多節點手臂抓握,伸縮軀干,傳感器放置(激光掃描儀等)
控制動態伺服機使用配置arbotix包
使用ROS診斷包監控機器人本身系統,例如電量低和伺服電機的溫度
使用dynamic_reconfigure改變運行中機器人的參數設置
使用mux和yocs進行多重ROS主題,優先級的輸入以及互斥操作
使用AR_tags進行物體檢測和跟蹤
跟蹤3D物體,去感知機器人本身和空間的關系
使用MoveIt框架進行多關節手臂控制和抓具,還可以執行正向和反向運動,障礙規避,抓取,以及撿起和放置任務等
使用復雜的Gazebo模擬器對機器人行為進行模擬
使用rosbridge,HTML, javascript通過web-gui對機器人進行控制
即使用全書也只能覆蓋這部分主題的全部內容,因此我們會更強調關鍵的概念,如果你對內容感興趣可以根據我們提供的參考文檔進行深入學習,就像第一卷一樣我們的sample code都是用python,對于介紹性質的書籍來說,可能比C++更有彈性一些
一旦你精通了本書的內容,你就能自己為自己的機器人創建URDF模型,手臂節點,平移和旋轉的頭部,編寫一些程序叫機器人能夠完成一些自主的運動行為,監控自己的子系統,根據當前的狀態確定輸入的優先級,在3D空間追蹤物體,能夠對對關節手臂以及正向和反向運動的夾具進行程序設計,編寫你自己的HTML / JavaScript接口對機器人進行監視和控制通過瀏覽器
安裝ROS-BY-EXAMPLE代碼
本書的代碼使用的ROS Indigo版本,強烈推薦你使用ROS Indigo版本進行學習,一些先決條件的包安裝我們在下面的列表中已經給出了,手臂導航的例子是專門使用Indigo運行的
在安裝本書例子代碼之前,你一定要安裝必要的ROS安裝包,簡單的拷貝粘貼下面的命令到終端窗口安裝你所需要的ROS安裝包,\ 字符以一個鏈接字符,保證下面的字符串是在一個命令行當你在linux下面做拷貝粘貼這個動作的時候
sudo apt-get install ros-indigo-arbotix \ ros-indigo-dynamixel-
motor ros-indigo-rosbridge-suite \ ros-indigo-mjpeg-server ros-
indigo-rgbd-launch \ ros-indigo-openni-camera ros-indigo-moveit-
full \ ros-indigo-turtlebot-* ros-indigo-kobuki-* ros-indigo-moveit-python \
python-pygraph python-pygraphviz python-easygui \ mini-httpd
ros-indigo-laser-pipeline ros-indigo-ar-track-alvar \
ros-indigo-laser-filters ros-indigo-hokuyo-node \ ros-indigo-
depthimage-to-laserscan ros-indigo-moveit-ikfast \
ros-indigo-gazebo-ros ros-indigo-gazebo-ros-pkgs \ ros-indigo-
gazebo-msgs ros-indigo-gazebo-plugins \ ros-indigo-gazebo-ros-
control ros-indigo-cmake-modules \ ros-indigo-kobuki-gazebo-plugins
ros-indigo-kobuki-gazebo \ ros-indigo-smach ros-indigo-smach-ros
ros-indigo-grasping-msgs\ ros-indigo-executive-smach ros-indigo-
smach-viewer \ ros-indigo-robot-pose-publisher ros-indigo-tf2-web-
republisher \ graphviz-dev libgraphviz-dev gv python-scipy
你可可以通過rbx2-prereq.sh這腳本來運行這個命令 :
$ cd ~
$ wget https://raw.githubusercontent.com/pirobot/rbx2/indigo-devel/rbx2prereq.sh
$ sh rbx2-prereq.sh
我們也需要從卷1拿到代碼,如果你沒有相關的資料,你可以安裝rbx1代碼(如果你還沒有安裝的情況下), 你可以使用下面的命令: