ROS2系统节点开机自启动

要将ROS2节点设置为开机自启动,您可以创建一个systemd服务单元来管理它。

一、创建launch文件

$ cd ~/ros2_ws
$ mkdir launch
$ touch launch/ros_launch.py

编辑内容:

from launch import LaunchDescription
from launch_ros.actions import Node
 
def generate_launch_description():
    return LaunchDescription([
        Node(
            package='can_communication',
            namespace='ros_robot',
            executable='can_communication',
            name='ros_node1'
        ),
    ])

二、创建一个名为ros_launch.service的服务单元文件。在终端中输入以下命令:

sudo nano /etc/systemd/system/ros_launch.service

在打开的文件中,粘贴以下内容:

[Unit]
Description=ROS Launch Service
After=network.target

[Service]
Type=simple
User=jetson
ExecStart=/bin/bash -c "source /opt/ros/galactic/setup.bash && source ~/dev_ws/install/setup.bash && ros2 launch ~/dev_ws/launch/ros_launch.py"
WorkingDirectory=/home/jetson/dev_ws

[Install]
WantedBy=default.target

请确保将<your_username>替换为您的用户名。如果您不确定用户名,请在终端中运行whoami命令来获取它。

保存并关闭文件。

接下来,重新加载systemd守护进程以使其注意到新的服务单元文件。在终端中运行以下命令:

sudo systemctl daemon-reload

然后,启用并启动ROS Launch服务。运行以下命令:

sudo systemctl enable ros_launch.service
sudo systemctl start ros_launch.service

现在,ROS2节点将在系统启动时自动启动。

您可以使用以下命令来检查服务状态:

sudo systemctl status ros_launch.service

您还可以使用以下命令来停止服务:

sudo systemctl stop ros_launch.service

其他命令
#查看已启动的服务列表

扫描二维码关注公众号,回复: 16642446 查看本文章
systemctl list-unit-files|grep enabled

#显示所有已启动的服务

systemctl list-units --type=service

#重新加载并重启ROS Launch服务

sudo systemctl restart ros_launch.service

猜你喜欢

转载自blog.csdn.net/qq_18677445/article/details/132231946
今日推荐