Ubuntu18.04/20.04开机自启运行脚本
- 开源代码
- 2025-08-30 06:54:01

首先,编写一个.sh文件。 #任意目录创建文件 touch start.sh #授予权限 sudo chmod +x start.sh #编辑文件 gedit start.sh start.sh #! /bin/bash gnome-terminal -- bash -c "roslaunch wpr_simulation wpb_stage_robocup.launch; exec bash" echo “wpb_stage_robocup.launch successfully started” sleep 10s gnome-terminal -- bash -c "roslaunch nav_pkg nav.launch; exec bash" echo “nav.launch successfully started” sleep 10s gnome-terminal -- bash -c "rosrun nav_pkg wp_node_wait; exec bash" exit 0 代码解释: #!/bin/bash
这是脚本的 shebang 解释行,指定了要使用的Shell。在本示例中,脚本将使用bash作为默认Shell。
gnome-terminal -- bash -c "roslaunch wpr_simulation wpb_stage_robocup.launch; exec bash"在这行代码中
(1)使用 gnome-terminal 命令用于打开一个新的终端窗口,在新的终端窗口中运行命令。
(2)bash -c表示在新的终端中执行一条命令。在-c后面的双引号内写需要在这个终端窗口依次执行的命令,命令间用分号 “;” 间隔。
(3)在本终端窗口执行依次命令是roslaunch wpr_simulation wpb_stage_robocup.launch和exec bash,前者启动了名为wpr_simulation wpb_stage_robocup.launch的ROS launch文件。后者exec bash用于设定在执行完该命令后,保持终端窗口打开而不退出。
需要注意的是我在 .bashrc 文件中已经写入了上述文件的环境变量,在本例中为source /home/gyr/Documents/robot/devel/setup.bash(根据自己情况修改)
若没有再.bashrc文件中写入环境变量,则需要在执行launch文件前,先使用该语句加载环境变量,此时,本行语句变为
gnome-terminal -- bash -c "source /home/gyr/Documents/robot/devel/setup.bash; roslaunch wpr_simulation wpb_stage_robocup.launch; exec bash"否则会出现以下报错
echo “wpb_stage_robocup.launch successfully started”这行语句使用echo 输出一条消息,后面双引号内的内容是输出的信息,本例中输出的是launch文件成功启动的信息,本行语句是非必要语句,可以不写。
sleep 10s这行代码让脚本暂停执行10秒钟。这是为了在启动两个不同的ROS launch文件之间留出一定的时间间隔,以避免它们相互竞争roscore资源并导致其中一个启动失败。
在本例中,第一个launch文件,会启动roscore(ROS中未启动roscore时,launch文件会自动启动)、gazebo、rviz等环境耗时较长,所以在执行下一条launch文件前等待了10s,具体等待时间,取决于本launch文件启动需要花费的时间,自行修改即可。
改进:在上述示例程序中,每个launch文件都会打开一个新的窗口,当需要执行的launch文件较多时,窗口过多会比较乱,因此,我们对上述程序进行简单的改进,使其在同一个窗口的不同选项卡下依次打开多个launch文件。
改进后的示例程序如下:
#!/bin/bash gnome-terminal --tab -- bash -c "\ roslaunch wpr_simulation wpb_stage_robocup.launch; \ exec bash" echo “wpb_stage_robocup.launch successfully started” sleep 10s gnome-terminal --tab -- bash -c "\ roslaunch nav_pkg nav.launch;\ exec bash" echo “nav.launch successfully started” sleep 10s gnome-terminal --tab -- bash -c "\ rosrun nav_pkg wp_node_wait;\ exec bash"与改进前的示例程序相比,新加入的 --tab: 是 gnome-terminal 命令的选项,用于设定在新的选项卡中执行命令。此外,当在一个选项卡中需要执行的语句较多时,写成一行可读性较差,改进后的程序使用了换行符 \ 连接。每行都以一个反斜杠 \ 结尾,表示命令在下一行继续。这样可以使命令更易读。
其他说明:--window:创建新窗口。
--tab:在现有窗口中添加新标签页。
--title:设置标签页标题。
source ...:加载 ROS 环境变量(根据实际路径调整)。
exec bash:保持标签页不退出。
参考:详细介绍ROS中通过shell文件依次启动多个launch文件_gnome-terminal --tab -- roslaunch-CSDN博客 其次,搜索一个叫 Startup Application 的软件。点击 Add,编写一个Name
点击 Browse,找到刚刚编写的 .sh 文件,再点 Add,重启之后就可以开机自启啦!
Ubuntu18.04/20.04开机自启运行脚本由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Ubuntu18.04/20.04开机自启运行脚本”
下一篇
centos9时间同步服务