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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

創(chuàng)新實(shí)踐,復(fù)合機(jī)器人采摘運(yùn)輸教育沙盤案例研究

大象機(jī)器人科技 ? 來(lái)源:大象機(jī)器人科技 ? 作者:大象機(jī)器人科技 ? 2023-07-11 11:12 ? 次閱讀

引言

在之前我們已經(jīng)介紹了水果采摘和分揀機(jī)器人的應(yīng)用場(chǎng)景,今天我們來(lái)介紹復(fù)合機(jī)器人水果采摘運(yùn)輸?shù)膱?chǎng)景。

作為最熱門的技術(shù)領(lǐng)域,機(jī)器人技術(shù)正在徹底改變各行各業(yè),推動(dòng)全球創(chuàng)新。為了滿足這一快速發(fā)展領(lǐng)域?qū)I(yè)技術(shù)人才日益增長(zhǎng)的需求,Elephant Robotics公司為高等院校開發(fā)了一個(gè)開創(chuàng)性的機(jī)器人教育解決方案。該創(chuàng)新解決方案將模擬自動(dòng)水果采摘機(jī)與水果分揀和配送自動(dòng)化的復(fù)合機(jī)器人結(jié)合起來(lái),為學(xué)生提供了在最熱門和最有發(fā)展趨勢(shì)的技術(shù)領(lǐng)域的全面學(xué)習(xí)體驗(yàn)。

讓讓我們帶著探索的心情,一起來(lái)看看!帶著幾個(gè)問題:

● 復(fù)合機(jī)器人應(yīng)用場(chǎng)景是什么?
● 這個(gè)場(chǎng)景有什么用,能夠讓我們學(xué)到什么?
● 這個(gè)場(chǎng)景有什么特別的地方?

Compound Robot: Automation of Fruit Sorting and Delivery

image.png

圖中所展示的是復(fù)合機(jī)器人套裝應(yīng)用的場(chǎng)景,由以下幾個(gè)部分組成。

mechArm 270 Pi *2
myAGV *1
3D Camera/Depth Camera *1
Simulated Fruit Tree *1
3D Structural Parts some
Screen *2
Keyboard&mouse *2
Router *1

你可能會(huì)想知道這個(gè)套裝是如何怎么運(yùn)行起來(lái)的,有那么多個(gè)模塊組成,它們分別充當(dāng)什么成分,它的工作原理又是什么呢。接下來(lái)跟隨著我們的腳步來(lái)探索這未知的事物。

這是一張場(chǎng)景的結(jié)構(gòu)圖,介紹圖中的組成:

● myAGV+R1 Arm :復(fù)合機(jī)器人,由myAGV搭載mechArm 270-Pi機(jī)械            ● Obstacle:障礙物,阻擋myAGV前行的物體。


            ● Tree:仿真模擬果樹,樹上有果實(shí)


            ● R2 Arm:  mechArm 270 Pi,六軸機(jī)械臂


            ● Loading Area: 復(fù)合機(jī)器人到達(dá)該位置,等待ARM將果實(shí)的裝載


            ● Unloading Area:復(fù)合機(jī)器人到達(dá)該位置,進(jìn)行卸載果實(shí)


            ● Collection Area:收集區(qū),將負(fù)載的果實(shí)卸載到收集區(qū)與內(nèi)

1.jpg

復(fù)合機(jī)器人從初始位置開始運(yùn)轉(zhuǎn),它進(jìn)行自主導(dǎo)航,規(guī)避障礙前往“Loading Area”,抵達(dá)位置后,R2 Arm抓取果樹上的果實(shí)放置在復(fù)合機(jī)器人上,復(fù)合機(jī)器人前往下一個(gè)目標(biāo)“Unloading Area”抵達(dá)位置后,R1Arm將裝載的果實(shí)放置到“Collection Area”。

產(chǎn)品介紹

Robotic Arm - mechArm 270 Pi

這是一款小六軸機(jī)械臂,以Raspberry-Pi為核心控制,ESP32為輔助控制,結(jié)構(gòu)是中心對(duì)稱結(jié)構(gòu)(仿工業(yè)結(jié)構(gòu))。mechArm 270-Pi本體重量1kg, 負(fù)載250g,工作半徑270mm,設(shè)計(jì)緊湊便攜,小巧但功能強(qiáng)大,操作簡(jiǎn)單,能與人協(xié)同、安全工作。

2.png

myAGV- Raspberry Pi 4B

myAGV是一個(gè)以樹莓派4B為控制主板的移動(dòng)底盤機(jī)器人,它采用了競(jìng)賽級(jí)別的麥克納姆車輪和帶有金屬框架的全包裹設(shè)計(jì),內(nèi)置了SLAM算法來(lái)實(shí)現(xiàn)雷達(dá)建圖和自動(dòng)導(dǎo)航,動(dòng)態(tài)避障等功能。Raspberry Pi 4 Model B采用了更快的處理器、更多的內(nèi)存和更快的網(wǎng)絡(luò)連接,并且可以通過(guò)多個(gè)USB 3.0和USB 2.0端口、千兆以太網(wǎng)和雙頻802.11ac無(wú)線網(wǎng)絡(luò)連接,實(shí)現(xiàn)更好的外部設(shè)備連接和網(wǎng)絡(luò)性能。樹莓派社區(qū)也是目前全球名列前茅的硬件開發(fā)社區(qū),里面有許多有趣的案例,常見的解決方法供開發(fā)者交流。

3.png

深度攝像頭

隨著使用場(chǎng)景的多樣性,普通的2D攝像頭無(wú)法滿足我們使用的需求。在場(chǎng)景中我們使用到的是深度攝像頭。深度攝像頭是一種能夠獲取場(chǎng)景深度信息的相機(jī)。它不僅能夠捕捉場(chǎng)景的顏色和亮度信息,還能夠感知物體之間的距離和深度信息。深度攝像頭通常使用紅外線或其他光源來(lái)進(jìn)行測(cè)量,以獲取物體和場(chǎng)景的深度信息。

4.png

它可以獲取很多信息,例如深度的畫面,彩色的畫面,紅外線的畫面,點(diǎn)云畫面。

5.png

有了深度相機(jī),我們就可以精準(zhǔn)的獲取到果樹上果實(shí)的位置,以及顏色信息。

自適應(yīng)夾爪-機(jī)械臂末端執(zhí)行器

6.jpg

自適應(yīng)夾爪是一種用來(lái)抓取、握取或夾持物體的末端執(zhí)行器,它由兩個(gè)可移動(dòng)的爪子組成,可以通過(guò)機(jī)械臂的控制系統(tǒng)來(lái)控制其開合程度和開合速度。

功能的實(shí)現(xiàn)

開始前的準(zhǔn)備

編譯環(huán)境:

# for myAGV to realize some functions
ROS1 Melodic(Gmapping,AMCL,DWA)
# for robotic arm(mechArm 270) to realize some functions
numpy==1.24.3
opencv-contrib-python==4.6.0.66
openni==2.3.0
pymycobot==3.1.2
PyQt5==5.15.9
PyQt5-Qt5==5.15.2
PyQt5-sip==12.12.1
pyserial==3.5

我們主要分類兩個(gè)部分進(jìn)行功能分析,第一部分是整個(gè)項(xiàng)目的架構(gòu),邏輯分析,第二部分是myAGV的功能分析,第三部分是機(jī)械臂的控制,其中第二第三部分又分為以下幾個(gè)功能點(diǎn)。

myAGV:

● 建圖導(dǎo)航
● 靜態(tài)動(dòng)態(tài)避障

mechArm:

機(jī)器視覺識(shí)別算法
● 機(jī)械臂的控制和機(jī)械臂路勁規(guī)劃

我們先從項(xiàng)目的架構(gòu)開始分析。

項(xiàng)目的結(jié)構(gòu)

我們用一張圖來(lái)描述整個(gè)項(xiàng)目的流程,可以結(jié)合上面提到的結(jié)構(gòu)圖來(lái)進(jìn)行分析。

7.jpg

首先myAGV前往“l(fā)oading area” 等待機(jī)械臂從果樹上抓取果實(shí)放到myAGV上,myAGV再通過(guò)運(yùn)輸果實(shí)到“unloading area“將myAGV上負(fù)載得果實(shí)運(yùn)輸?shù)健眂ollection area“,通過(guò)在myAGV上得機(jī)械臂來(lái)實(shí)現(xiàn)。前面得描述為一個(gè)循環(huán),當(dāng)完成卸載水果后,myAGV會(huì)重新回到”loading area“進(jìn)行裝載果實(shí),裝載完成后再去卸載水果,進(jìn)行循環(huán)。

讓我們一起來(lái)分析一下,在整個(gè)過(guò)程中需要解決一些什么問題。最直觀的問題就是,當(dāng)myAGV到達(dá)一個(gè)目標(biāo)地點(diǎn)的時(shí)候,機(jī)械臂是如何知道什么時(shí)候進(jìn)行抓取工作呢?這就要涉及到myAGV和機(jī)械臂通信的一個(gè)問題了。

通信

我們得了解我們的產(chǎn)品是什么,mechArm是一個(gè)固定的六軸機(jī)械臂,以樹莓派為控制主板,myAGV是一個(gè)可移動(dòng)的機(jī)器人,也是以樹莓派為控制主板。所以目前最佳的通信就是用TCP/IP協(xié)議來(lái)實(shí)現(xiàn)。我們常用的一個(gè)方法庫(kù)叫socket,它運(yùn)作的原理很簡(jiǎn)單,建立一個(gè)服務(wù)器和一個(gè)客戶端,就好比我們現(xiàn)在用的ins,tw,whatsapp聊天功能一樣。可以收到信息,也可以發(fā)出信息。

下面是建立服務(wù)器的一些代碼。

Code:

classTcpServer(threading.Thread):
def__init__(self, server_address)- >None:
        threading.Thread.__init__(self)
        self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.s.bind(server_address)
print("server Binding succeeded!")
        self.s.listen(1)
        self.connected_obj =None

        self.good_fruit_str ="apple"
        self.bad_fruit_str ="orange"
        self.invalid_fruit_str ="none"

        self.target = self.invalid_fruit_str
        self.target_copy = self.target
        self.start_move =False


classTcpClient(threading.Thread):
def__init__(self, host, port, max_fruit =8, recv_interval =0.1, recv_timeout =30):
        threading.Thread.__init__(self)

        self.good_fruit_str ="apple"
        self.bad_fruit_str ="orange"
        self.invalid_fruit_str ="none"

        self.host = host
        self.port = port

# Initializing the TCP socket object
# specifying the usage of the IPv4 address family
#  designating the use of the TCP stream transmission protocol
        self.client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

        self.client_socket.connect((self.host, self.port))
        self.current_extracted =0
        self.max_fruit = max_fruit
        self.recv_interval = recv_interval
        self.recv_timeout = recv_timeout

        self.response_copy = self.invalid_fruit_str
        self.action_ready =True

處理完通信就可以解決了myAGV和機(jī)械臂之間的問題。當(dāng)myAGV到達(dá)目的地的時(shí)候給機(jī)械臂發(fā)送一個(gè)信息“i am here”,機(jī)械臂收到這個(gè)信息之后執(zhí)行果實(shí)的采摘。

myAGV

建圖導(dǎo)航

現(xiàn)在的汽車有導(dǎo)航,自動(dòng)駕駛功能,能夠運(yùn)用在現(xiàn)實(shí)生活中實(shí)現(xiàn)無(wú)人駕駛,但是這門技術(shù)目前還不是很完善。那么復(fù)合機(jī)器人中所用的到自動(dòng)導(dǎo)航和避障功能是用什么來(lái)實(shí)現(xiàn)的呢?

ROS:是一個(gè)開源的機(jī)器人操作系統(tǒng),它提供了一系列的工具關(guān)于機(jī)器人的操作,也包含了待會(huì)我們會(huì)提及到的功能包,Gmapping,AMCL,DWA。ROS是一個(gè)功能強(qiáng)大的機(jī)器人操作系統(tǒng),它提供了豐富的庫(kù)和工具,以及靈活的模塊化架構(gòu),使得機(jī)器人應(yīng)用的開發(fā)變得更加高效、靈活和可靠。

在日常生活中,我們使用導(dǎo)航我們的操作一般是:打開地圖,輸入目的地,選擇路線前往目的地。

首先,我們要想實(shí)現(xiàn)一塊區(qū)域必須得有這塊區(qū)域的一個(gè)“地圖”,我們把這個(gè)稱之為“建圖”

GPS(全球衛(wèi)星定位系統(tǒng))是各個(gè)定位系統(tǒng)中所用到的,精準(zhǔn)的收集地面上的信息,構(gòu)建出一個(gè)準(zhǔn)確的地圖。

這里涉及到一個(gè)建圖的算法,Gmapping。

gmapping是一種用于在機(jī)器人上建立環(huán)境地圖的算法。它是一種基于激光雷達(dá)數(shù)據(jù)的SLAM(Simultaneous Localization and Mapping)算法,可以在機(jī)器人運(yùn)動(dòng)時(shí)實(shí)時(shí)地構(gòu)建環(huán)境地圖,并同時(shí)確定機(jī)器人的位置。

8.png

這里我們演示一下,如何進(jìn)行g(shù)mapping建圖。

9.gif

實(shí)際中建圖的運(yùn)動(dòng)

10.gif

ROS界面

可以看到地圖是myAGV通過(guò)雷達(dá)獲取當(dāng)前位置的數(shù)據(jù),排查周圍環(huán)境的情況,在圖中標(biāo)出障礙物。根據(jù)我們搭建的場(chǎng)景,在系統(tǒng)中形成一個(gè)閉環(huán),就完成了建圖。

接下來(lái)我們用到的是navigation功能,顧名思義就是“導(dǎo)航”。導(dǎo)航的前提條件,就是需要定位(myAGV所處的位置),用到的是ROS提供的ACML算法。

AMCL算法是一種概率機(jī)器人定位算法,它基于蒙特卡羅方法(Monte Carlo Method)和貝葉斯濾波(Bayesian Filtering)理論,通過(guò)對(duì)機(jī)器人搭載的傳感器數(shù)據(jù)進(jìn)行處理,實(shí)時(shí)估計(jì)機(jī)器人在環(huán)境中的位置,并不斷更新機(jī)器人位置的概率分布。

AMCL算法通過(guò)以下步驟實(shí)現(xiàn)機(jī)器人的自適應(yīng)定位:

1. 初始化粒子集合:首先,在機(jī)器人初始位置周圍生成一組粒子,代表機(jī)器人可能的位置。

2. 運(yùn)動(dòng)模型更新:根據(jù)機(jī)器人的運(yùn)動(dòng)狀態(tài)和控制信息,更新粒子集合中每個(gè)粒子的位置和狀態(tài)信息。

3. 測(cè)量模型更新:根據(jù)機(jī)器人搭載的傳感器數(shù)據(jù),計(jì)算每個(gè)粒子的權(quán)重(即代表機(jī)器人在該粒子位置時(shí)傳感器數(shù)據(jù)與實(shí)際數(shù)據(jù)的匹配程度),并通過(guò)歸一化處理,將權(quán)重轉(zhuǎn)化為概率分布。

4. 重采樣:根據(jù)粒子的權(quán)重,對(duì)粒子集合進(jìn)行重采樣,從而提高定位精度并減少計(jì)算復(fù)雜度。

5. 機(jī)器人定位:根據(jù)粒子集合的概率分布,確定機(jī)器人在環(huán)境中的位置,并更新機(jī)器人狀態(tài)估計(jì)信息。

11.png

在我們使用導(dǎo)航的時(shí)候選擇目的地,導(dǎo)航軟件會(huì)給我們提供多條路給我們選擇,然而這里也會(huì)提供多條路徑進(jìn)行選擇,只不過(guò)是系統(tǒng)幫忙做了最優(yōu)的選擇。涉及到了兩個(gè)概念,全局路徑規(guī)劃和局部路徑規(guī)劃。Navigation提供了一套框架,其中g(shù)lobal_planner是全局規(guī)劃器,而local_planner是局部路徑規(guī)劃器,它們之間的有些消息,例如:全局規(guī)劃的軌跡,就是在框架內(nèi)部傳遞,沒有topic可以跟蹤??偟恼f(shuō),ROS的導(dǎo)航模塊提供了一套機(jī)制,通過(guò)選擇不同的規(guī)劃器,可以實(shí)現(xiàn)機(jī)器人的自主導(dǎo)航。

12.png

Navigation框架中集成了靜態(tài)和動(dòng)態(tài)的避障。

導(dǎo)航避障功能

從上面的圖中可以看到除了規(guī)劃器,導(dǎo)航模塊還包括cost_map,也就是柵格地圖,并且也包括了靜態(tài)障礙物的信息,也就是說(shuō)哪些區(qū)域可以通過(guò)哪些不可以通過(guò)。同時(shí)動(dòng)態(tài)障礙物信息是通過(guò)sensor topics來(lái)發(fā)布,然后實(shí)時(shí)更新cost_map來(lái)實(shí)現(xiàn)動(dòng)態(tài)避障。除了地圖,導(dǎo)航模塊還需要定位信息,是由amcl模塊來(lái)提供定位信息,如果想采用其它的定位模塊替代,只需要發(fā)布相同的topic即可。同時(shí)還要提供tf信息,也就是說(shuō)不同傳感器之間的轉(zhuǎn)換關(guān)系,這在機(jī)器人中非常常見。機(jī)器人的位姿信息則由odometry來(lái)提供,包括機(jī)器人的速度、角度等,提供給局部規(guī)劃器來(lái)規(guī)劃路徑。

在避障功能中的主力軍是DWA算法,DWA算法旨在使機(jī)器人能夠在復(fù)雜和動(dòng)態(tài)的環(huán)境中快速、安全地規(guī)劃和跟蹤路徑。具體來(lái)說(shuō),DWA算法通過(guò)以下幾個(gè)步驟來(lái)實(shí)現(xiàn):

● 生成候選速度:在機(jī)器人當(dāng)前速度和方向的基礎(chǔ)上,根據(jù)機(jī)器人的動(dòng)力學(xué)限制和環(huán)境條件,生成一組速度和方向的候選值。
 ● 評(píng)估軌跡:對(duì)于每個(gè)候選速度,預(yù)測(cè)機(jī)器人在未來(lái)一段時(shí)間內(nèi)的軌跡,并評(píng)估軌跡的安全性和可達(dá)性。
● 選擇最佳速度:根據(jù)軌跡的評(píng)估結(jié)果,選擇滿足安全和可達(dá)性要求的最佳速度和方向,并將其應(yīng)用于機(jī)器人的控制系統(tǒng)中。

Honeycam 2023-07-11 10-58-27.gif

Honeycam 2023-07-11 10-59-41.gif

機(jī)器視覺算法

從前面已經(jīng)提到普通的2D攝像頭已經(jīng)沒辦法滿足我們的需求,于是我們使用3D深度攝像頭。使用深度攝像頭之前需要進(jìn)行相機(jī)標(biāo)定。相機(jī)標(biāo)定的教程()

相機(jī)標(biāo)定:

相機(jī)標(biāo)定是指通過(guò)對(duì)攝像機(jī)進(jìn)行一系列測(cè)量和計(jì)算,確定攝像機(jī)內(nèi)部參數(shù)和外部參數(shù)的過(guò)程。攝像機(jī)內(nèi)部參數(shù)包括焦距、主點(diǎn)位置、像素間距等,而攝像機(jī)外部參數(shù)則包括攝像機(jī)在世界坐標(biāo)系中的位置和方向等。相機(jī)標(biāo)定的目的是為了使攝像機(jī)能夠準(zhǔn)確地捕捉并記錄世界坐標(biāo)系中物體的位置、大小、形狀等信息。

目標(biāo)物體是果實(shí),它顏色不一,形狀也不一定,有紅的,橙的,黃的。想要準(zhǔn)確的抓取且不傷害到果實(shí),就需要獲取果實(shí)的各個(gè)信息,寬度,厚度等,智能的進(jìn)行抓取。

13.jpg

目標(biāo)果實(shí)目前較大的區(qū)別就是顏色的不一樣,所以設(shè)定紅色和橙色的目標(biāo)將被選中,關(guān)于機(jī)器顏色的識(shí)別,就要用到HSV色域來(lái)進(jìn)行目標(biāo)的檢測(cè)。下面的部分代碼是用來(lái)檢測(cè)目標(biāo)果實(shí)。

Code

classDetector:
classFetchType(Enum):
        FETCH =False
        FETCH_ALL =True

"""
    Detection and identification class
    """

    HSV_DIST ={
# "redA": (np.array([0, 120, 50]), np.array([3, 255, 255])),
# "redB": (np.array([176, 120, 50]), np.array([179, 255, 255])),
"redA":(np.array([0,120,50]), np.array([3,255,255])),
"redB":(np.array([118,120,50]), np.array([179,255,255])),
# "orange": (np.array([10, 120, 120]), np.array([15, 255, 255])),
"orange":(np.array([8,150,150]), np.array([20,255,255])),
"yellow":(np.array([28,100,150]), np.array([35,255,255])),# old
# "yellow": (np.array([31, 246, 227]), np.array([35, 255, 255])),   # new
}

Honeycam 2023-07-11 11-03-03.gif

我們的第一步就是要將目標(biāo)果實(shí)能夠正確的檢測(cè)出來(lái),以便后續(xù)獲取目標(biāo)物體的坐標(biāo),深度等其他信息。我們定義果實(shí)的屬性,坐標(biāo)等信息方便后續(xù)的存儲(chǔ)以及調(diào)用。

code:

class VideoCaptureThread(threading.Thread):
    def __init__(self, detector, detect_type = Detector.FetchType.FETCH_ALL.value):
        threading.Thread.__init__(self)
        self.vp = VideoStreamPipe()
        self.detector = detector                  
        self.finished = True                      
        self.camera_coord_list = []               
        self.old_real_coord_list = []             
        self.real_coord_list = []                 
        self.new_color_frame = None              
        self.fruit_type = detector.detect_target  
        self.detect_type = detect_type            
        self.rgb_show = None
        self.depth_show = None

最后我們要獲取的是果實(shí)的坐標(biāo),能夠發(fā)送給機(jī)械臂去執(zhí)行抓取的坐標(biāo),通過(guò)深度坐標(biāo)轉(zhuǎn)化為世界坐標(biāo),已經(jīng)是成功了一大半了,最后只需要將世界坐標(biāo)跟機(jī)械臂的坐標(biāo)系進(jìn)行轉(zhuǎn)換就可以獲得抓取目標(biāo)果實(shí)的坐標(biāo)了。

# get world coordinate
 def convert_depth_to_world(self, x, y, z):
        fx = 454.367
        fy = 454.367
        cx = 313.847
        cy = 239.89

        ratio = float(z / 1000)
        world_x = float((x - cx) * ratio) / fx
        world_x = world_x * 1000
        world_y = float((y - cy) * ratio) / fy
        world_y = world_y * 1000
        world_z = float(z)

        return world_x, world_y, world_z

該階段,我們實(shí)現(xiàn)了檢測(cè)目標(biāo)物體,并且返回可抓取的坐標(biāo),傳遞給機(jī)械臂。接下來(lái)我們來(lái)處理機(jī)械臂的控制以及軌跡的規(guī)劃。

機(jī)械臂的控制和軌跡規(guī)劃

說(shuō)到機(jī)械臂的控制,大家開始可能都會(huì)覺得困難,思考怎么讓機(jī)械臂按照自己的想法動(dòng)起來(lái)。不過(guò)不用擔(dān)心,mechArm270機(jī)械臂有一個(gè)比較完善的控制庫(kù),pymycobot只需要簡(jiǎn)單的幾行代碼就能夠讓機(jī)械臂運(yùn)動(dòng)起來(lái)。

PS:pymycobot 是pyhon的一個(gè)庫(kù),用于控制機(jī)械臂運(yùn)動(dòng)的一個(gè)庫(kù),我們使用的是最新版,pymycobot==3.1.2

#Introduce two commonly used control methods
'''
Send the degrees of all joints to robot arm.
angle_list_degrees: a list of degree value(List[float]), length 6
speed: (int) 0 ~ 100,robotic arm's speed
'''
send_angles([angle_list_degrees],speed)
send_angles([10,20,30,45,60,0],100)
'''
Send the coordinates to robot arm
coords:a list of coordiantes value(List[float]), length 6
speed: (int) 0 ~ 100,robotic arm's speed
'''
send_coords(coords, speed)
send_coords([125,45,78,-120,77,90],50)

場(chǎng)景中有兩個(gè)機(jī)械臂,它們分別執(zhí)行不同的職能。其中一個(gè)是執(zhí)行果實(shí)的采摘,另一個(gè)是執(zhí)行果實(shí)的裝卸。

Honeycam 2023-07-11 11-05-38.gif

在實(shí)現(xiàn)機(jī)械臂的控制,就需要設(shè)計(jì)機(jī)械臂抓取果實(shí)的軌跡規(guī)劃了。在獲取了果實(shí)的坐標(biāo)之后,對(duì)機(jī)械臂的路徑有所要求,在機(jī)械臂運(yùn)動(dòng)的過(guò)程中不能撞到其他結(jié)構(gòu),打落水果等。

下面是規(guī)劃路徑的Code:

#處理果實(shí)世界坐標(biāo)的方法
deftarget_coords(self):
        coord = self.ma.get_coords()
whilelen(coord)==0:
            coord = self.ma.get_coords()

        target = self.model_track()
        coord[:3]= target.copy()
        self.end_coords = coord[:3]

if DEBUG ==True:
print("coord: ", coord)
print("self.end_coords: ", self.end_coords)

        self.end_coords = coord

return coord

Honeycam 2023-07-11 11-08-09.gif

裝卸機(jī)械臂的路徑規(guī)劃也是同樣的原則來(lái)實(shí)現(xiàn)裝卸這個(gè)過(guò)程。

技術(shù)亮點(diǎn)

從整個(gè)項(xiàng)目來(lái)看,不論是myAGV的建圖導(dǎo)航,自動(dòng)避障功能,還是3D攝像頭機(jī)器識(shí)別的算法,機(jī)械臂的路勁規(guī)劃,亦或者是myAGV跟機(jī)械臂之間的通信,邏輯上的處理。每一個(gè)功能點(diǎn)都有值得學(xué)習(xí)的地方。

我們?cè)陧?xiàng)目中使用到的一些算法并不是最優(yōu)的方法,舉一個(gè)例子說(shuō)明,建圖中用到的gmapping算法。除了gmapping算法還有,F(xiàn)astSLAM算法:FastSLAM算法是一種基于粒子濾波的建圖算法;Topological Mapping算法是一種基于拓?fù)浣Y(jié)構(gòu)的建圖算法,它通過(guò)對(duì)環(huán)境進(jìn)行拓?fù)浞治觯瑢h(huán)境表示為一個(gè)圖的結(jié)構(gòu)等等。

俗話說(shuō)的好“機(jī)器是死的,人是活的”,我們可以根據(jù)各種外界因素來(lái)選擇方法,來(lái)達(dá)到效果最優(yōu)。這個(gè)過(guò)程當(dāng)中是需要不斷地去學(xué)習(xí),不斷地去探討。

總結(jié)

隨著科技的不斷發(fā)展,在未來(lái)世界里。機(jī)器將會(huì)是我們?nèi)祟愖畲蟮膸褪?,在未?lái)的發(fā)展趨勢(shì)也是朝著智能化、靈活化、高效化、安全化的方向發(fā)展。移動(dòng)小車的發(fā)展趨勢(shì)主要包括自主導(dǎo)航、智能路徑規(guī)劃、多模態(tài)感知等方面;機(jī)械臂的發(fā)展趨勢(shì)則主要包括自主學(xué)習(xí)、自適應(yīng)控制、視覺識(shí)別等方面。同時(shí),復(fù)合機(jī)器人的發(fā)展也需要解決移動(dòng)與操作的協(xié)同問題,提高機(jī)器人系統(tǒng)的整體性能和效益。

我們建立該應(yīng)用場(chǎng)景也是提供給熱愛機(jī)器人的創(chuàng)客,學(xué)生一個(gè)具有實(shí)際意義的機(jī)會(huì)。讓學(xué)生通過(guò)實(shí)際操作來(lái)加深對(duì)機(jī)械臂的理解和認(rèn)識(shí)。此外,該場(chǎng)景還可以讓學(xué)生學(xué)習(xí)和掌握機(jī)械臂運(yùn)動(dòng)控制、視覺識(shí)別和物品抓取等技術(shù),幫助他們更好地掌握機(jī)械臂的相關(guān)知識(shí)和技能。還可以幫助學(xué)生鍛煉團(tuán)隊(duì)合作、創(chuàng)新思維和競(jìng)賽思維等能力,為他們未來(lái)的職業(yè)發(fā)展打下堅(jiān)實(shí)的基礎(chǔ)。

審核編輯 黃宇

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

    關(guān)注

    210

    文章

    28103

    瀏覽量

    205852
  • AI
    AI
    +關(guān)注

    關(guān)注

    87

    文章

    29806

    瀏覽量

    268106
  • 人工智能
    +關(guān)注

    關(guān)注

    1789

    文章

    46652

    瀏覽量

    237083
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【TL6748 DSP申請(qǐng)】枸杞采摘機(jī)器人

    申請(qǐng)理由:做采摘機(jī)器人要用到圖像處理技術(shù),但是圖像處理出來(lái)的數(shù)據(jù),要通過(guò)運(yùn)算然后操作下位機(jī)的采摘手進(jìn)行采摘,申請(qǐng)?jiān)鄣腄SP開發(fā)板,用作處理數(shù)據(jù),而且可以進(jìn)行流水線操作,處理更專業(yè)。項(xiàng)目
    發(fā)表于 09-10 11:16

    中國(guó)教育機(jī)器人大賽介紹

    本帖最后由 風(fēng)**影 于 2016-5-18 11:37 編輯 機(jī)器人競(jìng)賽進(jìn)入校園十多年,已成為培養(yǎng)創(chuàng)新人才、促進(jìn)教育改革的有力手段。機(jī)器人競(jìng)賽項(xiàng)目以其趣味性、挑戰(zhàn)性、綜合性和對(duì)
    發(fā)表于 03-24 17:14

    教育機(jī)器人制造廠家,選擇鷗鵬!

    軟企業(yè)和高新技術(shù)企業(yè)。 鷗鵬智能是一家知名的“機(jī)器人輔助工程創(chuàng)新實(shí)踐課程”整體解決方案服務(wù)商,“鷗鵬機(jī)器人”是鷗鵬智能的注冊(cè)商標(biāo)。 鷗鵬智能開創(chuàng)者歷經(jīng)15年磨礪,通過(guò)不斷的
    發(fā)表于 03-30 11:33

    機(jī)器人輔助工程創(chuàng)新實(shí)踐教育解決方案

    機(jī)器人輔助工程創(chuàng)新實(shí)踐教育解決方案
    發(fā)表于 04-11 16:49

    教育機(jī)器人方興未艾,你了解多少?

    是當(dāng)今比較新穎、專業(yè)的教育方法,尤其重視實(shí)踐和應(yīng)用性。機(jī)器人教育主要包含機(jī)器人教育、
    發(fā)表于 12-20 10:01

    新松機(jī)器人成為國(guó)內(nèi)復(fù)合機(jī)器人首創(chuàng)者

    系列產(chǎn)品的基礎(chǔ)上,新松復(fù)合機(jī)器人的應(yīng)用范圍也在不斷擴(kuò)展。 新松2015年推出了首款復(fù)合機(jī)器人,這也是國(guó)內(nèi)第一款復(fù)合機(jī)器人,該款產(chǎn)品集合了智能移動(dòng)機(jī)器人、協(xié)作
    的頭像 發(fā)表于 04-22 09:56 ?3239次閱讀

    復(fù)合機(jī)器人優(yōu)勢(shì)盡顯,發(fā)展空間無(wú)限!

    描述“復(fù)合機(jī)器人”:AGV小車機(jī)器人,負(fù)責(zé)在廠區(qū)運(yùn)送物料;但AGV做不了把物料從車上取走,這就需要在AGV上裝上“協(xié)作機(jī)器人”。協(xié)作機(jī)器人就是輕型六軸機(jī)械臂,由它
    的頭像 發(fā)表于 02-20 16:03 ?1399次閱讀
    <b class='flag-5'>復(fù)合機(jī)器人</b>優(yōu)勢(shì)盡顯,發(fā)展空間無(wú)限!

    復(fù)合機(jī)器人:下一代工業(yè)機(jī)器人

    復(fù)合機(jī)器人,也稱為復(fù)合協(xié)作機(jī)器人,是目前機(jī)器人技術(shù)中的一種新型機(jī)器人,它將多種不同類型的機(jī)器人進(jìn)
    的頭像 發(fā)表于 06-12 16:34 ?3230次閱讀
    <b class='flag-5'>復(fù)合機(jī)器人</b>:下一代工業(yè)<b class='flag-5'>機(jī)器人</b>

    富唯智能復(fù)合機(jī)器人,助推工業(yè)自動(dòng)化新潮流

    智能復(fù)合機(jī)器人作為工業(yè)自動(dòng)化領(lǐng)域的創(chuàng)新技術(shù),正引領(lǐng)著工業(yè)生產(chǎn)模式的變革。通過(guò)其感知、認(rèn)知和合作能力,智能復(fù)合機(jī)器人在提高生產(chǎn)效率、降低勞動(dòng)風(fēng)險(xiǎn)和迎合靈活生產(chǎn)需求方面表現(xiàn)出色??梢灶A(yù)見,隨著技術(shù)的不斷進(jìn)步,智能
    的頭像 發(fā)表于 09-13 16:38 ?646次閱讀

    工業(yè)復(fù)合機(jī)器人應(yīng)用前景廣闊,為制造業(yè)帶來(lái)新的機(jī)遇和挑戰(zhàn)

    復(fù)合機(jī)器人是制造業(yè)的重要發(fā)展方向,通過(guò)將不同類型機(jī)器人組合,具備“手、腳、眼、腦”等功能,適應(yīng)復(fù)雜任務(wù)操作。工業(yè)復(fù)合機(jī)器人可提高生產(chǎn)效率、降低成本、解決勞動(dòng)力密集和高危問題。但應(yīng)用面臨技術(shù)、人機(jī)協(xié)作及社會(huì)接受度挑戰(zhàn)。
    的頭像 發(fā)表于 10-12 16:40 ?868次閱讀

    復(fù)合機(jī)器人能給3C電子行業(yè)帶來(lái)哪些潛在益處

    復(fù)合機(jī)器人能給3C電子行業(yè)帶來(lái)哪些潛在益處
    的頭像 發(fā)表于 03-19 16:42 ?711次閱讀
    <b class='flag-5'>復(fù)合機(jī)器人</b>能給3C電子行業(yè)帶來(lái)哪些潛在益處

    復(fù)合機(jī)器人:重塑柔性生產(chǎn)的未來(lái)

    在智能科技不斷突破邊界的當(dāng)下,機(jī)器人技術(shù)以其獨(dú)特的方式正在引領(lǐng)工業(yè)領(lǐng)域的革新。富唯智能,作為機(jī)器人技術(shù)領(lǐng)域的創(chuàng)新者,推出的ICR系列復(fù)合機(jī)器人,以其卓越的智能ICR系列
    的頭像 發(fā)表于 05-29 16:05 ?323次閱讀
    <b class='flag-5'>復(fù)合機(jī)器人</b>:重塑柔性生產(chǎn)的未來(lái)

    復(fù)合機(jī)器人倉(cāng)庫(kù)搬運(yùn)方案

    隨著科技的飛速發(fā)展,智能倉(cāng)儲(chǔ)已經(jīng)成為現(xiàn)代物流領(lǐng)域的重要發(fā)展方向。近日,一種全新的復(fù)合機(jī)器人倉(cāng)庫(kù)搬運(yùn)方案亮相,該方案結(jié)合了復(fù)合機(jī)器人AMR與搬運(yùn)機(jī)器人AGV,實(shí)現(xiàn)了產(chǎn)品從貨架到指定位置的自動(dòng)化搬運(yùn)。
    的頭像 發(fā)表于 08-09 16:08 ?221次閱讀
    <b class='flag-5'>復(fù)合機(jī)器人</b>倉(cāng)庫(kù)搬運(yùn)方案

    復(fù)合機(jī)器人:開啟智能倉(cāng)儲(chǔ)新篇章

    隨著工業(yè)4.0時(shí)代的到來(lái),智能制造和智能倉(cāng)儲(chǔ)已經(jīng)成為企業(yè)發(fā)展的重要驅(qū)動(dòng)力。近日,一種全新的復(fù)合機(jī)器人倉(cāng)庫(kù)搬運(yùn)方案亮相,該方案以復(fù)合機(jī)器人AMR為核心,通過(guò)與搬運(yùn)機(jī)器人AGV的緊密配合,開啟了智能倉(cāng)儲(chǔ)的新篇章。
    的頭像 發(fā)表于 10-12 16:58 ?199次閱讀
    <b class='flag-5'>復(fù)合機(jī)器人</b>:開啟智能倉(cāng)儲(chǔ)新篇章

    一臺(tái)復(fù)合機(jī)器人需要多少錢?

    在智能制造領(lǐng)域,復(fù)合機(jī)器人以其卓越的性能備受矚目,而其價(jià)格也成為眾多企業(yè)關(guān)注的焦點(diǎn)。
    的頭像 發(fā)表于 11-07 17:35 ?101次閱讀
    一臺(tái)<b class='flag-5'>復(fù)合機(jī)器人</b>需要多少錢?