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