項(xiàng)目簡(jiǎn)介
本項(xiàng)目致力于探索和實(shí)現(xiàn)一種高度集成的機(jī)器人系統(tǒng),旨在通過(guò)結(jié)合現(xiàn)代機(jī)器人操作系統(tǒng)(ROS)和先進(jìn)的硬件組件,解決特定的自動(dòng)化任務(wù)和挑戰(zhàn)。一部分是基于Jetson Orin主板的LIMO PPRO SLAM雷達(dá)小車(chē),它具備自主導(dǎo)航、地圖構(gòu)建和路徑規(guī)劃的能力;另一部分是Mycobot 280 M5機(jī)械臂,這是一個(gè)具有六自由度、工作半徑280mm的緊湊型機(jī)械臂,能夠進(jìn)行精確的物品搬運(yùn)和操作。
通過(guò)將這兩部分緊密集成,我們創(chuàng)建了一個(gè)能夠執(zhí)行復(fù)雜任務(wù)的復(fù)合機(jī)器人系統(tǒng),如自動(dòng)化物品傳送、環(huán)境監(jiān)測(cè)、以及其他需要高度自主性和操作靈活性的應(yīng)用場(chǎng)景。
項(xiàng)目的開(kāi)發(fā)過(guò)程中,我們深入探討了ROS的強(qiáng)大功能,包括但不限于使用move_base實(shí)現(xiàn)的自主導(dǎo)航,以及gmappping_ros進(jìn)行的實(shí)時(shí)SLAM(同時(shí)定位與地圖構(gòu)建).還涉及到機(jī)械臂的控制和計(jì)算機(jī)視覺(jué)技術(shù)的應(yīng)用,用于物體識(shí)別和環(huán)境感知,從而提高機(jī)器人的操作智能和適應(yīng)性。
項(xiàng)目希望能夠?yàn)榧夹g(shù)愛(ài)好者、教育工作者和研究人員提供一個(gè)實(shí)用的參考,激發(fā)更多的創(chuàng)新思路和應(yīng)用探索。
技術(shù)和硬件概述
myCobot 280 M5Stack。
myCobot 280 是由Elephant Robotics 開(kāi)發(fā)的6自由度的協(xié)作形機(jī)械臂,設(shè)計(jì)靈活且功能強(qiáng)大,特別適合用于教育,研究等場(chǎng)景。

myCobot 280 M5支持多種編程和控制方式,適用于各種操作系統(tǒng)和編程語(yǔ)言,包括:
主控和輔控芯片:ESP32
性能:工作半徑280mm,
支持藍(lán)牙(2.4G/5G)和無(wú)線(2.4G 3D Antenna)
多種輸入和輸出端口
支持自由移動(dòng)、關(guān)節(jié)運(yùn)動(dòng)、笛卡爾運(yùn)動(dòng)、軌跡錄制和無(wú)線控制
兼容操作系統(tǒng):Windows、Linux、MAC
支持編程語(yǔ)言:Python、C++、C#、JavaScript
支持編程平臺(tái)和工具:RoboFlow、myblockly、Mind+、UiFlow、Arduino、mystudio
支持通信協(xié)議:串口控制協(xié)議、TCP/IP、MODBUS
這些特性使myCobot 280 M5成為一個(gè)多功能、易于使用且適用于多種應(yīng)用場(chǎng)景的機(jī)器人解決方案。
LIMO Pro
松靈機(jī)器人LIMO代表了移動(dòng)機(jī)器人領(lǐng)域的一項(xiàng)創(chuàng)新,將靈活性和強(qiáng)大的功能集成于一個(gè)緊湊的平臺(tái)之中。它是專(zhuān)為機(jī)器人教育、功能研發(fā)及產(chǎn)品開(kāi)發(fā)而設(shè)計(jì)的全球首款ROS開(kāi)發(fā)平臺(tái),能夠適應(yīng)更廣泛的場(chǎng)景并滿足行業(yè)應(yīng)用的需求。以下是對(duì)Limo Pro硬件和技術(shù)特性的詳細(xì)概述:

運(yùn)動(dòng)模態(tài)
四輪差速- 阿克曼轉(zhuǎn)向- 履帶型移動(dòng)- 麥克納姆輪移動(dòng)
場(chǎng)景適用性
適用于多種實(shí)擬教學(xué)和測(cè)試環(huán)境- 從室內(nèi)平整地面到復(fù)雜地形均能靈活應(yīng)對(duì)
處理器
NVIDIA Jetson Orin Nano
傳感器配置
EAI Tmini Pro激光雷達(dá) - 深度相機(jī)
主要功能
精確的自主定位 - SLAM建圖 - 路線規(guī)劃 - 自主避障 - 自主倒車(chē)入庫(kù) - 紅綠燈識(shí)別
LIMO利用激光雷達(dá)和深度相機(jī)進(jìn)行環(huán)境感知,結(jié)合NVIDIA Jetson Orin Nano的強(qiáng)大計(jì)算能力,實(shí)現(xiàn)高精度的SLAM建圖和自主導(dǎo)航。LIMO不僅作為移動(dòng)平臺(tái)執(zhí)行復(fù)雜的導(dǎo)航和搬運(yùn)任務(wù),其多模態(tài)移動(dòng)能力也大大增強(qiáng)了機(jī)器人系統(tǒng)的適用范圍和靈活性。結(jié)合Mycobot 280 M5機(jī)械臂,LIMO為自動(dòng)化應(yīng)用提供了一個(gè)高效、可靠的解決方案,無(wú)論是在機(jī)器人教育、研發(fā)還是產(chǎn)品開(kāi)發(fā)領(lǐng)域,都展現(xiàn)出了巨大的潛力和價(jià)值。
軟件架構(gòu)
軟件架構(gòu)主要分為:導(dǎo)航和建圖,目標(biāo)檢測(cè),機(jī)械臂控制,以及系統(tǒng)集成和通信。這些部分通過(guò)ROS(robot operating system)框架進(jìn)行整合,利用ROS的通信機(jī)制(話題,服務(wù),動(dòng)作)實(shí)現(xiàn)模塊間的交互。

ros的通信方式
下圖是整個(gè)項(xiàng)目的軟件架構(gòu)圖,我們來(lái)一起來(lái)介紹一下具體的功能。

整體主要分為三個(gè)模塊,一個(gè)是LIMO PRO的功能,二是機(jī)器視覺(jué)功能處理,三是機(jī)械臂的功能。
LIMO PRO Function
Gmapping:
Gmapping是基于濾波SLAM框架的常用開(kāi)源SLAM算法。Gmapping有效利用了車(chē)輪里程計(jì)信息,對(duì)激光雷達(dá)的頻率要求不高,在構(gòu)建小場(chǎng)景地圖時(shí),所需的計(jì)算量較小且精度較高.


建了地圖之后就可以在地圖上進(jìn)行定位導(dǎo)航了,這一部分的功能主要運(yùn)用到機(jī)器人定位和路徑規(guī)劃,ROS提供了一下兩個(gè)功能包:
(1)move_base:實(shí)現(xiàn)機(jī)器人導(dǎo)航中的最優(yōu)路徑規(guī)劃。
(2)amcl:實(shí)現(xiàn)二維地圖中的機(jī)器人定位。
在上述的兩個(gè)功能包的基礎(chǔ)上,ROS提供了一套完整的導(dǎo)航框架。

機(jī)器人只需要發(fā)布必要的傳感器信息和導(dǎo)航的目標(biāo)位置,ROS即可完成導(dǎo)航功能。在該框架中,move_base功能包提供導(dǎo)航的主要運(yùn)行、交互接口。為了保障導(dǎo)航路徑的準(zhǔn)確性,機(jī)器人還要對(duì)自己所處的位置進(jìn)行精確定位,這部分功能由amcl功能包實(shí)現(xiàn)。

在導(dǎo)航的過(guò)程中,運(yùn)用了兩種算法DWA和TEB算法,這兩種算法分別處理全局路徑和局部路徑規(guī)劃,來(lái)保證小車(chē)能夠安全的前進(jìn)到目的地,避免與障礙物發(fā)生碰撞。
myCobot 280 Function
ROS主要支持python和C++兩種編程語(yǔ)言。機(jī)械臂的控制主要是基于python當(dāng)中的pymycobot API 庫(kù)。 這個(gè)功能很全面的提供了mycobot 280 的控制方法,下面主要介紹幾個(gè)常用的方法:
pymycobot API:
下面的兩個(gè)方法能夠控制機(jī)械臂關(guān)節(jié)的角度來(lái)控制機(jī)械臂運(yùn)動(dòng),能單獨(dú)控制某個(gè)關(guān)節(jié)的角度,也能夠控制全部關(guān)節(jié)的角度來(lái)運(yùn)動(dòng)。
send_angle(id,angle,speed) send_angles(angle_list,speed,mode)
對(duì)于要執(zhí)行一些抓去運(yùn)動(dòng)來(lái)說(shuō),角度的控制是遠(yuǎn)遠(yuǎn)不夠大的,所以pymycobot還提供了坐標(biāo)控制,能夠控制機(jī)械臂末端在空間上的運(yùn)動(dòng)。
send_coord(id,coord,speed) send_coords(coords, speed, mode)
同樣是兩個(gè)控制方法第一個(gè)可以單個(gè)控制機(jī)械臂末端X,Y,Z,RX,RY,RZ方向的姿態(tài),這樣可以控制末端機(jī)械臂的坐標(biāo)可以更方便我們做一些抓取的動(dòng)作。
pymycobot是其中的一種控制方式,比較方便使用。還有一種控制方式是基于ROS框架里邊的MoveIt,它是一個(gè)功能強(qiáng)大大的機(jī)器人運(yùn)動(dòng)規(guī)劃框架,包括路徑規(guī)劃,運(yùn)動(dòng)控制,碰撞檢測(cè),運(yùn)動(dòng)學(xué)計(jì)算等等。下面是一個(gè)在MoveIt當(dāng)中的演示。

Target Detection
vision_opencv - ROS Wiki
此外我們還要對(duì)視覺(jué)進(jìn)行處理,在ROS中,opencv_ros和image_transport是處理圖像數(shù)據(jù)的重要工具和庫(kù),它們?cè)跈C(jī)器人視覺(jué)系統(tǒng)和圖像處理中扮演著關(guān)鍵角色。

實(shí)際上,是使用‘cv_bridge’提供了ROS 和OpenCV之間的接口,cv_bridge允許在ROS消息和OpenCV圖像格式之間進(jìn)行轉(zhuǎn)換,從而可以在ROS框架中使用OpenCV進(jìn)行圖像處理。
在ROS中使用OpenCV時(shí),圖像數(shù)據(jù)通常是作為ROS消息通過(guò)話題發(fā)布和訂閱的,因此需要使用cv_bridge來(lái)轉(zhuǎn)換數(shù)據(jù)格式。下面是一個(gè)簡(jiǎn)單的示例,展示了如何在ROS節(jié)點(diǎn)中訂閱圖像話題,并使用OpenCV對(duì)圖像進(jìn)行處理:
import rospy from sensor_msgs.msg import Image from cv_bridge import CvBridge, CvBridgeError import cv2 def image_callback(msg): try: # Convert ROS image messages to OpenCV image format cv_image = bridge.imgmsg_to_cv2(msg, "bgr8") except CvBridgeError as e: print(e) # Process the image, such as converting it to grayscale gray = cv2.cvtColor(cv_image, cv2.COLOR_BGR2GRAY) # display image cv2.imshow("Image window", gray) cv2.waitKey(3) # Initialize ROS node rospy.init_node('image_listener') # create CvBridge bridge = CvBridge() # Subscribe to image topics image_sub = rospy.Subscriber("/camera/rgb/image_raw", Image, image_callback) # Entering the ROS event loop rospy.spin()
雖然在ROS環(huán)境中使用OpenCV進(jìn)行圖像處理引入了數(shù)據(jù)格式轉(zhuǎn)換和節(jié)點(diǎn)通信的額外步驟,但這種方式也帶來(lái)了更高的模塊化和系統(tǒng)集成的靈活性,使得圖像處理能夠更加方便地與機(jī)器人的其他系統(tǒng)和功能集成。
場(chǎng)景介紹
該項(xiàng)目旨在實(shí)現(xiàn)一個(gè)繼承的自動(dòng)動(dòng)畫(huà)系統(tǒng),其中包括一個(gè)LIMO pro 和 一個(gè)mycobot 280 M5。系統(tǒng)設(shè)計(jì)使得Limo Pro能夠自主導(dǎo)航至指定位置,到達(dá)后,Mycobot 280 M5機(jī)械臂執(zhí)行抓取任務(wù),完成后再返回到起始點(diǎn)或另一個(gè)特定位置。

項(xiàng)目流程
1.啟動(dòng)與初始化:
系統(tǒng)啟動(dòng)時(shí),先進(jìn)行自檢,包括Limo Pro的導(dǎo)航系統(tǒng)和Mycobot 280 M5機(jī)械臂的功能檢查。
2.導(dǎo)航至目標(biāo)點(diǎn):
利用Limo Pro上的SLAM技術(shù)和導(dǎo)航算法,根據(jù)預(yù)設(shè)或動(dòng)態(tài)輸入的坐標(biāo),規(guī)劃一條到達(dá)目標(biāo)點(diǎn)的最優(yōu)路徑。
Limo Pro自主避開(kāi)障礙物,沿著規(guī)劃的路徑移動(dòng)至目標(biāo)點(diǎn)。
3.執(zhí)行抓取任務(wù):
到達(dá)目標(biāo)點(diǎn)后,使用Limo Pro上的傳感器定位目標(biāo)物體。
Mycobot 280 M5機(jī)械臂根據(jù)目標(biāo)物體的位置,執(zhí)行抓取動(dòng)作。這一步驟可能涉及精確的運(yùn)動(dòng)規(guī)劃,確保抓取成功。
4.返回特定位置:
完成抓取任務(wù)后,Limo Pro再次規(guī)劃路徑,返回到起始點(diǎn)或移動(dòng)至另一個(gè)指定的位置,以進(jìn)行物品交付或完成任務(wù)。
總結(jié)
本系列文章被劃分為兩個(gè)部分:首篇文章主要介紹了項(xiàng)目的概念設(shè)計(jì)、系統(tǒng)架構(gòu)以及關(guān)鍵組件的選擇,為讀者提供了一個(gè)全面的項(xiàng)目概覽和技術(shù)背景。接下來(lái)的文章將深入探討項(xiàng)目的技術(shù)細(xì)節(jié),包括軟件架構(gòu)的構(gòu)建、關(guān)鍵技術(shù)的應(yīng)用、系統(tǒng)調(diào)試過(guò)程以及在開(kāi)發(fā)過(guò)程中遇到的挑戰(zhàn)和解決方案。
在下一篇文章中,我們將正式進(jìn)入項(xiàng)目的技術(shù)內(nèi)核,分享實(shí)際的編碼實(shí)踐、調(diào)試技巧以及面對(duì)項(xiàng)目挑戰(zhàn)時(shí)的思考和解決策略。敬請(qǐng)期待下篇文章,我們將一起深入這個(gè)集成自主導(dǎo)航和機(jī)械操作的機(jī)器人項(xiàng)目,探索技術(shù)的深度與廣度。
-
機(jī)器人
+關(guān)注
關(guān)注
213文章
29650瀏覽量
212312 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7130瀏覽量
125343 -
機(jī)械臂
+關(guān)注
關(guān)注
13文章
553瀏覽量
25322 -
ROS
+關(guān)注
關(guān)注
1文章
286瀏覽量
17665 -
大象機(jī)器人
+關(guān)注
關(guān)注
0文章
86瀏覽量
93
發(fā)布評(píng)論請(qǐng)先 登錄
大象機(jī)器人攜手進(jìn)迭時(shí)空推出 RISC-V 全棧開(kāi)源六軸機(jī)械臂產(chǎn)品

大象機(jī)器人攜手進(jìn)迭時(shí)空推出 RISC-V 全棧開(kāi)源六軸機(jī)械臂產(chǎn)品
大象機(jī)器人×進(jìn)迭時(shí)空聯(lián)合發(fā)布全球首款RISC-V全棧開(kāi)源小六軸機(jī)械臂

大象機(jī)器人推出myCobot 280 RDK X5,攜手地瓜機(jī)器人共建智能教育機(jī)

專(zhuān)為機(jī)器人教育而設(shè)計(jì)的創(chuàng)客友好型機(jī)械臂

多功能復(fù)合機(jī)器人設(shè)計(jì)方案

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

【「具身智能機(jī)器人系統(tǒng)」閱讀體驗(yàn)】2.具身智能機(jī)器人大模型
大象機(jī)器人11月大事件回顧
焊接機(jī)器人六個(gè)軸分別是什么作用

大象機(jī)器人10月大事件回顧
工業(yè)機(jī)器人和機(jī)械臂的設(shè)計(jì)、功能和應(yīng)用有哪些區(qū)別?
開(kāi)源六軸協(xié)作機(jī)器人myCobot 320結(jié)合人臉表情識(shí)別情緒!

六軸焊接機(jī)器人多久檢修一次

大象機(jī)器人開(kāi)源協(xié)作機(jī)械臂機(jī)械臂接入GPT4o大模型!

評(píng)論