如何在RDK X3上配置TROS/ROS2功能包的开机自启动?
推荐以后台服务的方式设置开机启动程序,本文所有操作均在root账户下,指令细节可根据需要修改:
创建需要运行的脚本和服务文件:
cd /etc/systemd/system/
touch tros_bot.bash # 需要运行的bash脚本
touch tros_bot.service # 配置服务
tros_bot.bash
文件内容如下,其他按照TROS手册的说明来
vim /etc/systemd/system/tros_bot.bash
#!/bin/bash
source /opt/tros/setup.bash
cp -r /opt/tros/lib/mono2d_body_detection/config/ .
export CAM_TYPE=mipi
ros2 launch mono2d_body_detection mono2d_body_detection.launch.py
确保为这个脚本赋予可执行权限
chmod 777 /etc/systemd/system/tros_bot.bash
编辑完保存退出,尝试运行这个脚本,所有的路径都使用绝对路径,并确保脚本可以正常启动:
/usr/bin/bash /etc/systemd/system/tros_bot.bash
tros_bot.service
文件内容如下:
vim /etc/systemd/system/tros_bot.service
特别的:
把ExecStart
行修改为需要运行的指令,也就是运行我们这个bash脚本。
需要指定User=root
,不然ROS会找不到用户,不能输出日志,从而无法运行。
[Unit]
Description=A server for tros_bot
After=network.target
[Service]
Type=simple
User=root
Restart=always
RestartSec=5
ExecStart=/usr/bin/bash /etc/systemd/system/tros_bot.bash &
StandardOutput=/tros_bot.log
StandardError=/tros_bot_error.log
[Install]
WantedBy=multi-user.target
修改tros_bot.service
文件权限
chmod 777 /etc/systemd/system/tros_bot.service
开机自启动tros_bot.service
服务
systemctl enable tros_bot.service
后续可根据需要关闭这个服务自启动
systemctl disable tros_bot.service
查看服务状态
systemctl status tros_bot.service
重启服务
systemctl restart tros_bot.service
开始服务(临时开启,重启不生效)
systemctl start tros_bot.service
停止服务
systemctl stop tros_bot.service
参考:
https://blog.csdn.net/zhinian_hao/article/details/129104387
https://zhuanlan.zhihu.com/p/567162157