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