引言
機(jī)械臂是一種可編程的、自動化的機(jī)械系統(tǒng),它可以模擬人類的動作,完成各種任務(wù),例如裝配、噴涂、包裝、搬運(yùn)、焊接、研磨等。由于其高度靈活性和多功能性,機(jī)械臂在現(xiàn)代社會中已經(jīng)得到了廣泛的應(yīng)用。
myCobot 280 M5Stack 2023是一款高性能桌面型機(jī)械臂,其強(qiáng)大的功能和多種新特性使其成為教育、科研和輕型制造等領(lǐng)域的理想選擇。該機(jī)械臂不僅具備精準(zhǔn)的運(yùn)動控制和高效的工作能力,而且支持ROS2的環(huán)境適配、ps2手柄控制、自干涉碰撞等多種新功能,這些功能使得該機(jī)械臂更加智能、靈活和安全。本篇文章將詳細(xì)介紹myCobot280 2023的新功能和應(yīng)用場景,幫助讀者深入了解這款機(jī)械臂的特點(diǎn)和優(yōu)勢,并探索如何在教育、科研和制造等領(lǐng)域中發(fā)揮其潛力。
myCobot280 2023簡介
myCobot 280是一款輕量級桌面型機(jī)械臂產(chǎn)品,重量不到800克,可重復(fù)定位精度控制在0.5毫米以內(nèi),負(fù)載能力為250克,工作半徑為280毫米。該機(jī)械臂具有豐富的接口,支持主流編程語言和環(huán)境,例如Python、C++、ROS1/2等。這使得它非常適合用于教育、科研、等領(lǐng)域。
新功能
myCobot 280 2023 具有以下新功能:
(如果您當(dāng)前使用的是第一代myCobot 280,則可以升級固件以訪問新功能。
● 提高通信速度和 ROS2 支持
● 自干擾碰撞和手柄控制
● 復(fù)合機(jī)器人及物流自動化研究
提高通信速度和 ROS2 支持
● myCobot 280 2023的通信速度比之前的版本提高了五倍,現(xiàn)在可以達(dá)到20ms。這種改進(jìn)可以提高機(jī)械臂的響應(yīng)能力,使控制更加靈敏,減少通信造成的事故。機(jī)器人的運(yùn)動速度也更快,減少了事故的發(fā)生。
myCobot 280 2023 現(xiàn)在支持 ROS2 環(huán)境,它與 ROS1 有兩個不同之處。首先,ROS2提高了實(shí)時性能,可以更精確地控制機(jī)器人的運(yùn)動路徑和速度。這適用于需要高實(shí)時性能的應(yīng)用。其次,ROS2使用數(shù)據(jù)分發(fā)服務(wù)(DDS)協(xié)議,與ROS1相比,該協(xié)議提高了網(wǎng)絡(luò)通信性能,使其在處理機(jī)器人控制命令和提高機(jī)器人響應(yīng)速度方面更加高效。但是,ROS1已經(jīng)在機(jī)器人領(lǐng)域得到了廣泛的應(yīng)用,并且具有相對完整的控制庫和開發(fā)環(huán)境,使得開發(fā)和應(yīng)用機(jī)器人相關(guān)軟件變得容易。ROS2相對較新,在市場上的應(yīng)用較少。因此,用戶在選擇控件開發(fā)環(huán)境時,需要考慮自己的具體需求和實(shí)際情況,選擇最合適的一種。
● 自干涉碰撞和手柄控制
○ 自干涉碰撞:新添了一個自干涉碰撞功能,這個功能能使本體在發(fā)生關(guān)節(jié)碰撞的時候會立刻停止運(yùn)動,不會繼續(xù)運(yùn)動下去導(dǎo)致機(jī)械臂出現(xiàn)掉電情況。這個功能可以有效避免機(jī)械臂在工作過程中出現(xiàn)異常情況導(dǎo)致的損壞,提高了機(jī)械臂的安全性和可靠性。
通過收集用戶的反饋,已經(jīng)研發(fā)人員對產(chǎn)品的期望,這項(xiàng)技術(shù)可以說是很大程度上解決了一個問題,在以往如果說強(qiáng)行讓機(jī)械臂關(guān)節(jié)進(jìn)行碰撞的話,整個機(jī)器就會執(zhí)行掉電保護(hù),需要重新上電恢復(fù)控制,給不少用戶造成了麻煩。
目前這項(xiàng)技術(shù)并不開源,所以不能過多的揭曉其中的算法和原理。
● 還有一個游戲手柄控制功能,允許用戶使用 PS2 游戲控制器控制機(jī)器人的運(yùn)動和操作,還增加了對吸盤和夾具的控制。此功能簡化了編程過程并改善了用戶體驗(yàn)。句柄控制功能基于一組 Python 程序,引入 Pygame 庫來設(shè)置控制器的密鑰(相當(dāng)于自定義句柄)。這是一個相對簡單的項(xiàng)目,有興趣的人可以在此基礎(chǔ)上進(jìn)一步開發(fā)。該項(xiàng)目是開源的,并在GitHub上共享。
def main():
global action
pygame.init()
pygame.joystick.init()
try:
joystick = pygame.joystick.Joystick(0)
except:
print("Please connect the handle first.")
return
joystick.init()
done = False
start_time = 0
while not done:
for event_ in pygame.event.get():
if event_.type == pygame.QUIT:
done = True
# 按鍵按下或彈起事件
elif (
event_.type == pygame.JOYBUTTONDOWN or event_.type == pygame.JOYBUTTONUP
):
buttons = joystick.get_numbuttons()
# 獲取所有按鍵狀態(tài)信息
for i in range(buttons):
button = joystick.get_button(i)
if i == 7:
if button == 1:
action = 7
break
else:
action = 0
if i == 1:
if button == 1:
action = 11
break
if i == 0:
if button == 1:
action = 10
break
if i == 3:
if button == 1:
action = 9
break
if action == 9 and button == 0:
action = 0
break
if i == 2:
if button == 1:
action = 8
break
if action == 8 and button == 0:
action = 0
break
if i == 4:
if button == 1:
action = 18
start_time = time.time()
break
if start_time != 0 and button == 0:
if time.time() - start_time > 2:
start_time = 0
break
else:
start_time = 0
action = 0
if i == 5:
if button == 1:
action = 21
start_time = time.time()
break
if start_time != 0 and button == 0:
if time.time() - start_time > 2:
start_time = 0
break
else:
start_time = 0
action = 0
# print("button " + str(i) + ": " + str(button))
# 軸轉(zhuǎn)動事件
elif event_.type == pygame.JOYAXISMOTION:
axes = joystick.get_numaxes()
# 獲取所有軸狀態(tài)信息
# while True:
for i in range(axes):
axis = joystick.get_axis(i)
# res[i] = axis
if i == 1:
if axis < -3.0517578125e-05:
action = 1
break
elif axis > -3.0517578125e-05:
action = 2
break
else:
action = 0
if i == 0:
if axis < 0:
action = 3
break
elif axis > 0:
action = 4
break
else:
action = 0
if i == 2:
if axis < 0:
action = 17
break
elif axis > 0:
action = 16
break
else:
action = 0
if i == 3:
if axis < -3.0517578125e-05:
action = 5
break
elif axis > -3.0517578125e-05:
action = 6
break
else:
action = 0
if i == 4:
if axis > 0.9:
action = 19
start_time = time.time()
break
if start_time != 0 and axis == -1.0:
if time.time() - start_time > 2:
start_time = 0
break
else:
start_time = 0
action = 0
if i == 5:
if axis > 0.9:
action = 20
start_time = time.time()
break
if start_time != 0 and axis == -1.0:
if time.time() - start_time > 2:
start_time = 0
break
else:
start_time = 0
action = 0
# print("axis " + str(i) + ": " + str(axis))
# 方向鍵改變事件
elif event_.type == pygame.JOYHATMOTION:
# hats = joystick.get_numhats()
# 獲取所有方向鍵狀態(tài)信息
# for i in range(hats):
hat = joystick.get_hat(0)
# print("hat " + str(i) +": " + str(hat))
if hat == (0, 1):
action = 12
elif hat == (0, -1):
action = 13
elif hat == (-1, 0):
action = 14
elif hat == (1, 0):
action = 15
elif hat == (0, 0):
action = 0
pygame.quit()
復(fù)制
復(fù)制
是一個相對比較簡單的項(xiàng)目,如果有興趣的話可以在次基礎(chǔ)上進(jìn)行再次的開發(fā)。
項(xiàng)目是開源的已經(jīng)分享在GitHub,links:
https://github.com/elephantrobotics/pymycobot/tree/main/demo/handle_control
復(fù)合機(jī)器人與物流自動化研究
● myCobot 280 2023還可以與由樹莓派4B控制的SLAM雷達(dá)車myAGV組合,形成一個復(fù)合機(jī)器人,可以學(xué)習(xí)和研究物流自動化、導(dǎo)航和其他功能。此功能使機(jī)器人在處理不同的場景和任務(wù)時更加靈活多才多藝,提高了其綜合應(yīng)用能力。
● myAGV:關(guān)于車輛,hackster網(wǎng)站上有很多介紹文章,一些開發(fā)者使用myAGV和myCobot 280來實(shí)現(xiàn)一些項(xiàng)目。
總結(jié)
總的來說,myCobot 280 2023是一款具有多種新功能和改進(jìn)的機(jī)械臂,大大增強(qiáng)了其性能和應(yīng)用范圍。除了提升通信速度、支持 ROS2、避免自干擾碰撞外,我們還推出了 AI Kit 2023,將機(jī)器視覺與機(jī)械臂相結(jié)合,實(shí)現(xiàn)類似工業(yè)的自動化場景,讓機(jī)械臂的應(yīng)用更加廣泛和多樣化。
此外,myCobot 280 2023 還有許多其他功能等著你去探索,比如繪圖、AI分揀抓取等,這將進(jìn)一步拓展機(jī)械臂的應(yīng)用范圍和創(chuàng)新。如果您有更好的項(xiàng)目和想法,請隨時與我們分享。我們非常樂意聽取您的建議,為您提供更好的服務(wù)。
如果您有任何其他問題或疑慮,請隨時與我們聯(lián)系。我們很樂意為您提供幫助。
審核編輯 黃宇
-
機(jī)器人
+關(guān)注
關(guān)注
211文章
28466瀏覽量
207296 -
機(jī)械臂
+關(guān)注
關(guān)注
12文章
515瀏覽量
24609
發(fā)布評論請先 登錄
相關(guān)推薦
評論