Windows10 开机自启动 WSL1 中的ROS脚本

Posted yaked19

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows10 开机自启动 WSL1 中的ROS脚本相关的知识,希望对你有一定的参考价值。

因为WSL1没有Linux内核,在其中的启动脚本不是Linux的常规操作,同时对USB设备的支持不是很好。建议有机会直接WSL 2,最近变为发行版了,更稳定。但是由于自己装的WSL 1不想重装系统了,希望WSL 中的ROS脚本随着win10启动而自动启动,这里自己做个笔记,也给需要的朋友一个参考。

win10程序的自启动,利用vbs脚本实现。

cmd dos窗口的分屏利用Windows Terminal实现。Release Windows Terminal v1.12.1098 · microsoft/terminal (github.com)

WSL1 ROS脚本放在bat批处理文件中,避免弹出黑窗口,看到脚本内容。

关键地方,如何打开Windows Terminal并分别执行命令。

一开始可以试试 

wt bash -i -l -c "roscore"

wt -p "Ubuntu-18.04" -d /home/dt/catkin_ws/doc/shell bash -i -l -c "./01lidar_driver_0531.sh"; split-pane -V -- bash -i -l -c "02lidar_driver_0701.sh"; split-pane -H -- bash -i -l -c "03cloud_merge.sh"; move-focus left; split-pane -H -- bash -i -l -c "04pcl_filter.sh"; new-tab -- bash -i -l -c "10laser_driver.sh"; split-pane -V -- bash -i -l -c "11laser_person.sh"; split-pane -H -- bash -i -l -c "12websocket.sh"; move-focus left; split-pane -H -- bash -i -l -c "13dotnet.sh"

最终

wt -p "Ubuntu-18.04" -- bash -i -l -c "roslaunch livox_ros_driver livox_lidar_msg0531.launch"; split-pane -V -- bash -i -l -c "sleep 3 && roslaunch livox_ros_driver livox_lidar_msg0701.launch"; split-pane -H -- bash -i -l -c "sleep 5 && roslaunch lidar_obstacle 1cloud_integration.launch"; move-focus left; split-pane -H -- bash -i -l -c "sleep 1 &&roslaunch lidar_obstacle 2pcl_filter.launch"; new-tab -- bash -i -l -c "sleep 1 && roslaunch lakibeam1 lakibeam1_scan_dual_lidar.launch"; split-pane -V -- bash -i -l -c "sleep 1 &&roslaunch laser_person dual_laser_person.launch"; split-pane -H -- bash -i -l -c "sleep 5 && roslaunch rosbridge_server rosbridge_websocket.launch"; move-focus left; split-pane -H -d \\\\wsl$\\Ubuntu-18.04\\home\\dt\\crane -- bash -i -l -c "sleep 20 && dotnet CraneSafetyServer.dll" 

 wt是Windows Terminal程序的缩写;Windows Terminal command line arguments | Microsoft Learn

-p 是profile的缩写表示配置文件名称,这里是加载“Ubuntu-18.04”子系统(wsl -l 查看);

-d是设置工作目录,便于直接找到想要的脚本或者ros程序

-V 竖直分屏,后面接 “ -- bash -i -l -c”这里很关键。

-- 和 -e的区别,前者是传送指令给shell,后者是不传直接运行。这里是传送给shellWSL,使用"wsl --exec <cmd>“或"wsl -- <cmd>”运行linux命令 - 问答 - 腾讯云开发者社区-腾讯云 (tencent.com)

-i -l 是交互式login窗口,interactive login shell,可以加在默认的bash变量,避免输sudo 密码等

[wt.exe] Add support for appending a commandline to a profile's commandline · Issue #5528 · microsoft/terminal (github.com)

快捷键

Ctrl+shift+P 命令面板(类似Visual sudio code)

以上是关于Windows10 开机自启动 WSL1 中的ROS脚本的主要内容,如果未能解决你的问题,请参考以下文章

设置windows服务开机自启动

win10 开机自启动outlook

Win10系统快速开机功能怎么关闭

电脑开机软件自动启动怎么弄

[已解决]windows10 系统 如何将程序/程序加入开机启动

Ubuntu20.04配置开机自启动脚本