ROS 開發環境簡介

2021-08-24 20:45:52 字數 3406 閱讀 1511

首先考慮幾個問題?

做實驗的時候,如果想要把影象資料和處理之後的影象的資料儲存下來,怎麼辦?你馬上想到可以這樣

imwrite("xx",xx);
可是這樣,會加重影象讀取執行緒的負擔。另外 如果同時想記錄感測器的資料,gps的資料怎麼辦,你馬上想到可以這樣

ofstream fps("xx.txt")
又如果想要同時記錄他們的採集的時間呢?這個怎麼辦呢?又如果想要從機械人上實時傳輸影象到pc上要檢視,怎麼辦?你會想到幾種方法。

- socket(tcp/ip)

- remote desktop+ screen recorder

這樣感覺還挺麻煩的有沒有簡單一點的方法,或者說有沒有一種好用的tool幫我們完成這樣一件事。這裡我們介紹機械人中應用十分廣泛的一種開發工具-ros。

rich driver packages of robots.(cameras, linda, sensors)

support many robots.(dji, pr2, turtle bot…)

open source

那麼ros是什麼,為什麼他明明只是乙個linux中軟體,卻叫做os。

我們說乙個簡單的作業系統,比如ucos,不考慮檔案系統和驅動等等,那麼他只有一組執行緒(程序)管理的**,其實最早linux發布的時候也只是乙個kernel,主要的功能還是程序管理、記憶體管理。

ros node

ros的核心其實程序管理的工具(只不多底層的api是直接呼叫linux的函式而不是自己做的),因為每個程序在ros中是乙個節點,我們可以很直觀的看到程序之間的通訊(msg,service),所以理解ros node就知道為什麼ros中具備的其他的功能,因為大部分功能都是圍繞這個ros node來的。我們寫出來的**在ros中回編譯成乙個個節點,執行的時候也是以節點的形式出現。

那麼從這個角度上,ros把自己叫做乙個作業系統還是沒有問題的。

ros的位置

gui三維視覺化

developer』s code

slam/vo

ros/opencv/cuda

g2o/eigen/sophus

linux/cmake/gcc

linux/cmake/gcc

driver/hardware

driver/camera/imu

install

ubuntu

software

ubuntu能夠廣泛流行的很大原因,就是因為apt系統,裝軟體十分方便(apt-get install 對比windows就知道了),然後呢ros對於apt的支援也是相當的好,各種package(無論是驅動,視覺化包,演算法包)都可以做到直接apt-get。

sudo apt-get install ***
ros

sudo apt-get install ros-indigo-desktop
推薦使用indigo版本的,因為這個是比較穩定的版本,支援的各種包最豐富,用的最廣泛。詳細的安裝方法見

wiki 其他

再看開頭那幾個問題

1. 做實驗的時候,如果想要把影象資料和處理之後的影象的資料儲存下來,怎麼辦?

2. 如果同時想記錄感測器的資料,gps的資料怎麼辦,

3. 如果想要同時記錄他們的採集的時間呢?

這些問題都可以使用乙個rosbag的工具搞定,rosbag記錄了所有發布的訊息,以及訊息對應的time stamp。

rosbag record -a
如果想要從機械人上實時傳輸影象到pc上要檢視,怎麼辦?

rosmsg publish /image
直接發布訊息就行,是不是很神奇,因為ros可以實現多個機械人執行同乙個ros core,這樣呢,我們在robot上看到的或者自己發布各種廣播,在pc上一樣可以看到(這個原理上就是ros對ssh的封裝)。使用roslauch可以同時啟動多個機械人的多個**。比方說,一邊是飛機,一邊是pc,飛機上跑的**是定位導航、飛機控制的**,pc上跑的**是視覺化影象,路徑規劃、全域性地圖等等,使用乙個launch檔案可以搞定他們的啟動。

why cmake && catkin

在乙個大的專案中,有很多原始檔和標頭檔案,需要對他們分別編譯,然後可能鏈結到一些庫檔案,這時候gcc的指令會變得很長,寫起來太麻煩。因此人們使用乙個makefile檔案來專門指定這些東西是怎麼編譯鏈結的。但是直接使用makefile檔案,這裡邊的語法規則還是有點複雜,所以在makefile之上,人們又做了乙個自動生成的工具叫做cmake,cmake程式執行的時候,讀入乙個cmakelist.txt檔案,之後會生成makefile檔案,然後編譯鏈結,構建整個專案。因此一般的順序是執行

1. cmake

2. make

好吧,先這樣舉個例子吧,寫**像做菜,可以煮,然後還可以烤,蒸等等。

那麼一定會用一些工具,有些比較全套的廚房什麼都有,就像飯店的廚房,從原材料,到各種調料,各種鍋都是齊全的,而且自動化程度很高,基本上有了原材料,按一下按鈕,等著菜自己做好。還有乙個不太完整,就像寢室裡只有乙個電鍋,自己還得配一下別的東西鍋碗,買點菜,買點醬油啊等等。他們用的原料是一樣的,都能做出飯來,不過用的工具不一樣。

visual studio。這個軟體包含了整個構建系統,注意構建這詞表示從源**一直編譯到可以執行的程式,也就是從生公尺到熟飯的過程。乙個典型的c++構建系統必然包含乙個c++的編譯器 聯結器,這些是必須的。還有乙個除錯用比如偵錯程式,工程管理的,還有就是便於**開發的工具,他本質上是乙個編輯器,就是能夠把**敲到檔案裡邊去。

上邊是vs的情況,那麼在linux中,也有這樣的乙個開發環境,當然用的更多的不是這樣的開發環境,而是用了一系列小工具完成整個構建鏈條。這其中包括編譯器g++、gcc,聯結器link,偵錯程式gdb,工程管理cmake,makefile。零零碎碎各種東西加在一起可以完成vs的功能。

好吧說到這裡,乾脆多說一些,了解就行。

linux中流行的的自動化工程管理工具有兩種,一種就是鼎鼎大名的cmake,它支援了大部分流行開源**,寫起來語法非常簡單,這就是為什麼我們會用他。流行常用的**如opencv,eigen,caffe。他是ros的構建工具中一環,使用ros一定要學會使用cmake,各種slam**都是使用cmake編譯的,slam**一般是c++實現的。

另外乙個是autoconfig系統,這個系統相對cmake來說,就麻煩了一些,是比較老的工具了,逐漸被淘汰。

catkin是使用最廣泛的ros package管理工具,它的好處不多說了,誰用誰知道。

some books

ros by example

learning ros for robotics programming

機械人作業系統(ros)**

cmake 實踐

鳥哥的 linux 私房菜

ubuntu安裝Ros開發環境

選擇melodic morenia may 2018 may 2023 版本ros 軟體中心配置如下,確保可以更新到資源 新增ros軟體源 sudo sh c echo deb lsb release sc main etc apt sources.list.d ros latest.list 新增...

python開發環境配置簡介

工欲善其事,必先利其器 常用的python執行器安裝方法有兩種,一種是python標準安裝方式,一種是通過anaconda安裝 包含了各種機器學習庫,極大方便了使用 在官網document裡能看到教程,python的c介面和嵌入介面,還有python標準庫 不包含第三方庫 等 在這裡插入描述 lin...

利用Eclipse整合開發環境進行ROS開發

可以利用eclipse整合開發環境進行ros開發,從而提高研發效率。以色列巴爾伊蘭大學的mr.roi yehoshua開設了一門ros課程,課程2 lesson 2 講解了如何利用eclipse在ros上進行開發。這裡走下總結整理。安裝步驟如下 1.安裝eclipse sudo apt get in...