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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

ROS的運用開發(fā)詳解

麥辣雞腿堡 ? 來源:CSDN博客 ? 作者:lwlv ? 2023-11-21 18:17 ? 次閱讀

ROS的運用開發(fā)

一般來說市面上機器人的開發(fā)分兩個主流,一個是移動機器人(AGV),主要運用場景是酒店送餐,餐廳導航+送餐,倉庫物流,銀行業(yè)務處理等;一種是協(xié)作機器人,六自由度,用于抓取、焊接等。

當然還有這兩種的結合形成可搬運加抓取的復合機器人,一些小的方向還有人形機器人、無人機等。

以開發(fā)AGV為例 ,對于AGV來說尤其是室內(nèi)運用的場景,最重要的就是地圖構建和導航,也就是SLAM技術。

這里面主要涉及三大塊:

1、建圖,比如gmapping,hector_slam,cartographer這幾個算法,通過采集點云數(shù)據(jù)進行地圖構建。這里的點云數(shù)據(jù)一般是一個特定平面的,如何sick tim571、倍加福R2000、鐳神這些傳感器都能實現(xiàn)該功能,并提供好了對應的ROS包,或者通過kinect、realsense三維傳感器將其轉(zhuǎn)換為二維的數(shù)據(jù)。不管是哪種傳感器,不同于接口

激光雷達一般是網(wǎng)口形式,和運行的Ubuntu電腦組成一個局域網(wǎng),而三維點云一般是通過USB或者串口通信使ROS獲取到數(shù)據(jù)。

所以使用ROS的這點好處就在于,不用太關注于硬件接口甚至物理接口的定義。

對于ROS使用建圖包,我在《ROS中slam_gmapping、map_server源碼解讀及其librviz的使用》中有詳細說明。

2、定位, 常用的是AMCL算法,也就是針對上述建圖得到的機器人當前在地圖中的位置坐標信息,因為是二維地圖,得到的數(shù)據(jù)是x,y坐標和方向角。

AMCL包一般和導航的包是合在一起的。這里單獨列出來是為了說明還有其他定位方式,比如光反射導航定位、超聲波導航定位、wifi定位等,有篇總結比較好的博客《自主移動機器人常用的導航定位技術及原理》可以參見一下。

3、導航和路徑規(guī)劃,也就是move_base包,里面還包含局部路徑規(guī)劃,全局路徑規(guī)劃,dwa路徑搜索和costmap_2d。關于這些包之間的調(diào)用,網(wǎng)上有太多這樣的圖,我就沒必要再貼一遍了。

costmap是David V. Lu提出的算法,即代價地圖,其核心思想是對所建立的地圖包括機器人本身都要進行一定的膨脹,也就是預留一定空間要考慮機器人的體積大小,不然行駛時,尤其是轉(zhuǎn)彎,機器人會碰撞到障礙物。

關于costmap的應用,尤其是添加自己想要的layer,賀一家博士有很好的實踐,參見《ROS 教程之 navigation :在 catkin 環(huán)境下創(chuàng)建costmap layer plugin》。

有了上述這幾個包,機器人就能跑起來了嗎?答案肯定是否定的,不過至少這些包可以在Gazebo和rviz中仿真了,看起來效果還是挺不錯的。

不過仿真和實際差別還是太大了,比如真實環(huán)境中激光雷達采集到的數(shù)據(jù),真實環(huán)境中所建立的地圖等。 此外,搭建一個小型的機器人系統(tǒng)從硬件選型到調(diào)試成功也會經(jīng)歷一段非常痛苦的過程 。

為了快速上手或者驗證,可以從一些現(xiàn)成的機器人入手,比如TurtleBot。不過這些更多適用于實驗室研究,比如算法的驗證等。對于真正的開發(fā)機器人產(chǎn)品,也具有一定的參考價值。

一般而言,AGV的系統(tǒng)架構圖如下:

圖片

可以看到主要核心控制是運行在Ubuntu的工業(yè)級電腦上,激光雷達基本是現(xiàn)成的模塊,語音系統(tǒng)一般是選配的模塊,這種模塊也挺多,比如科大訊飛等,根據(jù)項目需求來。

同等重要的還有傳感器采集模塊,也就是ARM層或PLC層,這一層主要用于采集外圍的數(shù)據(jù)包括電機驅(qū)動并上傳數(shù)據(jù)給ROS層,所以這個工作量也非常大,涉及到的通信協(xié)議也比較多,就相當于一個智能節(jié)點。

至關重要的就是ARM層和PC之間的通信,無論是傳輸速率還是協(xié)議的穩(wěn)定性都有待大量的驗證,曾經(jīng)因為通信協(xié)議的問題導致的粘包也是相當難定位的。

所以盡量不要采用自有協(xié)議,用穩(wěn)定的modbus 232,CANopen總線等是比較好的選擇。關于和硬件通信方面的問題,引用一個老外的話,我覺得遵循這個原則是比較穩(wěn)定的,尤其是在加載硬件初始化的過程中。

其次,AGV一般是兩輪或者四輪的結構,驅(qū)動器和電機的選擇也是非常重要的,不然里程計導致的累計誤差會影響建圖和定位精度。

現(xiàn)在有專門只做AGV控制器公司,也就是圖片中的ROS層和ARM層這一塊(注:就不一定是采用的ROS框架了),控制器本身就預留有IO,還能適配某些485協(xié)議和控制某些型號的電機驅(qū)動器,這些模塊直接插上去就可以用。

此外,對外還提供了各種各樣的接口(TCP server,web,modbus master等)用于二次開發(fā)。于是客戶更側重于應用層,也就是HMI這一塊,比如手機端應用,web端顯示,PC端的軟件等,這種二次開發(fā)一般采用C/S或者B/S的架構。

我看到一個比較好的AGV調(diào)試人機交互界面例子是Ros_Qt5_Gui_App(在GitHub上搜ros qt gui就排在我前面一位)。

最后就是結構問題,我不知道是不是因為騰訊、阿里巴巴、網(wǎng)易、字節(jié)跳動等這些互聯(lián)網(wǎng)巨頭公司的影響,我們越來越看重軟件的開發(fā),也就是ROS層和嵌入式層的開發(fā)。

其實對于制造業(yè)產(chǎn)品,工業(yè)設計和結構設計非常重要,軟件設計再好,結構沒設計到位哪怕是一點尺寸的偏差都會導致機器運行不穩(wěn)定。在ROS中urdf模型文件的定義也跟設計的結構有關(尺寸、位置等)。

另外,結構設計需要考慮是否容易安裝、維護、部件的更換、AGV平衡性、精度、美觀等等,也不是一件容易的事。

關于開發(fā)的調(diào)試,ROS上手容易但調(diào)試難,一是缺少單步調(diào)試,我目前看到的方法是使用GDB調(diào)試器,不過感覺還是挺麻煩的,用得人不太多,更多的bug調(diào)試還是通過日志查看的。

二由于ROS中設計的各種通信接口,串口調(diào)試工具,TCPView,wireshark,CAN analyzer等都是常用的工具。三是window和linux下相互間遠程,相互間傳文件等,從中可以學到不少東西。

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

    關注

    210

    文章

    27839

    瀏覽量

    204594
  • 移動機器人
    +關注

    關注

    2

    文章

    753

    瀏覽量

    33479
  • ROS
    ROS
    +關注

    關注

    1

    文章

    276

    瀏覽量

    16884
收藏 人收藏

    評論

    相關推薦

    系統(tǒng)鏡像Ubuntu_ROS2中ROS2是什么意思,帶有ROS2開發(fā)環(huán)境嗎?

    請問一下,百度文庫資料里面,下圖所示的系統(tǒng)鏡像Ubuntu_ROS2中ROS2是什么意思,帶有ROS2開發(fā)環(huán)境嗎?與前面4GB版本的鏡像有什么區(qū)別?
    發(fā)表于 03-01 23:06

    ROS讓機器人開發(fā)更便捷,基于RK3568J+Debian系統(tǒng)發(fā)布!

    ROS系統(tǒng)主要特點有哪些 (1) 提供豐富的機器人算法庫 機器人的各種控制以及通信離不開算法庫的支持,ROS系統(tǒng)提供豐富且功能強大的機器人算法庫,如坐標變換、運動控制等。機器人開發(fā)者可根據(jù)
    發(fā)表于 07-09 11:38

    什么是ROS?如何學習ROS?

    什么是ROS?如何學習ROS
    發(fā)表于 11-11 07:21

    什么是ROS?ROS產(chǎn)生、發(fā)展和壯大的原因和意義

    機器人操作系統(tǒng)(ROS)入門(嵌入式系統(tǒng)應用開發(fā))一、ROS 基本問題1. 什么是 ROS2. ROS 產(chǎn)生、發(fā)展和壯大的原因和意義二、安裝
    發(fā)表于 12-17 06:08

    分享一份RK3308開發(fā)ROS使用手冊指南

    1、ROS使用指南ROS ( Robot Operating System, 機器人操作系統(tǒng)) ,提供一系列程序庫和工具以幫助軟件開發(fā)者創(chuàng)建機器人應用軟件。它提供了硬件抽象、設備驅(qū)動、函數(shù)庫、可視化
    發(fā)表于 08-16 18:04

    基于FreeRTOS的micro(微型)ROS

    。 一、關于ROS ROS:Robot Operating System,,即機器人操作系統(tǒng)。 和普通OS不一樣的是,ROS主要是針對機器人,是基于操作系統(tǒng)之上,提供一系列程序庫和工具以幫助軟件
    的頭像 發(fā)表于 09-25 14:16 ?2212次閱讀
    基于FreeRTOS的micro(微型)<b class='flag-5'>ROS</b>

    面向ROS開發(fā)者的NVIDIA AI Perception

    NVIDIA這一最新宣布,向ROS開發(fā)者社區(qū)提供整套感知技術。
    發(fā)表于 09-29 10:36 ?2047次閱讀
    面向<b class='flag-5'>ROS</b><b class='flag-5'>開發(fā)</b>者的NVIDIA AI Perception

    深度解析開源無人機ROS開發(fā)方案

    rospy 是 ROS 的純 Python 客戶端庫。rospy 客戶端 API 使 Python 程序員能夠快速與 ROS主題、服務和參數(shù)交互。rospy 的設計有利于實現(xiàn)速度(即開發(fā)人員時間)而不是運行時性能,以便算法可以在
    發(fā)表于 07-08 17:02 ?2552次閱讀

    AV開發(fā)人員所采用的ROS框架簡介

    的新汽車功能。 ROS 已經(jīng)存在了十多年,并且越來越多地被自動駕駛汽車 (AV) 開發(fā)人員使用。Apex.AI 極大地改進了汽車應用的 ROS。 我總結了 ROS 的重要性,然后介紹了
    的頭像 發(fā)表于 07-18 15:59 ?1526次閱讀
    AV<b class='flag-5'>開發(fā)</b>人員所采用的<b class='flag-5'>ROS</b>框架簡介

    ROS部署PaddlePaddle的CV模型

    paddle_inference_ros_demo功能包是基于paddle_inference_ros開發(fā)的,幫助開發(fā)者快速體驗paddle_inference在
    的頭像 發(fā)表于 10-20 17:02 ?589次閱讀
    <b class='flag-5'>ROS</b>部署PaddlePaddle的CV模型

    ROS核心框架介紹

    ROS核心框架 對于第一個問題,我也沒仔細研究過源碼,核心代碼基本由python和C++組成,運用了xmlrpc機制,每個運行的節(jié)點可以理解成一個進程。進程間通訊有些是共享內(nèi)存的方式(比如
    的頭像 發(fā)表于 11-21 18:07 ?818次閱讀
    <b class='flag-5'>ROS</b>核心框架介紹

    ROS的擴展有哪些方法

    ROS的擴展 ROS除了本身框架性的東西以外,最大的特色就是能融合很多其他的東西,形成一個機器人開發(fā)生態(tài)圈,難怪ROS名為機器人操作系統(tǒng),使命是powering the world‘s
    的頭像 發(fā)表于 11-21 18:12 ?582次閱讀

    ros的基本概念是什么

    基本概念: ROS是一個用于在不同進程間匿名的發(fā)布、訂閱、傳遞信息的中間件。 ROS2系統(tǒng)的核心部分是ROS網(wǎng)絡(ROS Graph)。 ROS
    的頭像 發(fā)表于 11-27 11:21 ?1570次閱讀

    移動機器人與ROS操作系統(tǒng)原理與應用

    ROS1不同的是,ROS2誕生的目的就是為了讓更多機器人使用,所以在設計上更加符合技術的發(fā)展方向,也運用了很多最近的技術框架。
    發(fā)表于 01-02 12:28 ?432次閱讀
    移動機器人與<b class='flag-5'>ROS</b>操作系統(tǒng)原理與應用

    ROS系統(tǒng)的智能車開發(fā)-基于米爾芯馳MYD-JD9X開發(fā)

    本篇測評由電子工程世界的優(yōu)秀測評者“mameng”提供。本文將介紹基于米爾電子MYD-JD9X開發(fā)板的ROS系統(tǒng)智能車開發(fā)。目前實現(xiàn)ROS的方式主要有兩種:Ubuntu系統(tǒng)+
    的頭像 發(fā)表于 01-26 08:01 ?709次閱讀
    <b class='flag-5'>ROS</b>系統(tǒng)的智能車<b class='flag-5'>開發(fā)</b>-基于米爾芯馳MYD-JD9X<b class='flag-5'>開發(fā)</b>板