《ROS機器人編程》第八章_機器人、傳感器、電機
更新!整理出《ROS機器人編程》第八章ppt講義版,請對照書籍P194-231頁學習。
聽課不停學,每周二,周五更新,歡迎追更!

【說明】機器人主要分為硬件和軟件。機械、電機、齒輪、電路和傳感器被歸類為硬件。直接驅動或控制機器人硬件的微控制器級別的固件,以及利用從傳感器獲得的信息進行識別、 制圖、導航和動作規(guī)劃的應用軟件均被分類為軟件。

【說明】ROS屬于應用軟件的范疇,根據功能,ROS的功能包被分類為機器人功能包、專為傳感器的傳感器功能包和專為驅動部的電機功能包。這些功能包由Willow Garage、 ROBOTIS、Yujin Robot和Fetch Robotics等機器人公司提供?;蛘哂蒓pen Robotics (曾經是Opensource Robot Foundation,OSRF)、機器人專業(yè)的大學實驗室和個人開發(fā)者開發(fā)并發(fā)表自己開發(fā)的ROS機器人、傳感器和電機的相關功能包。

【說明】如果要選機器人功能包的代表作,那么絕對是下圖中的PR2和TurtleBot。其中,PR2 是負責ROS開發(fā)的Willow Garage以科研用機器人為目的開發(fā)的移動人形機器人。即使現(xiàn)在,PR2功能包還是具有代表性的機器人功能包,因為其他機器人的核心功能包很多還是 使用PR2功能包的衍生包。
雖然PR2的通用性和性能非常優(yōu)秀,但因為價格過高,無法實現(xiàn)刺激和傳播ROS 的目的,TurtleBot機器人正是由于這個原因而開發(fā)的機器人,旨在普及ROS。第一版 Turtlebot是將基于iRobot公司的掃地機器人Roomba的create作為基礎而開發(fā)的。而 TurtleBot2是將韓國的服務機器人公司Yujin Robot的iCLEBO的改進版KOBUKI作為移動的基礎而開發(fā)的。此外,本書將重點介紹的TurtleBot3是由ROBOTIS、Intel和Open Robotics合作開發(fā)的一款基于Dynamixel舵機的移動機器人。在后續(xù)的第10章里會介紹與TurtleBot有關的機器人功能包的用法,同時會進行對TurtleBot的更詳細的說明。

【說明】除了這兩種有代表性的機器人之外,還有180多種機器人的功能包也已公開,如圖所示。這是以開源形式的ROS功能包公開的機器人數(shù)量,再加上機器人相關的公司、研究所、大學和個人使用的機器人的話數(shù)量會更多。
如果您要使用的機器人功能包是ROS官方功能包,那么安裝方法非常簡單。首先,請檢查您要使用的機器人功能包是否在ROS Wiki(http://robots.ros.org/)上公開可用, 或者您可以使用以下命令在所有ROS功能包列表中找到它。
$?apt-cache search ros-kinetic

【說明】傳感器是與機器人無法分離的。有許多研究從傳感器數(shù)據提供的無數(shù)環(huán)境信息中提取有意義的信息,或利用這些信息認識環(huán)境并傳輸給機器人。這樣的環(huán)境信息有位置、空 間、天氣、聲音、慣性、振動、氣體、電流量、RFID,物體和外力識別等很多種。該信息被用作機器人執(zhí)行實際任務的重要數(shù)據。
在制作機器人時,通過驅動輪或機器人手臂讓機器人移動,且通過智能手機等進行遙控并不意味著開發(fā)完成。如果您在這里停下來,只能說您搭建了一個移動的機器。機器人只有在自己認識到周圍環(huán)境,只提取有意義的信息,并能夠計劃和做出思考和判斷,才能被視為機器人。這就是為什么傳感器很重要。

【說明】問題是,如圖所示,有太多的傳感器可以使用。而在微處理器中以ADC(模擬數(shù)字轉換器)方式接收數(shù)據的傳感器是有限的。其中,LDS、3D傳感器、相機等傳感器有大量需要處理的信息,處理起來需要較高的配置,因此無法用微處理器實現(xiàn),需要用 PC。因此需要驅動程序,還需要如OpenNI和OpenCV的Point Cloud處理,以及圖像處理所需的庫。
ROS提供了可以使用上述傳感器的驅動程序和庫的開發(fā)環(huán)境。目前,還并不是提供所有的傳感器功能包,但傳感器功能包正變得越來越多。而且功能相同但通信方式不同的傳感器們的用法也趨向于統(tǒng)一。傳感器制造商正在積極支持ROS傳感器功能包,這將加速 ROS對未來傳感器的支持。



【說明】相機的接口并不只有USB。某些相機具有可連接到網絡的功能。通常連接到局域網或WiFi,將視頻數(shù) 據以視頻流形式傳輸?shù)骄W絡。這些相機應該被稱為網絡攝像頭。此外,有些攝像機使用FireWire(IEEE 1394接口)進行高速傳輸,主要用于需要高速傳輸圖像的研究目的。FireWire標準在大多數(shù)常見的電路板上無法找到,但它是由蘋果公司開發(fā)的,因此主要用于蘋果產品。

【說明】在本節(jié)中,我們來使用Ken Tossell發(fā)布的uvc-camera7。它是最常用的USB攝像頭功能包。其他相關功能包的用法類似,所以如果您想使用另一個功能包,請檢查本功能包的 wiki頁面。










【說明】LDS傳感器在測量距離時利用激光被物體反射時出現(xiàn)的波長。問題在于這里使用的激光器受控制和價格問題,所以大多數(shù)制造商只使用一個激光源。作為參考,價格高達數(shù)萬美元或更多的Velodyne公司的HDL系列使用的激光器少則16個,多達128個。除此之外大多只使用一個激光器。為了克服這個問題,典型的LDS由一個激光器、一個反射鏡和電機 組成。當使用LDS時,會聽到電機聲音,因為它會旋轉內部的反射鏡,以在水平面內發(fā)射激光。測量范圍通常是從180度到360度,取決于具體產品。


【說明】最近添加到ROS Wiki中的Motors頁面是ROS支持的所有電機和伺服控制器的說明頁面。目前有支持PhidgetMotorControl HC、Roboteq AX2550 Motor Controller和 ROBOTIS Dynamixel的功能包。

【說明】Dynamixel系列是由減速箱、控制器、驅動單元和通信單元組成的模塊,并且可以向主機反饋位置、速度、溫度、負載、電壓和電流等物理量。因為它可以通過總線方法連接和控制,從而可以非常簡單地設計機器人。除了基本的位置控制之外,還可以使用廣泛應 用于機器人的速度控制和轉矩控制(部分系列)。

【說明】因為有這些豐富的功能,Dynamixel被廣泛應用于機器人領域。將Dynamixel應用于機器人的方法有兩種:一種是通過U2D2(將在第13章討論的通信轉換設備)將控制命令從計算機傳送到舵機的方法,還有一種是直接通過OpenCR(將在第9章討論)等嵌 入式控制器來控制舵機的方法。為了在如此多樣的環(huán)境中使用Dynamixel,此舵機支持叫做DynamixelSDK20的開發(fā)環(huán)境。這個開發(fā)環(huán)境支持三種主要的操作系統(tǒng)(Linux、 Windows和MacOS)且支持C、C++、C#、Python、Java、MATLAB和LabVIEW 等多種編程語言。此外還支持Arduino和ROS功能包,因此在ROS中也可以很容易地 使用Dynamixel。支持Dynamixel的典型功能包是dynamixel_motor、arbotix和 dynamixel_workbench21。前兩個是社區(qū)用戶提供的功能包,后者是由ROBOTIS官 方提供的功能包。dynamixel_workbench使用官方DynamixelSDK,通過ROS中的 GUI工具支持電機設置和位置/速度/轉矩控制。本書中將要詳細討論的TurtleBot3也將 Dynamixel作為舵機來使用。有關這些電機的說明,請參見第9章“嵌入式系統(tǒng)”和第10 章“移動機器人”。






歡迎點擊關注京天機器人專營店https://item.jd.com/10055225794502.html#crumb-wrap
原創(chuàng)聲明:本篇文檔為原創(chuàng)文檔。歡迎轉發(fā)轉載,請注明出處。
本書中使用的開源代碼會根據讀者使用的時間,可能會有版本變化,因此在運行時可能會有相異的結果。
本次文稿編輯在原版上增加了開源軟件列表,開源硬件列表,開源資源以及相關社區(qū)等鏈接,希望大家在學習ppt的同時可以參考原版書籍配合電腦實戰(zhàn),會更有幫助。
微信搜一搜:京天機器人。獲取更多章節(jié)ppt講義