ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Please refer to: https://answers.ros.org/question/245089/systemd-roslaunch/

I use the following unit files for running roscore and ROS websocket bridge (my ROS installation is isolated):

roscore:

[Unit]
Description=Robot Operating System core RPC driver [system-wide]
Documentation=http://wiki.ros.org/
After=syslog.target network.target time-sync.target network-online.target
Wants=network-online.target 

[Path]
PathExists=/util/ros

[Service]
Type=simple
Restart=on-failure
User=robot
Group=robot
Environment=ROS_MASTER_URI=http://localhost:11311
Environment=LD_LIBRARY_PATH=/util/lib:/util/llvm/lib:/util/ffmpeg/lib:/util/qt/lib:/util/ros/lib:$LD_LIBRARY_PATH
#Runtime
ExecStart=/bin/bash -c 'source /util/ros/activate.bash; roscore'

#Accounting
CPUAccounting=true
CPUQuota=100%
MemorySwapMax=0

[Install]
WantedBy=multi-user.target

ros-websocket-server:

[Unit]
Description=Robot Operating System Autobahn Websocket server [system-wide]
Documentation=http://wiki.ros.org/
After=ros-core.service
Requires=ros-core.service

[Service]
Environment=ROS_MASTER_URI=http://localhost:11311
Environment=LD_LIBRARY_PATH=/util/lib:/util/llvm/lib:/util/ffmpeg/lib:/util/qt/lib:/util/ros/lib:$LD_LIBRARY_PATH
User=robot
Group=robot
Type=simple
Restart=on-failure

#Runtime
ExecStart=/bin/bash -c 'source /util/ros/activate.bash; roslaunch --wait rosbridge_server rosbridge_websocket.launch'
RestartSec=2s
KillSignal=SIGINT
TimeoutStopSec=5s

#Accounting
MemoryAccounting=true
MemoryHigh=512M
MemoryMax=1024M
MemorySwapMax=0

[Install]
WantedBy=multi-user.target

Please refer to: https://answers.ros.org/question/245089/systemd-roslaunch/

I use the following unit files for running roscore and ROS websocket bridge (my ROS installation is isolated):

roscore:

[Unit]
Description=Robot Operating System core RPC driver [system-wide]
Documentation=http://wiki.ros.org/
After=syslog.target network.target time-sync.target network-online.target
Wants=network-online.target 

[Path]
PathExists=/util/ros

[Service]
Type=simple
Restart=on-failure
User=robot
Group=robot
Environment=ROS_MASTER_URI=http://localhost:11311
Environment=LD_LIBRARY_PATH=/util/lib:/util/llvm/lib:/util/ffmpeg/lib:/util/qt/lib:/util/ros/lib:$LD_LIBRARY_PATH
#Runtime
ExecStart=/bin/bash -c 'source /util/ros/activate.bash; roscore'

#Accounting
CPUAccounting=true
CPUQuota=100%
MemorySwapMax=0

[Install]
WantedBy=multi-user.target

ros-websocket-server:

[Unit]
Description=Robot Operating System Autobahn Websocket server [system-wide]
Documentation=http://wiki.ros.org/
After=ros-core.service
Requires=ros-core.service

[Service]
Environment=ROS_MASTER_URI=http://localhost:11311
Environment=LD_LIBRARY_PATH=/util/lib:/util/llvm/lib:/util/ffmpeg/lib:/util/qt/lib:/util/ros/lib:$LD_LIBRARY_PATH
User=robot
Group=robot
Type=simple
Restart=on-failure

#Runtime
ExecStart=/bin/bash -c 'source /util/ros/activate.bash; roslaunch --wait rosbridge_server rosbridge_websocket.launch'
RestartSec=2s
KillSignal=SIGINT
TimeoutStopSec=5s

#Accounting
MemoryAccounting=true
MemoryHigh=512M
MemoryMax=1024M
MemorySwapMax=0

[Install]
WantedBy=multi-user.target

The activation script /util/ros/activate.bash:

#!/usr/bin/env bash
ROS_INIT_SCRIPT="/util/ros/setup.bash"
if [[ -f "${HOME}/.bashrc" ]]
then
    source ${HOME}/.bashrc
fi

PS1="[ROS] ${PS1}"

source ${ROS_INIT_SCRIPT}

export ROS_LOG_DIR="/util/ros/log"
export ROS_ENVIRONMENT_ACTIVATED=1