ubuntu開機(jī)后ROS程序自啟動問題
目錄
- 一、ubuntu免密開機(jī)
- 二、程序腳本啟動
- 三、文件賦予權(quán)限
- 四、開機(jī)啟動項(xiàng)管理器
- 五、需要SUDO權(quán)限的腳本開機(jī)自啟動
- 總結(jié)
平時(shí)有用到一些機(jī)器人或者帶有ubuntu系統(tǒng)的移動設(shè)備,比如NVIDIA TX2,NVIDIA XAVIA, JetsonNANO,秒算,工控機(jī)等等,寫好了程序后,如果想要運(yùn)行,開機(jī)之后還得連接鍵盤鼠標(biāo),顯示器,等程序運(yùn)行之后還需要重新拔掉鍵盤鼠標(biāo)顯示器等等,步驟繁瑣是一部分,還有可能因?yàn)榉磻?yīng)不及時(shí)發(fā)生危險(xiǎn),尤其對于無人機(jī)等,因此需要配置程序開機(jī)自啟動。
一、ubuntu免密開機(jī)
路徑:系統(tǒng)設(shè)置–用戶設(shè)置
二、程序腳本啟動
可以創(chuàng)建test.sh文件,將程序所需要運(yùn)行的指令全部加入sh文件中。
例如:
#! /bin/bashgnome-terminal -- bash -c "cd /home/xxx/Desktop/CSDN/test_demo/build;mkdir helloworld" & sleep 5waitexit 0
說明:
- gnome-terminal --bash -c:會打開一個(gè)新的bash終端并執(zhí)行c后面的語句。linux bash是一個(gè)命令處理器,通常運(yùn)行于文本窗口中,并能執(zhí)行用戶直接輸入的命令;Bash還能從文件中讀取命令,這樣的文件稱為腳本。語句用’;;’,隔開,最后的sleep 5表示延遲5秒退出,這樣就可以在新的終端看到運(yùn)行效果,添加這個(gè)延時(shí)是為了方便驗(yàn)證是否啟動程序或者節(jié)點(diǎn)
- 如果是ubuntu 18.04以前的系統(tǒng):gnome-terminal -x bash -c;ubuntu18.04以后的系統(tǒng)輸入:gnome-terminal – bash -c
- gnome-terminal --tab:同一終端窗口中打開一個(gè)新選項(xiàng)卡。而是打開一個(gè)新窗口。
三、文件賦予權(quán)限
chmod指令詳細(xì)說明,請參考:【ubuntu】chmod命令
chmod 777 test.sh
四、開機(jī)啟動項(xiàng)管理器
gnome-session-properties是ubuntu的開機(jī)啟動項(xiàng)管理器。如果之前編寫的sh文件,不需要sudo權(quán)限,即可將sh文件加入gnome-session-properties自啟動管理器中即可。
終端輸入:gnome-session-properties
添加執(zhí)行項(xiàng)目。其中command為你編寫的腳本路徑,name和comment可以隨意配置。
五、需要SUDO權(quán)限的腳本開機(jī)自啟動
有的時(shí)候,我們的設(shè)備連接外部設(shè)備,需要打開串口,甚至是gpio口,這需要使用到權(quán)限,串口可以通過添加rules來設(shè)置為普通用戶,但是之前在DJIManifold產(chǎn)品上需要程序?qū)PIO口進(jìn)行設(shè)置,這個(gè)時(shí)候就需要用到sudo權(quán)限了,因?yàn)樵谶M(jìn)入sudo權(quán)限需要輸入密碼,這就不好完成開機(jī)自啟動。
此時(shí)就需要利用shell腳本自動輸入密碼
指令:echo "password" | sudo -S "./test.sh"
后續(xù)還需要做三步操作:
給文件運(yùn)行權(quán)限
sudo chmod 777 start.sh
設(shè)置腳本自啟動
gnome-session-properties
保持gnome-terminal窗口執(zhí)行后不立刻關(guān)閉
在測試中會發(fā)現(xiàn),gnome-terminal命令執(zhí)行完會一閃而過,自行關(guān)閉。需要添加read命令,read命令是等待用戶按下回車后使窗口關(guān)閉。
gnome-terminal -x bash -c "echo \"OK now\"; read"
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持。
