99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

怎樣讓機械臂繪畫

454398 ? 來源:工程師吳畏 ? 2019-08-07 17:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1。 OWI機器人手臂邊緣

2。 Arduino紅板

3。電機護罩(用于控制機器人的電機)

4。公針頭(用于堆疊Arduino上方的電機屏蔽)

5。很少有跳線

6。 5V-12V外部電源(理想情況下為9V)

7。一盆水

8。油畫

9。紙張(吸收圖案)

10。 BitVoicer軟件(僅適用于Windows)

步驟1:組裝OWI機械

OWI機械臂已售出作為單獨的組件。我們必須組裝不同的部分。

完全組裝好手臂之后,我們得到了上面完成的輸出。

可以看出,它有一個可以握筆的夾子,或者在我們的情況下是一個油漆瓶,當夾具盡可能閉合時,可以擠壓。

要運行手臂電機,需要4‘D’電池。

第2步:在Arduino上堆疊電機護罩

OWI機械臂有五個自由度,因此有5個直流電機。其中1個電機負責夾具的打開和關閉,2個電機用于左右移動,另外2個電機用于上下移動。 Arduino只能處理1個電機,也無法完全為電機供電。為了使兩個或更多電機同時運動,我們使用電機屏蔽。

電機屏蔽層使用公針頭堆疊在Arduino上方。為了獲得更好的連接,引腳接頭的一側焊接到電機屏蔽層上的相應引腳。引腳接頭的另一端插入Arduino板的數(shù)字引腳。 此外,電機屏蔽使用外部電源單獨供電。 Arduino由USB或槍管插孔供電。

電機屏蔽可以一次控制4個電機。由于我們不希望所有5臺電機因任何原因同時運行,我們在這里不會遇到任何問題。

移動電機的示例代碼如下所示:

#include

#include Adafruit_DCMotor *myMotor4 = AFMS.getMotor(4); myMotor4-》setSpeed(150);

myMotor4-》run(FORWARD);

delay(3000);

myMotor4-》setSpeed(0);

delay(300);

步驟3:連接電機護罩和機械臂

將機器人的電機連接到電機護罩。我們需要這種跳線。

在電機護罩上,有4個插槽(M1,M2,M3,M4)用于連接4個電機。對于這個項目,由于我們只需要有限的運動,我們排除了兩個有助于上下移動的電機中的一個。

步驟4:編碼

我們的代碼執(zhí)行以下功能:

機器人具有固定的起始位置。它從那里移動,從支架(它旁邊)抓住一瓶油漆,打開抓手,抓住瓶子并收緊瓶子的把手。

從這里開始,它移動到水桶的位置,就在抓手的正下方,移動到水池的最右端,擠壓瓶子一次,移動到中心,擠壓,移動到最左邊的位置,然后再滴一滴油漆。

然后它回到初始位置

接下來又回來再采取另一種顏色的顏色

再次執(zhí)行(2),但這次只是下降了2滴油漆在不同于先前油漆掉落的位置。

/*參考文獻:Adafruit motor屏蔽直流電機示例稱為MotorTest

BitVoicer用于切換LED的軟件示例程序。我們使用此示例中的對象僅用于實例化*/

#include

#include

#include“ utility/Adafruit_PWMServoDriver.h“

#include

Adafruit_MotorShield AFMS = Adafruit_MotorShield();

Adafruit_DCMotor * myMotor1 = AFMS.getMotor(1);

Adafruit_DCMotor * myMotor2 = AFMS.getMotor(2);

Adafruit_DCMotor * myMotor3 = AFMS.getMotor (3);

Adafruit_DCMotor * myMotor4 = AFMS.getMotor(4);

BitVoicerSerial bvSerial = BitVoicerSerial();

boolean sampleTest = false;

byte dataType = 0;

void setup(){

Serial.begin(9600);

Serial.println(“Adafruit Motorshield v2 - DC Motor test!”);

AFMS.begin();

myMotor4-》 setSpeed(150);

myMotor4-》 run(FORWARD);

//打開電機

myMotor4 - 》 run(RELEASE);

myMotor2-》 setSpeed(150);

myMotor2-》 run(FORWARD);

//打開電機

myMotor2-》 run(RELEASE);

bvSerial.setAnalogReference(BV_EXTERNAL);

bvSerial.setAudioInput(0);

Serial.begin(9600);

}

void loop(){

if(sampleTest == true)

{

bvSerial.processAudio(46);

}

if(bvSerial.engineRunning)

{

bvSerial.processAudio(46);

}

}

void serialEvent()

{

dataType = bvSerial.getData();

if(dataType == BV_COMMAND)

sampleTest = bvSerial.cmdData;

if(dataType == BV_STATUS&& bvSerial.engineRunning == true)

bvSerial.startStopListening();

if(dataType == BV_STR)

func1();

}

void func1()///3滴

{

if(bvSerial.strData ==“five”)

{

myMotor4-》 run(FORWARD);//來拾取顏色

myMotor4-》 setSpeed(150);

延遲(3000);

myMotor4-》 setSpeed(0);

延遲(300);

myMotor2-》 run (后退);//打開抓手

myMotor2-》 setSpeed(150);

延遲(380);

myMotor2-》 setSpeed(0);

延遲(200);

myMotor2-》 run (FORWARD);//關閉夾子

myMotor2-》 setSpeed(150);

延遲(600);

myMotor2-》 setSpeed(0);

延遲(400);

myMotor3-》 run (向后);//將抓手移到頂部

myMotor3-》 setSpeed(150);

延遲(600);

myMotor3-》 setSpeed(0);

延遲(300);

myMotor4-》 run (后退);

myMotor4-》 setSpeed(150);

延遲(4000);

myMotor4-》 setSpeed(0);

延遲(300);

myMotor2-》 run (FORWARD);//擠壓抓手

myMotor2-》 setSpeed(200);

延遲(300);

myMotor2-》 setSpeed(0);

延遲(200);

myMotor2-》 run(BACKWARD);//Unqueezing

myMotor2-》 setSpeed(250);

延遲(50);

myMotor2-》 setSpeed(0);

延遲(200);

myMotor4-》 run (前進);

myMotor4-》 setSpeed(150);

延遲(1000);

myMotor4-》 setSpeed(0);

延遲(300);

myMotor2-》 run (FORWARD);//擠壓抓手

myMotor2-》 setSpeed(150);

延遲(300);

myMotor2-》 setSpeed(0);

延遲(200);

myMotor2-》 run (后退);//不壓縮

myMotor2-》 setSpeed(150);

延遲(50);

myMotor2-》 setSpeed(0);

延遲(200);

myMotor4-》 run (前進);

myMotor4-》 setSpeed(150);

延遲(1000);

myMotor4-》 setSpeed(0);

延遲(300);

myMotor2-》 run (FORWARD);//擠壓抓手

myMotor2-》 setSpeed(150);

延遲(300);

myMotor2-》 setSpeed(0);

延遲(200);

myMotor2-》 run (后退);//不壓縮

myMotor2-》 setSpeed(150);

延遲(50);

myMotor2-》 setSpeed(0);

延遲(200);

myMotor4-》 run(FORWARD);

myMotor4-》 setSpeed(150);

延遲(2000);

myMotor4-》 setSpeed(0);

延遲(300);

myMotor3-》 run (前進);

myMotor3-》 setSpeed(150);

延遲(600);

myMotor3-》 setSpeed(0);

延遲(300);

myMotor2-》 run (后退);//打開抓手

myMotor2-》 setSpeed(150);

延遲(400);

myMotor2-》 setSpeed(0);

延遲(400);

myMotor4-》 run (后退);//打開抓手

myMotor4-》 setSpeed(150);

延遲(4000);

myMotor4-》 setSpeed(0);

延遲(400);

func2();

}

否則if(bvSerial.strData ==“two”)

{

two_drops();

}

其他

{

bvSerial.startStopListening();

bvSerial.sendToBV(“ERROR:”+ bvSerial .strData);

bvSerial.startStopListening();

}

}

void func2()///2 drop

{

myMotor4-》 run(FORWARD);//來拾取顏色

myMotor4-》 setSpeed(150);

延遲(4000);

myMotor4-》 setSpeed(0);

延遲(300);

myMotor2-》 run (后退);//打開抓手

myMotor2-》 setSpeed(150);

延遲(380);

myMotor2-》 setSpeed(0);

延遲(200);

myMotor2-》 run (FORWARD);//關閉夾子

myMotor2-》 setSpeed(150);

延遲(600);

myMotor2-》 setSpeed(0);

延遲(400);

myMotor3-》 run (向后);//將抓手移到頂部

myMotor3-》 setSpeed(150);

延遲(600);

myMotor3-》 setSpeed(0);

延遲(300);

myMotor4-》 run (后退);

myMotor4-》 setSpeed(150);

延遲(3500);

myMotor4-》 setSpeed(0);

延遲(300);

myMotor2-》 run (FORWARD);//擠壓抓手

myMotor2-》 setSpeed(150);

延遲(300);

myMotor2-》 setSpeed(0);

延遲(200);

myMotor2-》 run (后退);//不壓縮

myMotor2-》 setSpeed(150);

延遲(50);

myMotor2-》 setSpeed(0);

延遲(200);

myMotor4-》 run (后退);

myMotor4-》 setSpeed(150);

延遲(1000);

myMotor4-》 setSpeed(0);

延遲(400);

myMotor4-》 run(FORWARD);

myMotor4-》 setSpeed(150);

延遲(2000);

myMotor4-》 setSpeed(0);

延遲(400);

myMotor3-》 run (向前);//將抓手移到頂部

myMotor3-》 setSpeed(150);

延遲(600);

myMotor3-》 setSpeed(0);

延遲(300);

myMotor3-》 run (向后);//將夾子移到下面

myMotor3-》 setSpeed(150);

延遲(600);

myMotor3-》 setSpeed(0);

延遲(300);

myMotor3-》 run (向前);//將抓手移到頂部

myMotor3-》 setSpeed(150);

延遲(600);

myMotor3-》 setSpeed(0);

延遲(300);

myMotor3-》 run (向后);//將夾子移到下面

myMotor3-》 setSpeed(150);

延遲(600);

myMotor3-》 setSpeed(0);

延遲(300);

myMotor3-》 run (向前);//將抓手移到頂部

myMotor3-》 setSpeed(150);

延遲(600);

myMotor3-》 setSpeed(0);

延遲(300);

myMotor3-》 run (向后);//將夾子移到下面

myMotor3-》 setSpeed(150);

延遲(600);

myMotor3-》 setSpeed(0);

延遲(300);

myMotor4-》 run(FORWARD);

myMotor4-》 setSpeed( 150);

延遲(1000);

myMotor4-》 setSpeed(0);

延遲(300);

myMotor2-》 run (FORWARD);//擠壓抓手

myMotor2-》 setSpeed(150);

延遲(300);

myMotor2-》 setSpeed(0);

延遲(200);

myMotor2-》 run (后退);//不壓縮

myMotor2-》 setSpeed(150);

延遲(50);

myMotor2-》 setSpeed(0);

延遲(200);

myMotor4-》 run (前進);

myMotor4-》 setSpeed(150);

延遲(2500);

myMotor4-》 setSpeed(0);

延遲(300);

myMotor3-》 run (前進);

myMotor3-》 setSpeed(150);

延遲(600);

myMotor3-》 setSpeed(0);

延遲(300);

myMotor2-》 run (后退);//打開抓手

myMotor2-》 setSpeed(150);

延遲(400);

myMotor2-》 setSpeed(0);

延遲(400);

myMotor4-》 run (后退);

myMotor4-》 setSpeed(150);

延遲(3000);

myMotor4-》 setSpeed(0);

延遲(400);

}

void two_drops()

{

myMotor4-》 run(FORWARD);//來拾取顏色

myMotor4-》 setSpeed(150);

延遲(3000);

myMotor4-》 setSpeed(0);

延遲(300);

myMotor2-》 run (后退);//打開抓手

myMotor2-》 setSpeed(150);

延遲(380);

myMotor2-》 setSpeed(0);

延遲(200);

myMotor2-》 run (FORWARD);//關閉夾子

myMotor2-》 setSpeed(150);

延遲(600);

myMotor2-》 setSpeed(0);

延遲(400);

myMotor3-》 run (向后);//將抓手移到頂部

myMotor3-》 setSpeed(150);

延遲(600);

myMotor3-》 setSpeed(0);

延遲(300);

myMotor4-》 run (后退);

myMotor4-》 setSpeed(150);

延遲(3500);

myMotor4-》 setSpeed(0);

延遲(300);

myMotor2-》 run (FORWARD);//擠壓抓手

myMotor2-》 setSpeed(150);

延遲(300);

myMotor2-》 setSpeed(0);

延遲(200);

myMotor2-》 run (后退);//不壓縮

myMotor2-》 setSpeed(150);

延遲(50);

myMotor2-》 setSpeed(0);

延遲(200);

myMotor4-》 run(FORWARD);

myMotor4-》 setSpeed(150);

延遲(1500);

myMotor4-》 setSpeed(0);

延遲(300);

myMotor2-》 run (FORWARD);//擠壓抓手

myMotor2-》 setSpeed(150);

延遲(300);

myMotor2-》 setSpeed(0);

延遲(200);

myMotor2-》 run (后退);//不壓縮

myMotor2-》 setSpeed(150);

延遲(50);

myMotor2-》 setSpeed(0);

延遲(200);

myMotor4-》 run (前進);

myMotor4-》 setSpeed(150);

延遲(2000);

myMotor4-》 setSpeed(0);

延遲(300);

myMotor3-》 run (前進);

myMotor3-》 setSpeed(150);

延遲(600);

myMotor3-》 setSpeed(0);

延遲(300);

myMotor2-》 run (后退);//打開抓手

myMotor2-》 setSpeed(150);

延遲(400);

myMotor2-》 setSpeed(0);

延遲(400);

myMotor4-》 run (后退);

myMotor4-》 setSpeed(150);

延遲(3000);

myMotor4-》 setSpeed(0);

延遲(400);

}

void brush()

{

myMotor4-》 run(BACKWARD);

myMotor4-》 setSpeed(150);

延遲(3000);

myMotor4-》 setSpeed(0);

延遲(400);

myMotor2-》 run (后退);//打開抓手

myMotor2-》 setSpeed(150);

延遲(380);

myMotor2-》 setSpeed(0);

延遲(200);

myMotor2-》 run (FORWARD);//關閉夾子

myMotor2-》 setSpeed(150);

延遲(600);

myMotor2-》 setSpeed(0);

延遲(400);

myMotor4-》 run (前進);

myMotor4-》 setSpeed(150);

延遲(3000);

myMotor4-》 setSpeed(0);

延遲(400);

myMotor1-》 run (后退);

myMotor1-》 setSpeed(150);

延遲(600);

myMotor1-》 setSpeed(0);

延遲(400);

myMotor4-》 run (后退);

myMotor4-》 setSpeed(150);

延遲(1000);

myMotor4-》 setSpeed(0);

延遲(400);

myMotor4-》 run (FORWARD);

myMotor4-》 setSpeed(150);

延遲(2000);

myMotor4-》 setSpeed(0);

延遲(400);

myMotor1-》 run (前進);

myMotor1-》 setSpeed(150);

延遲(600);

myMotor1-》 setSpeed(0);

延遲(400);

myMotor4-》 run (后退);

myMotor4-》 setSpeed(150);

延遲(4000);

myMotor4-》 setSpeed(0);

延遲(400);

myMotor2-》 run (后退);//打開抓手

myMotor2-》 setSpeed(150);

延遲(380);

myMotor2-》 setSpeed(0);

延遲(200);

myMotor4-》 run (前進);

myMotor4-》 setSpeed(150);

延遲(3000);

myMotor4-》 setSpeed(0);

延遲(400);

}

步驟5:與BitVoicer集成

下一步是在任何Windows機器上下載并安裝BitVoicer軟件。

在上一步中提到了將Arduino代碼與BitVoicer集成的代碼。

在此之后,我們必須在BitVoicer窗口中獲得語音字及其映射的內容。對于這個項目,演講詞是‘現(xiàn)代藝術’和‘簡單藝術’。

命令‘MODERN ART’,映射到一個從油漆瓶中擠出3組油漆滴的功能。因此,與“SIMPLE ART”功能相比,我們在紙上獲得了更深的彩色圖案。

命令SIMPLE ART‘,僅丟棄2組油漆滴。

步驟6:工作和最終圖像的視頻

視頻顯示機器人使用聲控命令執(zhí)行大理石繪畫。大理石畫可以在圖片中看到,它顯示了兩種不同顏色的畫作。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Arduino
    +關注

    關注

    190

    文章

    6498

    瀏覽量

    192095
  • 機械臂
    +關注

    關注

    13

    文章

    554

    瀏覽量

    25376
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    GZCOM-NET:為機械測試帶來高效無線解決方案!

    在智慧工廠中,機械的性能和安全性需通過靜態(tài)與動態(tài)測試來保障。批量化測試時,后臺需實時顯示數(shù)據(jù)曲線和異常數(shù)據(jù)。GZCOM-NET憑借高效穩(wěn)定的無線傳輸,為機械測試提供可靠方案。行業(yè)背
    的頭像 發(fā)表于 06-20 11:36 ?365次閱讀
    GZCOM-NET:為<b class='flag-5'>機械</b><b class='flag-5'>臂</b>測試帶來高效無線解決方案!

    ??低曂瞥龃竽P?b class='flag-5'>機械防碰撞相機

    工業(yè)機械負載作業(yè)時,往往重達幾百斤甚至更重,提升效率的同時,如果它們“意外傷人”,后果不堪設想。
    的頭像 發(fā)表于 03-17 09:47 ?584次閱讀

    如何使用PLC控制myCobot 320機械

    根據(jù)持續(xù)的用戶反饋,目前市場對 PLC 與 myCobot 系統(tǒng)集成的需求很大,因此本文提供的案例介紹了如何使用 PLC(可編程邏輯控制器)來控制 myCobot 320 機械。本案例重點介紹
    的頭像 發(fā)表于 01-23 14:03 ?1130次閱讀
    如何使用PLC控制myCobot 320<b class='flag-5'>機械</b><b class='flag-5'>臂</b>

    使用myCobot 280機械結合ROS2系統(tǒng)搭建機械分揀站

    這篇文章是來自Automatic Addison的開源項目,已獲作者授權轉載自github。本項目的主要內容是使用myCobot 280機械結合ROS2系統(tǒng)搭建機械分揀站。
    的頭像 發(fā)表于 01-15 09:22 ?791次閱讀
    使用myCobot 280<b class='flag-5'>機械</b><b class='flag-5'>臂</b>結合ROS2系統(tǒng)搭建<b class='flag-5'>機械</b>分揀站

    深度解析!RK3568 加持機械是如何實現(xiàn)顏色識別與抓取的?

    一、產(chǎn)品簡介TL3568-PlusTEB人工智能實驗箱國產(chǎn)高性能處理器64位4核低功耗2.0GHz超高主頻1T超高算力NPU兼容鴻蒙等國產(chǎn)操作系統(tǒng)二、實驗目的1、了解機械識別顏色抓取積木的基本流程
    的頭像 發(fā)表于 01-15 08:07 ?693次閱讀
    深度解析!RK3568 加持<b class='flag-5'>機械</b><b class='flag-5'>臂</b>是如何實現(xiàn)顏色識別與抓取的?

    RK3568國產(chǎn)實驗箱+人工智能機械:跳舞、疊羅漢、夾方塊、積木搬運案例全解!

    基于語音控制實現(xiàn)機械特定動作的方法。三、實驗原理程序功能通過語音控制機械實現(xiàn)特定復雜動作:機械
    的頭像 發(fā)表于 12-12 19:01 ?1093次閱讀
    RK3568國產(chǎn)實驗箱+人工智能<b class='flag-5'>機械</b><b class='flag-5'>臂</b>:跳舞、疊羅漢、夾方塊、積木搬運案例全解!

    凌科電氣新品發(fā)布:揭秘機械高可靠連接器解決方案

    機械因其卓越的精準性、智能化水平和高效工作能力,廣泛應用于工業(yè)制造、物流倉儲、醫(yī)療手術等多個領域。其中,在機械高效運行的背后,工業(yè)級連接器在保障設備穩(wěn)定運行方面發(fā)揮著重要作用。
    的頭像 發(fā)表于 11-20 11:42 ?481次閱讀

    “雙保險”鎖緊機制:YM28系列連接器為機械提供高牢靠的大電流連接

    機械因其精準性、智能性、高效性等特點,在工業(yè)制造、物流倉儲、醫(yī)療手術等領域如魚得水、應用甚廣。在機械大展身手的背后,其實有一股不可忽視的力量在支撐,那就是承擔電氣化連接的工業(yè)級連接
    的頭像 發(fā)表于 11-20 01:03 ?651次閱讀
    “雙保險”鎖緊機制:YM28系列連接器為<b class='flag-5'>機械</b><b class='flag-5'>臂</b>提供高牢靠的大電流連接

    機械的高效運作,連接器起關鍵作用

    ? ? ?機械是靈活且可編程的自動化設備,在工業(yè)生產(chǎn)中發(fā)揮著至關重要的作用。其廣泛的應用領域涵蓋了裝配與搬運、焊接與噴涂、檢測與測量、碼垛等多個環(huán)節(jié),極大地提升了生產(chǎn)效率與質量,并成功替代人工完成
    的頭像 發(fā)表于 11-11 18:07 ?825次閱讀

    工業(yè)產(chǎn)線機械數(shù)字孿生 流程工業(yè)應用

    圖撲軟件根據(jù)實驗室構建的工業(yè)產(chǎn)線機械數(shù)字孿生環(huán)境,對數(shù)字孿生關鍵構件、工作過程進行驗證,形成此文,與大家共同探討數(shù)字孿生系統(tǒng)構建的關鍵技術。
    的頭像 發(fā)表于 11-04 14:15 ?728次閱讀
    工業(yè)產(chǎn)線<b class='flag-5'>機械</b><b class='flag-5'>臂</b>數(shù)字孿生   流程工業(yè)應用

    【原創(chuàng)】 drawbot 平面機械scara寫字畫畫機器人DIY教程貼

    自行下載drawbot by MG-mossbot - Thingiverse需要用到的軟件如下:Xloader固件燒錄軟件 用于給控制板燒錄程序機械大師上位機(作者原創(chuàng)軟件) 用于給機械
    發(fā)表于 08-30 11:54

    OrangePi AIpro應用:機械應用開發(fā)指南

    2024世界人工智能大會上,香橙派攜OrangePiAIpro20T在世博展覽館H1-A301展區(qū)亮相,給大家?guī)鞟I+互動的沉浸式體驗。其中,搭載OrangePiAIpro開發(fā)板的智能機械吸引了
    的頭像 發(fā)表于 08-19 16:42 ?1067次閱讀
    OrangePi AIpro應用:<b class='flag-5'>機械</b><b class='flag-5'>臂</b>應用開發(fā)指南

    工業(yè)機器人和機械的設計、功能和應用有哪些區(qū)別?

    機械是一種由多個關節(jié)連接而成的機械結構,類似于人的胳膊。它通常具有可旋轉或可伸縮的關節(jié),使其能夠在空間中執(zhí)行精確的定位和操作。機械通常由
    的頭像 發(fā)表于 08-16 09:43 ?1045次閱讀

    奧比中光推出2.0版大模型機械

    近期,奧比中光研發(fā)團隊融合前沿多模態(tài)大模型技術,推出最新2.0版大模型機械演示方案。新方案搭載公司最新深度相機Gemini 335L和Femto Bolt,能夠基于語音指令,自動執(zhí)行沏茶、插花、滴
    的頭像 發(fā)表于 07-19 16:50 ?1167次閱讀