六轴机械臂DIY(三)开源项目介绍
就這樣一年半了,項目斷斷續(xù)續(xù)仍在進行,期間我混了個畢業(yè),相信大家也經(jīng)歷了很多吧。最近上海疫情,畢業(yè)后的我哪里也去不了,只能在寢室等學(xué)校的投喂,那么正好,讓我們項目繼續(xù)。
本節(jié)主要完整介紹這個機械臂的開源項目,首先介紹該項目的整體概述,之后介紹機械臂的硬件連接,最后帶大家初步過一遍項目下位機的代碼,并能夠?qū)椖咳绾尾渴鹩幸粋€大致的印象。
一. 項目概述
1.1 背景介紹
本項目是一個開源的六軸機械臂項目,項目名稱為 arduino-sainsmart。sainsmart是一個美國創(chuàng)客品牌,公司的官網(wǎng)地址為
https://www.sainsmart.com/
他們公司主要業(yè)務(wù)為開源硬件設(shè)計和創(chuàng)客社群運營,所以本項目是他們研發(fā)的產(chǎn)品,但是從公司的產(chǎn)品頁面可以看到本項目已經(jīng)不在繼續(xù),產(chǎn)品頁面地址為
https://www.sainsmart.com/products/6-axis-desktop-robotic-arm-assembled
不過這并不阻礙我們自己動手搭建一個性價比極高的機械臂。
1.2 項目獲取
感謝sainsmart公司將該款機械臂的控制系統(tǒng)的下位機代碼開源到了github,讓我們能夠獲取。github項目地址為
https://github.com/wedesoft/arduino-sainsmart
由于國內(nèi)訪問的不穩(wěn)定性,我們也可以從國內(nèi)鏡像網(wǎng)站gitcode上獲得,網(wǎng)站為
https://gitcode.net/mirrors/wedesoft/arduino-sainsmart
熟悉git操作的可以直接使用git clone ,不熟悉git的朋友可以直接在克隆按鈕的下來框中選擇zip下載。項目介紹都是英文,有點頭疼。不要怕,接下來我們一起過一下。
總之完成下載并解壓后你會得到一個叫arduino-sainsmart項目文件夾,文件夾中結(jié)構(gòu)為
arduino-sainsmart ├── arduino │ ├── Makefile │ └── sainsmart.ino ├── etc │ └── dem ├── spec │ └── .rb ├── controllerbase.hh ├── path.hh ├── profile.hh ├── calibration.hh.default ├── README.md ├── TODO.md ├── 一些介紹圖片 └── 5個.rb文件,可以不管項目文件中包含了5個C++文件(.hh),5個ruby文件(.rb),1個arduino文件(.ino)和許多介紹圖片(.jpg),通過圖片我們可以對項目有一個大致的了解,README.md文件中包含了項目的描述以及后續(xù)需要發(fā)送的串口指令。
項目整體使用arduino調(diào)用C++文件的形式,所有的ruby文件都用于使用xbox控制機械臂,但我沒有xbox,所以并不打算使用這一功能,因此暫時可以不看ruby文件。
二. 硬件連接
2.1 硬件元件介紹
打開項目文件夾掃一遍圖片就可以看到本項目的機械外觀和硬件元件,這些也可以參考本系列的前兩篇文章,這里默認(rèn)大家1.已經(jīng)在心中有了機械臂的模型,2.已經(jīng)購買了所需要的電氣元件。
項目使用的控制板為arduino UNO,這是一款熱門的diy板子,推薦購買DFROBOT的板子,外加拓展板,共140元。拓展板插到UNO上后使用外接5V電源對拓展板進行供電。使用串口線連接UNO和電腦進行燒錄調(diào)試。
六軸機械臂共有六個關(guān)節(jié),加上頭部外加夾爪總共需要7個舵機,也可不用夾爪總共六個舵機。1234軸使用MG995舵機,56軸及外加軸使用9g舵機。舵機總共有三根導(dǎo)線,分別為橙黃線、紅線、棕線,其中棕色為接地線(重要),紅色為+5v,橙黃色為信號。
我們簡單對舵機轉(zhuǎn)動的原理進行介紹,舵機使用PWM波控制角度,PWM波是指周期脈沖方波,其中1表示接通,0表示斷開,波形如下圖所示。PWM波由無數(shù)個周期波形組成,每個周期中包含一段高電位和一段低電位。舵機的脈沖周期為20ms,其中每一周期中的高電位時間可在0.5ms與2.5ms之間調(diào)節(jié)。如果以垂直舵機方向為0度,那么脈沖高電位時間與舵機角度的關(guān)系如下圖所示。我們控制舵機的角度其實是在控制輸入舵機PWM波脈沖中高電位所占的時間。這一部分可以參考孫老師的視頻 https://www.bilibili.com/video/BV15X4y157ay
2.2 連接示意圖
好,了解完各個元件后我們將他們連在一起,依次將舵機接在拓展板的接口上,如圖為示意圖,請保證棕線接在GND上,默認(rèn)
關(guān)節(jié)1(BASE)接11引腳
關(guān)節(jié)2(SHOULDER)接10引腳
關(guān)節(jié)3(ELBOW)接9引腳
關(guān)節(jié)4(ROLL)接8引腳
關(guān)節(jié)5(PITCH)接7引腳
關(guān)節(jié)6(WRIST)接6引腳
外加關(guān)節(jié)(GRIPPER)接5引腳
如果你已經(jīng)搭建好了機械結(jié)構(gòu),并連接好了所有的舵機,將拓展板進行了外接5v電源,那么恭喜你,你已經(jīng)有了一臺六軸機械臂的本體。關(guān)于系列(二)中的建模其實存在很多問題,我決定對機械臂重新建模,重新建模后的機械臂采用3d打印件作為所有桿件,方便淘寶訂購,同時大大減少了零件的數(shù)量,機械臂的末端三軸位于同一點,滿足機器人逆解要求。
三. 軟件燒錄及使用說明
3.1 控制器及控制軟件
本項目使用的控制器為arduino UNO,相信喜歡DIY的朋友都對他十分熟悉,通過上傳固件即可實現(xiàn)對輸出IO口的控制。arduino的控制程序編寫和上傳可以使用arduino IDE,下載地址為
https://www.arduino.cc/en/software
根據(jù)上文介紹的舵機PWM波控制原理,可以知道整個控制系統(tǒng)即為將我們想要的機器人位姿轉(zhuǎn)換為6個多級對應(yīng)的PWM脈沖寬度。讓我們再過一下項目文件夾中的文件
arduino-sainsmart ├── arduino │ ├── Makefile │ └── sainsmart.ino ├── etc │ └── dem ├── spec │ └── .rb ├── controllerbase.hh ├── path.hh ├── profile.hh ├── calibration.hh.default ├── README.md ├── TODO.md ├── 一些介紹圖片 └── 5個.rb文件,可以不管請重點關(guān)注我們需要的文件
arduino-sainsmart ├── arduino │ └── sainsmart.ino ├── controllerbase.hh ├── path.hh ├── profile.hh ├── calibration.hh.default └── README.md簡單介紹一些各個文件的功能
sainsmart.ino:arduino控制固件軟件,是一個arduino系統(tǒng)的入口
profile.hh:每個關(guān)節(jié)舵機的 速度控制類,使用S加減速曲線
path.hh:每個關(guān)節(jié)舵機的 運動控制類,控制舵機的轉(zhuǎn)動
controllerbase.hh:項目運動控制基類,會在sainsmart.ino中繼承,是本項目的主要控制類
calibration.hh.default:項目設(shè)置類,包括設(shè)置各個關(guān)節(jié)多級連接控制器的端口、哥哥關(guān)節(jié)的最大最小角度、關(guān)節(jié)初始角度、關(guān)節(jié)運動速度等參數(shù),需要在使用前更改名字,刪去default
3.2 固件部署步驟
將calibration.hh.default更改名稱為calibration.hh
新建一個文件夾,將sainsmart.ino、calibration.hh、profile.hh、controllerbase.hh、path.hh復(fù)制到該文件夾中
由于arduino IDE串口調(diào)試最后一定會包括\n這個字符,我們需要在controllerbase.hh的輸入函數(shù)parseChar(char c)中加入一個case,10是’\n’的字符編碼,即跳過IDE默認(rèn)的尾部字符。如果你使用的串口發(fā)送器指令最后不會自動加字符就可以不管這一條。
case 10:break;使用IDE打開sainsmart.ino,可以看到項目使用的串口波特率為115200,連接控制板,編譯上傳固件
保證控制板與PC連接狀態(tài),打開IDE 工具—串口監(jiān)視器,將右下波特率調(diào)為115200
在輸入處輸入字母o,顯示1即實現(xiàn)了部署
3.3 手動運動控制
機械臂的串口控制代碼位于項目的README.md文件中,在開源分享網(wǎng)站中也可以看到,這里截取部分控制指令,具體的會在本系列的第四篇文章中對項目軟件進行詳細(xì)解讀
o:檢查是否準(zhǔn)備好程序
t:獲取當(dāng)前時間戳
b:獲取基軸base的舵機角度
打開IDE的串口監(jiān)視器,發(fā)送o,返回‘1’表示軟件已準(zhǔn)備,發(fā)送其他指令可以獲得不同的效果。通過指令可以設(shè)定各個舵機的角度,可以保存設(shè)定示教點的位置,可以實現(xiàn)對機械臂的控制。
本文介紹了該開源項目的技術(shù)細(xì)節(jié),通過背景介紹,硬件連接,軟件介紹對項目進行分析,最后實現(xiàn)了串口對機器人的指令控制。到此我們就擁有了一個六軸機器人的控制器,后續(xù)只要通過上位機軟件解析機器人位姿并通過串口發(fā)送到下位機就可以讓機器人按照我們的想法運動。
總結(jié)
以上是生活随笔為你收集整理的六轴机械臂DIY(三)开源项目介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单边带(SSB)调制技术
- 下一篇: 【无标题】数仓实战之亚马逊全球跨境电商分