Ubuntu14.04
網上很多資料說在/etc/rc.local中添加指令碼,實驗之後完全沒用。可能是系統版本不對。
解決:
Ubuntu14.04 開機項命令: gnome-session-properties
點擊”add”
name : 名字
command : 命令,eg:gnome-terminal -x your_command.sh
注意:sh檔案的許可權,必須是可啟動並執行, 路徑為絕對路徑。
sudo chmod +x your_command.sh
comment :注釋
退出,重啟。
指令檔 start.sh
#! /bin/bash source /opt/ros/indigo/setup.shsource /home/server/catkin_ws/devel/setup.bashroslaunch /home/server/catkin_ws/src/nodelet_tutorial_math/launch/plus.launch
開機後結果,已經自動運行了。
firefly
最終的產品我們不可能用一台電腦作為處理器,所以我們要有開發板,我們使用的是firefly rk3288.系統是Ubuntu14.04.因為系統是同事搞得,具體細節不清楚。在firefly中,沒有gnome-session-properties這條命令,也就是說之前的方法不能用。這個時候robot_upstart 上場了。
http://docs.ros.org/jade/api/robot_upstart/html/index.html#
安裝:sudo apt-get install ros-indigo-robot-upstart
install 命令:要啟動的launch檔案,預設的名稱為”myrobot”,也可以使用–job 指定工作名稱,預設是工程名(底線之前的部分)。
start 命令:
$ sudo service nodelet start
關機重啟之後,這時,我們的終端不會自動啟動,但是ros 節點已經啟動了,開啟終端,驗證一下執行
$rosnode list$rostopic list
可以看到,ros節點已經在運行了。
stop命令:
sudo service nodelet stop
uninstall命令:
rosrun robot_upstart uninstall nodelet
這樣自啟動就會取消了。 遇到的大坑
我們的板子需要接很多裝置,比如底座,網路攝影機,arduino等等。板子上的usb轉串口 介面明顯不夠用。另外開機時串口的識別,裝置的識別等很不穩定。所以讓這些裝置在板子開機時被穩定的識別到是最重要的。目前沒有找到好的解決辦法,以後解決了再更新。
2016 -12-30更新
之前的關於裝置介面和串口識別不到的問題解決了,說一下解決思路。可以建立一個node,使用launch啟動,將這個launch設為自啟動。這樣,上電開機時,這個node就會運行。在這個node中,延時一段時間,調用c++的system函數執行去linux命令,啟動包含網路攝影機等其他裝置的launch。
system("roslaunch pkg xxx.launch")
總之,等系統識別完裝置介面之後,再去啟動我們的launch,就能保證不會出現找不到串口或裝置的問題了。