【从零开始的ROS四轴机械臂控制】(一)- 实际模型制作、Solidworks文件转urdf与rviz仿真
前記:
之前學習了很多關于ROS的知識,現在想自己制作一個四軸器械臂來練練手。所以就定為arm0.1版本,使用MG90s舵機來搭建一個四軸機械臂。arm0.1版本的目標是對不同顏色的方塊進行分類并在Gazebo中模擬出來。
在未來計劃的arm1.0版本中,計劃使用步進電機來搭建六軸機械臂,使用上RL,實現人機交互,希望能在下個學期完成它。
一、模型制作
1.實際模型制作
首先是實際模型的制作,就使用3d打印機制作了。我使用的是ANYCUBIC的一款打印機,主要是因為價格便宜,性價比比較高,而且安裝也不用太花時間,使用下來穩定性還不錯。
四軸機械手網上的模型挺多的,我這里采用https://www.thingiverse.com/thing:34829提供的模型,這個模型設計中有考慮誤差,所以打印基本一次成型。
以下是網站中提供的圖片。
實際模型打印出如下圖。比較需要注意的夾爪部分的齒輪,打印出來的尺寸和模型給出來的尺寸還是有區別的。因為是齒輪結構,對精準度要求比較高,需要打印幾次才能成功。
舵機我采用MG90s,畢竟我手頭只有這個版本的舵機。舵機控制使用16路舵機驅動控制模塊PCA9685:
用arduino UNO控制,接線如圖所示:
圖片來源見水印,關于PCA9685模塊的使用可以參考相關博客:Arduino uno使用PCA9685模塊實現16路舵機控制。
以上是這個項目目前的框圖,有很多細節沒有標清楚,只標出了硬件部分,其它的在未來會慢慢補全。
全程使用VM虛擬機,在未來arm1.0版本中可能使用Raspberry pi來控制,只把圖像處理和模擬部分放在PC上。
然后測試了我所使用的這個USB攝像頭,發現其好像無法接到虛擬機中。然后考慮到價格問題,還是覺得沒有必要買個新的攝像頭,要實現對不同顏色的方塊進行分類,完全可以在gazebo中模擬出來。arduino和虛擬機的連接是沒有問題的,可以正常使用虛擬機進行下載程序。關于arduino如何與ros進行連接,將在以后的博文中進行說明。
2.Solidworks模型制作
Solidworks使用的是2017版本。因為之前提供模型的網站只提供stl文件,stl導入solidworks中的文件基本無法使用,所以就決定自己畫了。因為是模擬,所以精度不是太高。只是簡單的制作了其結構,夾爪部分感覺比較麻煩,也沒有制作。最后使用了Solidworks自帶的渲染工具,其效果如下圖。
模型建好了就可以使用相關插件導出到urdf了。
二、Solidworks文件轉urdf
URDF(Universal Robot Description Format)——通用機器人描述格式,它是ROS里邊使用的一種機器人的描述文件,包含的內容有:連桿、關節,運動學和動力學參數、可視化模型、碰撞檢測模型等。
1.sw_urdf_exporter插件
要將arm.SLDASM文件導出為urdf文件,sw_urdf_exporter插件是必不可少的。
1.5.1版本中提供了exe文件,下載完成后直接安裝就可以了。之后就可以在插件欄找到它。
我的2017版本的solidworks的導出urdf選項在:工具–>File -->Export as urdf。
我當時一度以為該選項在文件選項欄,試了各種方法找不到導出選項,最后發現它在工具選項欄…真的是白白浪費了我幾個小時的時間
2. 添加坐標系和轉軸
導出urdf文件的插件沒有問題后,接下來就要為導出urdf文件做準備了,首先是為我們的模型添加坐標系和轉軸。
轉軸添加比較簡單,有很多添加方法。我使用的是選擇某一個圓柱面添加。
坐標系是需要確定坐標系原點,在選擇x,y,z的方向。
所以一個建議是首先確定axis0-3,再確定coordinate0-4。
3.導出urdf文件
在主界面打開,工具–>File -->Export as urdf,按照我圖片中給出的順序進行操作。注意不要選到別的地方,在點擊Export之前,所有操作都不會保存。我嘗試了幾次才正確的導出的。
點擊Rreview and Export之后,出現以下窗口,記得填寫limit部分。
導出后,生成文件如下:
其中文件作用如下:
? scripts (python 可執行文件)
? src (C++ source files)
? msg (for custom message definitions)
? srv (for service message definitions)
? include -> 需要作為依賴項的頭/庫
? config -> 配置文件
? launch -> 提供更自動化的啟動節點方式
? urdf (通用機器人描述文件)
? meshes (CAD文件.dae (Collada)或.stl (STereoLithography)格式)
? worlds (用于Gazebo模擬環境的類似XML的文件)
4.參考博客
導出urdf文件我參考了以下博客,
1.【ROS學習】Solidworks模型轉化為URDF文件格式+三連桿機械臂示例+逆運動學
2. ROS Wiki sw_urdf_exporter
三、rivz仿真
1.rivz仿真
將導出的文件復制到~/catkin_ws/src目錄下.
修改display.launch文件,其在launch文件夾下。
將default的值從False改為True,否則無法打開Joint State Publish工具。
<argname="gui"default="False" />//將False改為True
...
運行命令打開文件
cd ~/catkin_ws
source devel/setup.bash
catkin_make
roslaunch arm0 display.launch
之后我們就可以打開RViz了,但是現在沒有任何模型加載。
解決方法是,首先在Fixed Frame欄中選中自己定義的鏈接名稱。
之后點擊左下角的“Add”來添加我們的模型。
選擇RobotModel,然后點擊‘OK’。
之后模型就可以加載出來了,然后移動鼠標經行縮放移動,或者可以使用Joint State Publish來調整關節角度。
注意Joint State Publish的調整范圍是根據之前設定的limit。
2.借助MoveIt!在rviz中進行逆運動學測試
使用Moveit!提供的setup_assistant來配置機械臂的package文件,需要使用到上一部分生成的URDF文件。
使用命令
roslaunch moveit_setup_assistant setup_assistant.launch
打開assistant后點擊Create New Moveit Configuration Package 導入URDF文件,我的urdf文件路徑如圖片所示
設置Self-Collision,點擊Generate Collsion Matrix :
設置Virtual Joints,Parent Frame Name設為world_frame,save完成后如下圖所示。相關名稱可以參考圖片中的名稱。
設置Planning Groups名稱
選擇運動學求解器,然后點擊Add Kin. Chain。然后把base_link設置為Base Link,把link4設置為Tip Link:
設置Robot Pose,和作者郵箱。
然后設置保存路徑,如下圖所示。點擊Generate Package。
文件如下圖所示:
運行命令
cd ~/catkin_ws/src/config/launch/
roslaunch demo.launch
運行如下圖所示。
例如,我們可以通過調整紅框中的部分來進行逆運動學模擬。
總結
以上是生活随笔為你收集整理的【从零开始的ROS四轴机械臂控制】(一)- 实际模型制作、Solidworks文件转urdf与rviz仿真的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Udacity机器人软件工程师课程笔记(
- 下一篇: 【从零开始的ROS四轴机械臂控制】(二)