ROS系統MoveIt玩轉雙臂機器人系列(二)--生成MoveIt配置包


注:本篇博文全部源碼下載地址為:Git Repo

1. 下載到本地后解壓到當前文件夾然后運行:catkin_make 編譯。

2. 源碼是在 Ubuntu14.04 + Indigo 環境下編寫。

 

一、MoveIt包的配置

  經過上一篇文章(傳送門)的介紹,我們成功的對雙臂機器人 rob 進行了 ROS 系統建模,並在 Rviz 可視化工具中進行了驗證。本篇博客主要介紹如何借助 ROS  系統的 Setup Assistant 工具生成一個默認的MoveIt 配置包(config package)。

  1. 新建配置包文件夾

  我們在上一篇文章提供的源代碼的 src 文件夾內的 rob_moveit_pack 文件夾中添加一個文件夾 rob_moveit_config,具體位置如下圖文件樹所示,紅色文件夾即為新建文件夾。

src
  ├── CMakeLists.txt
  └── rob_moveit_pack
    ├── rob_description
    │     ├── CMakeLists.txt
    │     ├── include
    │     ├── launch
    │     ├── meshes 
    │     ├── package.xml
    │     ├── src
    │     └── urdf
    ├── rob_moveit_config
    └── rob_moveit_pack
      ├── CMakeLists.txt
      └── package.xml

   2.  Setup Assistant 工具使用

   (1)進入 work space 目錄(src文件夾所在的目錄)內,然后分別執行:

catkin_make
source devel/setup.bash

  (2)啟動 MoveIt Setup Assistant Tool, 啟動命令為:

roslaunch moveit_setup_assistant setup_assistant.launch

  注:如果提示失敗,則有可能系統未安裝 MoveIt 程序包,只需按照本系列博文(一)所屬方法安裝即可。

  啟動后的界面如下圖所示,然后點擊 Create New Moveit Configuration Package 選項,然后通過跳出的載入選項中的 browse 按鈕選擇我們的 rob 機器人的 xacro 描述文件,點擊 Load Files 即可完成模型的加載。

  (3)Self-collision  選項設置。

  左上角的第二個選項為 Self-collision  選項,作用是加載機械臂自碰撞矩陣,這樣就可以防止在后面的運動規划過程中產生運動干涉(自碰撞),由於我們的描述文件建模比較完備,只需要點擊Regenerate Default Collision Matrix 按鈕即可生成各個關節的碰撞矩陣,效果如下圖所示。

  (4)Virtual Joints 選項。

  左上角的第二個選項為 Virtual Joints  選項,所謂 Virtual Joints 就是我們的機械臂和世界絕對坐標系之間存在一個 虛擬的自由度(相對坐標系),這個多出來的虛擬自由度(相對坐標系)可以表征我們的機械臂相對於世界絕對坐標系的轉換關系或者說運動關系,例如當我們的機械臂固定在移動平台上時就需要設置這樣一個虛擬坐標系,這里我們的機器人是固定不動的,也就是基坐標系和世界坐標系是相對固定的,因此不需要設置虛擬關節,效果如下圖所示。

  (5)Planning Groups 選項(重要)

  Planning Groups 選項的作用是設置機械臂的運動規划群組,也就是我們將幾個連續的關節作為一個規划群組,后面將根據這里設置的群組進行運動規划,同時在設置群組的時候我們選擇對應群組的運動學求解庫,通常選擇 kdl_kinematics_plugin/KDLKinematicsPlugin 即可,本博文后面會介紹一種我們自己寫的運動學求解算法,這里不再展開, 由於我們是雙臂機器人,因此群組為另個,分別為 Left_arm 和 Right_arm ,效果如 下圖所示。

  (6)Robot Poses 選項。

  這一選項的作用是設置機器人的一些已知位姿,例如:初始位姿、抓取位姿和一些中間位姿,設置這些位置是有很多好處的,例如運動規划的初始位姿可以明確起點位置,一些中間位姿也可以用來做精讀矯正,這里我們僅僅為兩組手臂設置一組初始位姿,效果如下圖所示。

  (7)End Effectors 選項。

   這是機械臂的末端執行器選項,一般末端執行器為夾子、吸盤等,只需要一個布爾變量即可控制,比較簡單,我們這里只追求手臂末端(手掌位置)能夠到達空間中的某點,因此不再設置末端執行器。

  (8)Passive Joint 選項。

  指定被動關節,也就是沒有驅動的關節,它的關節變量由其它主動關節所決定,這里我們沒有被動關節,也不再設置。

  (9)Author Information 項。  

  指定作者信息,沒什么好說的,如下圖。

  (10)Configuration Files 選項。

  這里是指定我們的配置文件的生成位置和內容的設置窗口,這里的Sace Path 我們選擇第1小結里我們新建的 rob_moveit_config 文件夾,點擊右下角的Generate Package 選項即可完成整個配置包的生成,具體見下面圖,然后退出即可。

二、MoveIt包的驗證

  經過第一部分的配置,我們已經默認生成了 rob 機器人的MoveIt 的配置包,這時我們需要驗證配置包的正確性,我們只需要在 work space 目錄輸入:

roslaunch rosbook_arm_moveit_config demo.launch

  此時跳出的RViz環境如下圖所示,默認規划群組為左臂。

  我們在左下角的Motion Planning 窗口中點擊 Planning ,然后點擊 Query 選項的 Update 按鈕,既可以獲得一個隨機目標位置,然后點擊Commands 選項下的 Plan 和 Excute 按鈕即可完成一次運動規划,效果如下圖所示。

  此外,我們還可以設置測試另外一個手臂的規划,只需要在左上角 Displays 模型設置框內點開 Planning Request 選項,下面有Planning Group,我們將它的值設為 right_arm 即可,效果如下圖所示。

  至此,我們已經完成了默認的MoveIt 包的生成工作,下面一篇我們將介紹如何修改本包使其能夠用於控制我們自己的機器人。

 

   <-- 本篇完 -->

 

歡迎留言、私信、郵箱、微信等任何形式的技術交流。

作者信息:

名稱:Shawn

郵箱:zhanggx0102@163.com

微信二維碼:↓

          


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM