【自己動(dòng)手做一臺(tái)SLAM導(dǎo)航機(jī)器人】第五章:樹莓派3開發(fā)環(huán)境搭建

本專欄目錄
第五章:樹莓派3開發(fā)環(huán)境搭建
第六章:SLAM建圖與自主避障導(dǎo)航
第七章:語音交互與自然語言處理
附錄A:用于ROS機(jī)器人交互的Android手機(jī)APP開發(fā)
附錄B:用于ROS機(jī)器人管理調(diào)度的后臺(tái)服務(wù)器搭建
附錄C:如何選擇ROS機(jī)器人平臺(tái)進(jìn)行SLAM導(dǎo)航入門
視頻教程
https://www.bilibili.com/video/BV1jS4y1a7Lz
通過前面一系列的鋪墊,相信大家對(duì)整個(gè)miiboo機(jī)器人的DIY有了一個(gè)清晰整體的認(rèn)識(shí)。接下來就正式進(jìn)入機(jī)器人大腦(嵌入式主板:樹莓派3)的開發(fā)。本章將從樹莓派3的開發(fā)環(huán)境搭建入手,為后續(xù)ros開發(fā)、slam導(dǎo)航及語音交互算法做準(zhǔn)備。本章內(nèi)容:
1.安裝系統(tǒng)ubuntu_mate_16.04
2.安裝ros-kinetic
3.裝機(jī)后一些實(shí)用軟件安裝和系統(tǒng)設(shè)置
4.PC端與robot端ROS網(wǎng)絡(luò)通信
5.Android手機(jī)端與robot端ROS網(wǎng)絡(luò)通信
6.樹莓派USB與tty串口號(hào)綁定
7.開機(jī)自啟動(dòng)ROS節(jié)點(diǎn)

下面這本書是本篇文章的參考文獻(xiàn),大家有需要可以入手一本:


1.安裝系統(tǒng)ubuntu_mate_16.04
安裝前先準(zhǔn)備好需要用到的材料,在樹莓派3上安裝ubuntu_mate_16.04需要用到的工具和材料,如圖1。

1.1.格式化microSD卡
在向microSD卡燒入系統(tǒng)之前,需要先格式化好microSD卡。我這里使用DiskGenius工具將卡格式化為FAT32文件系統(tǒng)。DiskGenius下載地址:
http://www.diskgenius.cn/download.php
1.2.下載ubuntu-mate-16.04系統(tǒng)鏡像
直接前往ubuntu-mate的官網(wǎng)https://ubuntu-mate.org/download/。選擇如圖2所示的版本進(jìn)行下載就行了。

1.3.系統(tǒng)燒錄
將下載好的系統(tǒng)鏡像文件ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img.xz解壓得到ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img,該文件應(yīng)存放在英文路徑下。然后用Win32 Disk Imager工具將ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img燒錄到microSD卡,Win32 Disk Imager工具下載地址https://win32-disk-imager.en.lo4d.com/download。燒錄過程很簡單,打開Win32 Disk Imager工具,在[映像文件]欄中填入待燒錄的鏡像文件路徑,在[設(shè)備]欄中填入要燒錄的microSD卡,最后點(diǎn)擊[寫入]等待燒錄進(jìn)度完成就行了,如圖3。

1.4.上電開機(jī)
給樹莓派3主板連接上HDMI顯示器、鼠標(biāo)、鍵盤,并插入剛剛燒錄好系統(tǒng)的microSD卡,就可以上電了,如圖4。

第一次開機(jī),系統(tǒng)需要用戶填寫一些必要的設(shè)置項(xiàng),首先是系統(tǒng)語言設(shè)置,選擇默認(rèn)的語言English就行了,如圖5。

然后是wifi連接設(shè)置,這里選擇先不聯(lián)網(wǎng),這樣系統(tǒng)配置速度會(huì)快很多,等后面我們再進(jìn)行聯(lián)網(wǎng),如圖6。

然后是時(shí)區(qū)設(shè)置,我們在中國,說以用鼠標(biāo)點(diǎn)擊地圖中的中國區(qū)域,會(huì)自動(dòng)鎖定到Shanghai時(shí)區(qū),如圖7。

然后是鍵盤設(shè)置,直接默認(rèn)就行了,如圖8。

然后是用戶名和密碼設(shè)置,為了方便記憶,我將用戶名和密碼都設(shè)置成了ubuntu;這里需要特別注意,由于我們的系統(tǒng)用于機(jī)器人的開發(fā),為了讓機(jī)器人上電就能自動(dòng)進(jìn)入系統(tǒng),我們需要勾選[Log in automatically]選項(xiàng),也就是讓系統(tǒng)開機(jī)自動(dòng)登錄。如圖9。

然后就進(jìn)入系統(tǒng)配置過程了,耐心等待配置進(jìn)度條完成,如圖10。

耐心等待,所有配置完成后,系統(tǒng)會(huì)自動(dòng)重啟一次,重啟完成后,就可以看到ubuntu-mate-16.04系統(tǒng)的真容了,如圖11。如果我們不想每次開機(jī)都看到這個(gè)歡迎界面,可以去掉勾選框中的勾,關(guān)閉就行了,下次就不會(huì)出現(xiàn)了。

最后,就可以見到ubuntu-mate-16.04系統(tǒng)的真容了,如圖12,到這里系統(tǒng)安裝就成功了。

2.安裝ros-kinetic
安裝好系統(tǒng)ubuntu-mate-16.04后,就可以安裝對(duì)于我們機(jī)器人開發(fā)非常重要的ROS系統(tǒng)了,根據(jù)ubuntu的版本與ROS行版本之間的對(duì)于關(guān)系,這里我們安裝ros-kinetic這個(gè)發(fā)行版。
2.1.連接wifi網(wǎng)絡(luò)
由于安裝需要通過網(wǎng)絡(luò)在線進(jìn)行,所以需要先連接上wifi,在桌面右上角找到wifi樣式的圖標(biāo),在下拉欄中選擇[Edit Connections…],如圖13。

在彈出來的窗口中,點(diǎn)擊[Add]來添加我們的網(wǎng)絡(luò)連接,并選擇[Wi-Fi]連接類型,最后點(diǎn)擊[Create…]來創(chuàng)建,如圖14。

在網(wǎng)絡(luò)連接的配置窗口中,首先設(shè)置[General]參數(shù),為了讓系統(tǒng)開機(jī)自啟動(dòng)后能自動(dòng)連接該網(wǎng)絡(luò),勾選前兩項(xiàng),如圖15。

然后設(shè)置[Wi-Fi]參數(shù),SSID欄填入自己家wifi的名字(我家的wifi名字叫error),Mode欄選擇Client,Device欄下拉填入自己的無線網(wǎng)卡號(hào),如圖16。

然后設(shè)置[Wi-Fi Security]參數(shù),Security欄填入自己家wifi的加密方式(一般的加密方式都是WPA&WPA2 Personal),Password欄填入wifi的連接密碼,最后點(diǎn)擊[save]保存設(shè)置好的參數(shù),如圖17。

最后找到[Enable Networking]選項(xiàng),去掉選項(xiàng)前面的勾,然后再勾上,讓網(wǎng)絡(luò)配置生效;稍等片刻,我們配置的wifi連接error將自動(dòng)連接上,這樣就連接網(wǎng)絡(luò)完成了,如圖18。

為了讓機(jī)器人啟動(dòng)后,我們能通過網(wǎng)絡(luò)遠(yuǎn)程訪問,這里建議大家在樹莓派上設(shè)置成靜態(tài)IP分配,首先打開命令行終端用ifconfig查看一下當(dāng)前分配給樹莓派的IP地址,將這個(gè)IP地址綁定成靜態(tài)IP,這樣可以保證該IP不會(huì)與其他設(shè)備發(fā)生IP沖突,如圖19。

然后,對(duì)上面創(chuàng)建的網(wǎng)絡(luò)連接的[IPv4 Settings]參數(shù)進(jìn)行設(shè)置,Method欄選擇Manual,Addresses欄填入靜態(tài)IP參數(shù)(靜態(tài)IP設(shè)為192.168.0.117,子網(wǎng)掩碼設(shè)為255.255.255.0,網(wǎng)關(guān)設(shè)為192.168.0.1),DNS servers欄填入192.168.0.1,最后保存就行了,只需要重啟網(wǎng)絡(luò)靜態(tài)IP就設(shè)好了,如圖20。

2.2.安裝ros-kinetic
其實(shí)在ubuntu上安裝ROS,有很詳細(xì)的ROS官方教程,感興趣的朋友可以直接參考官方教程http://wiki.ros.org/kinetic/Installation/Ubuntu。由于官方教程用英文書寫,為了方便大家閱讀,我將官方教程翻譯過來,方便大家學(xué)習(xí),下面正式進(jìn)入安裝。溫馨提醒,由于不同的編輯器對(duì)過長的句子換行的規(guī)則不同,下面的命令被自動(dòng)換行后可能影響正常的閱讀,請(qǐng)直接參閱官方教程中的命令http://wiki.ros.org/kinetic/Installation/Ubuntu。
(1)設(shè)置ubuntu的sources.list
打開命令行終端,輸入如下命令:
(2)設(shè)置keys
打開命令行終端,輸入如下命令:
(3)安裝ros-kinetic-desktop-full完整版
打開命令行終端,分別輸入如下兩條命令:
小技巧,如果安裝過程提示“下載錯(cuò)誤”,請(qǐng)耐心重試上面的兩條命令,這個(gè)錯(cuò)誤多半是由于網(wǎng)絡(luò)故障造成的。
(4)初始化rosdep
打開命令行終端,分別輸入如下兩條命令:
(5)配置環(huán)境變量
打開命令行終端,分別輸入如下兩條命令:
(6)安裝rosinstall
打開命令行終端,輸入如下命令:
(7)測試ros安裝成功與否
打開命令行終端,輸入如下命令:
如果此時(shí)出現(xiàn)以下內(nèi)容
那么恭喜你,ROS已經(jīng)成功的安裝上了?。?!
3.裝機(jī)后一些實(shí)用軟件安裝和系統(tǒng)設(shè)置
雖然我們順利安裝了ubuntu-mate-16.04系統(tǒng),并且在系統(tǒng)上裝好了ROS-kinetic發(fā)行版,為了后面跟高效和便捷的開發(fā),這里將進(jìn)行一些非常實(shí)用軟件的安裝和系統(tǒng)設(shè)置。
3.1.開機(jī)自動(dòng)登錄
裝完系統(tǒng)后第一次開機(jī),會(huì)要求設(shè)置用戶名和密碼,這里應(yīng)該設(shè)置用戶開機(jī)自動(dòng)登錄,只有登錄后樹莓派3才能自動(dòng)連接到無線網(wǎng)絡(luò),從而才能遠(yuǎn)程控制。如果裝機(jī)時(shí)已經(jīng)設(shè)置了,請(qǐng)直接跳過這一部分;如果你搞忘記或遺漏了,沒有設(shè)置開機(jī)自動(dòng)登錄,也不要緊,用下面的的方法進(jìn)行自動(dòng)登錄設(shè)置。
打開文件/usr/share/lightdm/lightdm.conf.d/60-lightdm-gtk-greet.conf,在[seat:*]節(jié)點(diǎn)下修改或添加以下代碼
3.2.超級(jí)用戶root密碼設(shè)置
裝完ubuntu-mate-16.04系統(tǒng)后,root用戶默認(rèn)是沒有密碼的;用普通用戶ubuntu的sudo權(quán)限去設(shè)置root用戶的密碼。
反正我們是用于學(xué)習(xí),出于方便記憶的考慮,所以和之前設(shè)置ubuntu的用戶名和密碼一樣,這里設(shè)置root的用戶名和密碼也一樣,也就是root用戶的密碼也是root。
root密碼設(shè)置成功后,su?root登錄進(jìn)去驗(yàn)證一下,如果能登錄就設(shè)置成功了。
3.3.擴(kuò)展SWAP空間
由于后續(xù)在樹莓派3上需要編譯一些大型的程序和運(yùn)行復(fù)雜的SLAM算法,默認(rèn)的物理內(nèi)存1GB是不夠用的,常常造成卡機(jī)死機(jī)等現(xiàn)象,這里需要添加SWAP擴(kuò)展空間,其實(shí)就是當(dāng)系統(tǒng)內(nèi)存不足時(shí)會(huì)用硬盤上SWAP分區(qū)作為虛擬內(nèi)存。
由于我的microSD卡是32GB的,所以可以多分配一些給SWAP,所以分配4GB給SWAP空間。具體步驟:
3.4.連接wifi網(wǎng)絡(luò)
為了讓機(jī)器人啟動(dòng)后,我們能通過網(wǎng)絡(luò)遠(yuǎn)程訪問,需要給機(jī)器人配置好網(wǎng)絡(luò)連接,并分配靜態(tài)IP,讓機(jī)器人開機(jī)后就能自動(dòng)連接wifi。關(guān)于設(shè)置的內(nèi)容已經(jīng)在上面安裝ros-kinetic
詳細(xì)介紹了,有需要的直接前去翻閱就行。
3.5.安裝chromium瀏覽器
前一段時(shí)間,在ubuntu-mate-16.04上安裝ROS后,ubuntu-mate-16.04系統(tǒng)自帶的Firefox瀏覽器不能用了,F(xiàn)irefox最近對(duì)這個(gè)故障進(jìn)行了修復(fù)。不過為了保險(xiǎn)起見,還是推薦安裝谷歌為linux系統(tǒng)推出的瀏覽器chromium,跟我們平時(shí)用的聞名于世的chrome瀏覽器是差不多的。安裝很簡單,就一條命令。
3.6.安裝vim、ssh工具
vim是Linux中一款很經(jīng)典的代碼文本編輯器,不論是本地還是遠(yuǎn)程編輯文本都很強(qiáng)大;ssh功能很強(qiáng)大,不緊可以提供用戶遠(yuǎn)程登錄控制系統(tǒng)和編輯文件,還提供命令終端下的scp遠(yuǎn)程文件傳輸。安裝很簡單,幾條命令就搞定。
3.7.通過ssh遠(yuǎn)程登錄到機(jī)器人
樹莓派3主板是安裝在miiboo機(jī)器人上的,由于機(jī)器人要在地上自由移動(dòng),給機(jī)器人上的樹莓派配一個(gè)HDMI顯示器和鼠標(biāo)鍵盤用于程序調(diào)試顯然是不方便的。一個(gè)很好的方法是,工作端PC和機(jī)器人連接到同一個(gè)路由器完成局域網(wǎng)組網(wǎng),然后在PC端用ssh遠(yuǎn)程登錄到機(jī)器人,這樣就可以在工作PC端對(duì)機(jī)器人上的程序和文件進(jìn)行調(diào)試開發(fā)了。
ssh遠(yuǎn)程登錄方法:
一旦PC端打開的終端窗口ssh遠(yuǎn)程登錄機(jī)器人后,就可以在該終端下像在機(jī)器人上使用終端一樣進(jìn)行操作了。PC端可以打開多個(gè)終端窗口ssh遠(yuǎn)程登錄機(jī)器人,這樣在不同的終端下可以開啟機(jī)器人上不同的程序。
3.8.在工作PC端遠(yuǎn)程編輯機(jī)器人上的文件
已經(jīng)介紹了通過ssh遠(yuǎn)程登錄機(jī)器人的方法,其實(shí)可以直接在登入的終端下用vim對(duì)機(jī)器人上的文件進(jìn)行查看編輯。但是,如果需要同時(shí)編輯多個(gè)文件,或?qū)σ粋€(gè)軟件項(xiàng)目源碼進(jìn)行編輯,vim就不方便了。
這里推薦在PC端安裝IDE開發(fā)工具(比較推薦atom,不過sublime text也不錯(cuò),根據(jù)個(gè)人喜好選擇吧),然后將機(jī)器人上的系統(tǒng)文件夾遠(yuǎn)程掛載在PC端系統(tǒng),這樣就可以在PC端上用IDE開發(fā)工具直接對(duì)遠(yuǎn)程掛載過來的文件及文件夾進(jìn)行編輯了。
在PC端安裝IDE開發(fā)工具atom很簡單,直接在ubuntu軟件中搜索atom,然后點(diǎn)擊安裝就行了,如圖21。

將機(jī)器人上的系統(tǒng)文件夾遠(yuǎn)程掛載在PC端系統(tǒng),首先打開[文件]管理器,找到左側(cè)欄的[連接到服務(wù)器],在服務(wù)器地址欄輸入遠(yuǎn)程文件地址(如sftp://192.168.0.117/home/ubuntu,這里的sftp是協(xié)議,192.168.0.117是遠(yuǎn)程設(shè)備IP地址,/home/ubuntu是遠(yuǎn)程設(shè)備中想要被掛載的文件夾請(qǐng)根據(jù)實(shí)際替換),然后點(diǎn)擊[連接],這是需要輸入遠(yuǎn)程設(shè)備的登錄名和密碼,如圖22。

掛載好后,就可以使用各種我們喜歡的編輯工具對(duì)文件夾中的文件進(jìn)行編輯了,如圖23,不過遠(yuǎn)程文件系統(tǒng)掛載會(huì)比較占用網(wǎng)路帶寬,不用時(shí)建議盡量斷開。

4.PC端與robot端ROS網(wǎng)絡(luò)通信
PC端與robot端ROS網(wǎng)絡(luò)通信的設(shè)置,其實(shí)很簡單。就是要在PC端和機(jī)器人端都要指明master和hostname這兩個(gè)東西,我們都知道ROS基于的是一個(gè)分布式的通信機(jī)制,支持多機(jī)通信,并且只能有一個(gè)master設(shè)備作為對(duì)其他分部式設(shè)備的統(tǒng)一管理。
由于大部分節(jié)點(diǎn)算法都是運(yùn)行在機(jī)器人上,PC端只是用于遠(yuǎn)程調(diào)試,為了系統(tǒng)的效率與穩(wěn)定性,我把機(jī)器人端作為master。如圖24。

首先,配置機(jī)器人端的ROS網(wǎng)絡(luò)參數(shù),打開機(jī)器人用戶目錄下的~/.bashrc配置文件,在最后添加兩個(gè)環(huán)境變量,如圖25。

不難發(fā)現(xiàn)在機(jī)器人上mater和host的IP是一樣的,因?yàn)闄C(jī)器人被指定為了整個(gè)ROS網(wǎng)絡(luò)的master設(shè)備。修改好后,需要重啟系統(tǒng)使設(shè)置參數(shù)生效。
然后,配置PC端的ROS網(wǎng)絡(luò)參數(shù)。這里需要提醒一下,需要讓PC端與機(jī)器人出于同一局域網(wǎng)下,如果PC端使用的是虛擬機(jī)運(yùn)行ubuntu建議用物理橋接的方式給虛擬機(jī)連網(wǎng)。打開PC端用戶目錄下的~/.bashrc配置文件,在最后添加兩個(gè)環(huán)境變量,如圖26。

不難發(fā)現(xiàn)PC端上master填的是機(jī)器人IP地址,host為PC本地IP。修改好后,需要重啟系統(tǒng)使設(shè)置參數(shù)生效。
設(shè)置好PC端與robot端ROS網(wǎng)絡(luò)通信,在正是進(jìn)行ROS多機(jī)通信時(shí),需要首先在機(jī)器人上啟動(dòng)節(jié)點(diǎn)管理里master,啟動(dòng)命令是roscore,然后就可以在相應(yīng)的機(jī)器上啟動(dòng)需要的節(jié)點(diǎn)了。
5.Android手機(jī)端與robot端ROS網(wǎng)絡(luò)
通信
剛剛介紹了PC端與robot端ROS網(wǎng)絡(luò)通信,在有些情況下,使用Android手機(jī)端來調(diào)試監(jiān)控機(jī)器人會(huì)更方便。于是,參考ROS官網(wǎng)給的開發(fā)demo,我用ros-java庫也做了一個(gè)能跟robot端進(jìn)行ROS網(wǎng)絡(luò)通信的APP,我給這個(gè)APP取名叫Android_for_miiboo_robot.apk。如果大家對(duì)這個(gè)APP感興趣,可以持續(xù)關(guān)注我,我會(huì)把這個(gè)APP共享給大家。這里就來介紹一下Android手機(jī)端與robot端ROS網(wǎng)絡(luò)通信的配置。
首先,是配置機(jī)器人端的ROS網(wǎng)絡(luò)參數(shù),和前面一樣,需要在機(jī)器人端~/.bashrc中指定master與host,由于前面配置PC端與robot端ROS網(wǎng)絡(luò)通信時(shí)已經(jīng)配好了,所以就無需重復(fù)配置了。為了便于在局域網(wǎng)下的Android手機(jī)通過網(wǎng)絡(luò)能迅速找到機(jī)器人,需要在機(jī)器人上開啟專門廣播自己IP的節(jié)點(diǎn),這樣Android手機(jī)就能自動(dòng)搜索并完成Android手機(jī)端與robot端ROS網(wǎng)絡(luò)通信的連接。機(jī)器人IP廣播節(jié)點(diǎn)我已經(jīng)寫好了,只需要通過命令啟動(dòng):
然后,是配置Android手機(jī)端的ROS網(wǎng)絡(luò)參數(shù),其實(shí)將Android手機(jī)連接到同一個(gè)wifi后,打開miiboo機(jī)器人的APP,APP會(huì)自動(dòng)掃描到master(也就是機(jī)器人)的IP地址,只需要點(diǎn)擊CONNECT就可完成連接。連接完成后,Android手機(jī)端與robot端ROS網(wǎng)絡(luò)通信就打通了,接下來APP就可以用ROS網(wǎng)絡(luò)通信來操控機(jī)器人了。如圖27。

這里順便介紹一下,miiboo機(jī)器人APP的功能,功能清單如下。
功能1:手動(dòng)遙控miiboo機(jī)器人移動(dòng)
功能2:建圖/導(dǎo)航模式切換
功能3:顯示地圖
功能4:點(diǎn)擊地圖點(diǎn)指定導(dǎo)航
功能5:視頻監(jiān)控
6.樹莓派USB與tty串口號(hào)綁定
底盤、激光雷達(dá)、IMU這三個(gè)傳感器都使用串口與樹莓派通信,為了防止每次開機(jī)這三個(gè)設(shè)備的串口號(hào)發(fā)生變動(dòng),需要將串口號(hào)進(jìn)行綁定與重映射。
創(chuàng)建rules文件:
rules文件前的序號(hào)越大優(yōu)先級(jí)越小,將優(yōu)先級(jí)設(shè)置的小一點(diǎn);創(chuàng)建文件/etc/udev/rules.d/99-miiboo-usb-serial.rules,文件內(nèi)容如圖28。

確定新插入串口設(shè)備的屬性:
在輸出的數(shù)據(jù)中從上到下找(如KERNELS=="1-1.4.3:1.0"形式的項(xiàng)),下一個(gè)不帶“:”的KERNELS就是我們要找的,將下面這些參數(shù)
ATTRS{idProduct} ?
ATTRS{idVendor}
KERNELS
的取值填入上面創(chuàng)建的rules文件中對(duì)應(yīng)的位置,然后在SYMLINK+中給這個(gè)設(shè)備取一個(gè)別名,MODE設(shè)為0777。
將底盤、雷達(dá)、IMU依次插入樹莓派3的USB口,重復(fù)執(zhí)行上面確定新插入串口設(shè)備的屬性這一步,直到將這3個(gè)串口都綁定完成。這里將底盤、雷達(dá)、IMU分別ttyUSB*名稱分別映射成別名miiboo、lidar、imu,這樣在不改變底盤、雷達(dá)、IMU插入樹莓派3的USB口物理孔位順序時(shí),不論上電開機(jī)后這3個(gè)串口被系統(tǒng)分配的ttyUSB*實(shí)際是多少,我們都可以用映射好的別名/dev/miiboo、/dev/lidar、/dev/imu來訪問底盤、雷達(dá)、IMU串口,并且不用擔(dān)心用戶訪問權(quán)限不足的問題。這里特別說明,miiboo機(jī)器人的底盤、雷達(dá)、IMU插入樹莓派3的USB口物理孔位順序,如圖29,請(qǐng)不要改變這個(gè)順序。

使綁定設(shè)置生效:
重啟機(jī)器人使綁定設(shè)置生效,命令如下。
機(jī)器人重啟后通過命令查看綁定是否生效,看到下面的輸出就說明綁定成功了,如圖30。

7.開機(jī)自啟動(dòng)ROS節(jié)點(diǎn)
在后續(xù)教程學(xué)習(xí)完后,基本上所有的機(jī)器人算法就開發(fā)的差不多了。于是,我們就需要在機(jī)器人上電開機(jī)時(shí),自啟動(dòng)想要啟動(dòng)的ROS節(jié)點(diǎn),讓機(jī)器人立馬進(jìn)入工作狀態(tài)。
由于我自己嘗試過網(wǎng)上的教程,將ROS節(jié)點(diǎn)啟動(dòng)命令放入系統(tǒng)開機(jī)自啟動(dòng)腳本的方法,親測不成功。后來仔細(xì)研究才知道,需要系統(tǒng)完全啟動(dòng),建立起ROS運(yùn)行的必須環(huán)境后,ROS節(jié)點(diǎn)程序才能開始工作,所以系統(tǒng)開機(jī)自啟腳本行不通。
于是,經(jīng)過我自己的研究,找到了一種簡單的方法,將要啟動(dòng)的roslaunch命令加入機(jī)器人的~/.bashrc文件的末尾。這樣在系統(tǒng)啟動(dòng)后,執(zhí)行用戶自動(dòng)登錄時(shí),~/.bashrc會(huì)被調(diào)用,這樣就可以實(shí)現(xiàn)ROS節(jié)點(diǎn)啟動(dòng)了。關(guān)于用戶自動(dòng)登錄的設(shè)置可以參考前面的相關(guān)內(nèi)容。
添加到~/.bashrc文件末尾的內(nèi)容如下,根據(jù)自己的需要,將命令替換成自己的ROS節(jié)點(diǎn)啟動(dòng)命令。
設(shè)置完成后,sudo reboot就可以了。
后記
為了防止后續(xù)大家找不到本篇文章,我同步制作了一份文章的pdf和本專欄涉及的例程代碼放在github和gitee方便大家下載,如果下面給出的github下載鏈接打不開,可以嘗試gitee下載鏈接:
github下載鏈接:https://github.com/xiihoo/DIY_A_SLAM_Navigation_Robot
gitee下載鏈接:https://gitee.com/xiihoo-robot/DIY_A_SLAM_Navigation_Robot
技術(shù)交流
QQ技術(shù)交流群:117698356
參考文獻(xiàn)
[1] 張虎,機(jī)器人SLAM導(dǎo)航核心技術(shù)與實(shí)戰(zhàn)[M]. 機(jī)械工業(yè)出版社,2022.
