1. 程式人生 > >Ubuntu16.04新增ROS開機指令碼

Ubuntu16.04新增ROS開機指令碼

1、新建個指令碼檔案 new_service.sh
通過bash寫.sh檔案的形式,將命令列一起寫入一個指令碼。直接按照一步步執行順序寫,會出現問題:因為有的一個命令在終端一直在執行,無法接下的命令。這就需要將前一個命令放到後臺&,同時由於節點發布的先後順序,需要進行延時操作sleep n 表示延時n秒。

注:要讓ROS的關鍵詞能夠在終端識別,還得先source下ROS環境。
下面是turtlebot_3Dvision的例子說明:普通使用者登入

#!/bin/bash
#source /opt/ros/kinetic/setup.bash
source /opt/ros/kinetic/setup.bash
source /home/agv/hydro_ws/devel/setup.bash
ROS_PACKAGE_PATH=~/hydro_ws/src:$ROS_PACKAGE_PATH
ROS_WORKSPACE=~/hydro_ws/src
echo roslaunch turtlebot_bringup
roslaunch turtlebot_bringup minimal.launch &
sleep 15
echo turtlebot_bringup 3dsensor.launch
roslaunch turtlebot_bringup 3dsensor.launch &
sleep 15
echo turtlebot_rviz_launchers
roslaunch turtlebot_rviz_launchers view_robot.launch &

讓HAN` ROBOT Cyton機械手臂恢復到初始位置例子:root使用者登入

#!/bin/bash
sudo chmod 777 /dev/ttyUSB0
source /root/catkin_ws/devel/setup.bash
roslaunch cute_bringup cute_bringup.launch &
sleep 20
source /root/catkin_ws/devel/setup.bash
rosservice call /cute_go_home “data: true” &

在進行下面操作之前,可以先copy一份測試一下.sh檔案是否執行正確。
cp new_service.sh

test.sh
sudo chmod u+x test.sh
./test.sh
操作步驟及執行結果符合預期後,進行下面操作。

2、設定許可權

sudo chmod 755 new_service.sh

3、把指令碼放置到啟動目錄下

sudo mv new_service.sh /etc/init.d/

4、將指令碼新增到啟動指令碼

執行如下指令,在這裡90表明一個優先順序,越高表示執行的越晚

cd /etc/init.d/ sudo update-rc.d new_service.sh defaults 90

5、移除Ubuntu開機指令碼

sudo update-rc.d -f new_service.sh remove

轉載地址:https://blog.csdn.net/zyh821351004/article/details/41697241