ROS机器人底盘(39)-ROS程序开机自启动(2)

ROS机器人底盘(39)-ROS程序开机自启动(2),第1张

前文 ROS机器人底盘(33)-ROS程序开机自启动(1) 使用了 ROS 的 robot _ upstart 包设置了 pibot_bringup 开启启动的方法,在统一用到其他的launch上会发现无法启动的问题,比如在启动 gmapping 时候,没有相关环境变量等,本文介绍使用 systemd 设置启动项

在 /etc/systemd/system 创建 pibot.service

看到我们对应的项目添加脚本即可,这里的脚本启动,这里需要设置 ROS 的相关环境和 PIBOT 的相关环境及变量

以 hera 为例

重启后,查看状态,没有错误显示则为正常

pibot 提供一间配置脚本 pibot_add_upstart.sh

解决方案一:

停止docker服务,手动以使用2375端口监听所有网络接口的方式启动docker daemon。

$ systemctl stop docker.service

$ nohup docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock &

解决方案二:

编辑配置文件,Ubuntu下是/etc/default/docker,CentOS下是/etc/sysconfig/docker。不过通过修改这两个文件来配置daemon已经是discouraged的了。不鼓励使用这种方法。HTTP_PROXY="http://[proxy-addr]:[proxy-port]/"

HTTPS_PROXY="https://[proxy-addr]:[proxy-port]/"

export HTTP_PROXY HTTPS_PROXY

解决方案三:

该方法是持久化的,修改后会一直生效。该方法覆盖了默认的docker.service文件。

1. 为docker服务创建一个内嵌的systemd目录

$ mkdir -p /etc/systemd/system/docker.service.d

2. 创建/etc/systemd/system/docker.service.d/http-proxy.conf文件,并添加HTTP_PROXY环境变量。其中[proxy-addr]和[proxy-port]分别改成实际情况的代理地址和端口:

[Service]

Environment="HTTP_PROXY=http://[proxy-addr]:[proxy-port]/" "HTTPS_PROXY=https://[proxy-addr]:[proxy-port]/"

3. 如果还有内部的不需要使用代理来访问的Docker registries,那么嗨需要制定NO_PROXY环境变量:

[Service]

Environment="HTTP_PROXY=http://[proxy-addr]:[proxy-port]/" "HTTPS_PROXY=https://[proxy-addr]:[proxy-port]/" "NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com"

4. 更新配置:

$ systemctl daemon-reload

5. 重启Docker服务:

$ systemctl restart docker


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11719867.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存