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