# 5.6 moveit!
### 5.6.1 簡介
2012年,一款叫做moveit!的移動操作軟件誕生了,moveit!最初在Willow Garage由Sachin Chitta,Ioan Sucan,Gil E. Jones,Acorn Pooley,Suat Gedikli,Dave Hershberger開發,它融合了研究者在運動規劃、操縱、3D感知、運動學、控制和導航方面的最新進展,為操作者提供了一個易于使用的平臺,使用它可以開發先進的機器人應用,也被廣泛應用于工業,商業,研發和其他領域。由于以上特性,moveit!一躍成為在機器人上最廣泛使用的開源操作軟件,截止2017年,已經被用于超過65臺機器人。
* [moveit!視頻鏈接](https://youtu.be/0og1SaZYtRc)
### 5.6.2 使用
moveit!的使用通過為用戶提供接口來調用它,包括C++、Python、GUI三種接口。ROS中的`move_group`節點充當整合器,整合多個獨立組件,提供ROS風格的Action和service。`move_group`通過ROS topic和action與機器人通訊,獲取機器人的位置、節點等狀態,獲取數據再傳遞給機器人的控制器。
`move_group`節點獲取到節點狀態信息或者機器人變換信息時候,會通過控制器的接口去處理這些信息,比如進行坐標轉換、規劃場景、3D感知。另外,`move_group`的結構比較容易擴展,不僅具有獨立的能力如抓放,運動規劃,也可擴展自公共類,但實際作為獨立的插件運行。moveit!系統結構圖如下:

##### [官網鏈接](http://moveit.ros.org/)
- 前言
- 第一章 ROS簡介
- 機器人時代的到來
- ROS發展歷程
- 什么是ROS
- 安裝ROS
- 安裝ROS-Academy-for-Beginners教學包
- 二進制與源碼包
- 安裝RoboWare Studio
- 單元測試一
- 第二章 ROS文件系統
- Catkin編譯系統
- Catkin工作空間
- Package軟件包
- CMakeLists.txt
- package.xml
- Metapacakge軟件元包
- 其他常見文件類型
- 單元測試二
- 第三章 ROS通信架構(一)
- Node & Master
- Launch文件
- Topic
- Msg
- 常見msg類型
- 單元測試三
- 第四章 ROS通信架構(二)
- Service
- Srv
- Parameter server
- Action
- 常見srv類型
- 常見action類型
- 單元測試四
- 第五章 常用工具
- Gazebo
- RViz
- Rqt
- Rosbag
- Rosbridge
- moveit!
- 單元測試五
- 第六章 roscpp
- Client Library與roscpp
- 節點初始、關閉與NodeHandle
- Topic in roscpp
- Service in roscpp
- Param in roscpp
- 時鐘
- 日志與異常
- 第七章 rospy
- Rospy與主要接口
- Topic in rospy
- Service in rospy
- Param與Time
- 第八章 TF與URDF
- 認識TF
- TF消息
- tf in c++
- tf in python
- 統一機器人描述格式
- 附錄:TF數學基礎
- 三維空間剛體運動---旋轉矩陣
- 三維空間剛體運動---歐拉角
- 三維空間剛體運動---四元數
- 第九章 SLAM
- 地圖
- Gmapping
- Karto
- Hector
- 第十章 Navigation
- Navigation Stack
- move_base
- costmap
- Map_server & Amcl
- 附錄:Navigation工具包說明
- amcl
- local_base_planner
- carrot_planner
- clear_costmap_recovery
- costmap_2d
- dwa_local_planner
- fake_localization
- global_planner
- map_server
- move_base_msg
- move_base
- move_slow_and_clear
- navfn
- nav_core
- robot_pose_ekf
- rotate_recovery