【ROS總結】Turtlebot ROS 開機自啓動設置

  關於ROS自啓動設置,之前查看了很多相關文章,並不是很適用,尤其是開機啓動時候加載minimal.launch和amcl.launch的時候,目前開啓自啓動的ROS包有upstart,該包是通過創建一個服務來啓動minimal.launch等基本的launch文件,要是啓動多個launch文件,可以通過把多個launch文件寫入到一個launch中這樣的方法來啓動。

  還有其他方式是利用Ubuntu自帶的開機啓動文件來達到多launch文件啓動效果,一種是服務,方法和upstart類似,如果想要多launch文件分別啓動,例如minimal.launch和amcl.launch兩個launch文件,當啓動完minimal.launch後,再啓動amcl.launch會出現waiting for device...字樣,導致的結果就是amcl.launch自動不了,還得重新啓動。因此,把多個launch文件寫入到一個launch啓動就不會提示waiting for device...。

  另外一種是在開機啓動文件rc.local文件中直接寫入ros命令來達到開機啓動效果,把minimal和amcl兩個launch文件寫成一個launch命名爲auto_start.launch,然後在rc.laoch中寫入如下內容:

  source /opt/ros/indigo/setup.bash
  roslaunch /etc/auto_start.launch
  其中auto_start.launch文件所在位置並不重要,需要寫在exit 0的前面即可,不過這個不能啓動用戶目錄下的配置,如果啓動用戶目錄下的launch文件,需要source ~/.bashrc。

  我用的方法是,把所有需要的配置和launch文件寫到了一個腳本中,通過開機啓動腳本來達到啓動效果,不過經過測試,單獨運行兩個launch文件還是有錯誤,即運行完minimal後運行amcl.launch的時候,會卡在waiting for device...。目前解決方法是把minimal和amcl寫到了一個文件中命名爲minimal_amcl.launch。

  啓動minimal_amcl.launch文件是在開機的第20秒左右,amcl.launch和minimal.launch共啓動了兩次,基本完全啓動差不多是一到兩分鐘左右。目前不知道是什麼原因,如果有知道的請告知,謝謝! 

  首先,在家目錄下創建一個名爲aotu_runing的目錄,在該目錄下創建腳本文件minimal,內容如下:

<pre name="code" class="plain">#!/bin/bash
source /opt/ros/indigo/setup.bash
source ~/.bashrc
export TURTLEBOT_BASE=kobuki
export TURTLEBOT_3D_SENSOR=kinect
export TURTLEBOT_MAP_FILE=<path_of_map_file>
source ~/catkin_ws/devel/setup.bash
export ROS_HOSTNAME=10.42.0.1
export ROS_MASTER_URI=http://10.42.0.1:11311
d='data +%Y%m%d-%H:%M:%S'
echo "[$d]:minimal runing" >> ~/print_log.txt
roslaunch turtlebot_bringup minimal_amcl.launch


  其中首先source ros路徑,然後source bashrc和用戶目錄下的catkin_ws,因爲catkin_ws目錄下包含了路徑規劃算法。

<pre name="code" class="plain">d='data +%Y%m%d-%H:%M:%S'
echo "[$d]:minimal runing" >> ~/print_log.txt


  打印出信息到家目錄下。

  然後修改/etc/rc.local文件:

#!/bin/sh -e

cd ~/aotu_runing
./minimal
  配置完成,當再次開機的時候,等待1到2分鐘,會聽到Turtlebot響聲,amcl也一起啓動。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章