Este repositório fornece um exemplo simples de como configurar um serviço systemd para iniciar automaticamente um launch do ROS2 ao ligar a Jetson.
remote_jetson.sh: Script responsável por rodar o launch em ROS2ros2_launch.service: Serviço systemd que chama o script no boot
- ROS 2 (Humble ou equivalente)
De acordo com o launch em cada Jetson (editável no remote_jetson.sh):
- Launch funcional:
ros2 launch voris_bringup active_system.launch.pyouros2 launch voris_bringup passive_system.launch.py
Criar arquivo de serviço com nome ros2_launch.service:
sudo nano /etc/systemd/system/ros2_launch.serviceCódigo base do serviço ros2_launch.service:
[Unit]
Description=Auto-start ROS2 launch
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=jetson
ExecStart=/home/jetson/ros2_ws/src/remote_jetson.sh
Restart=on-failure
Environment=DISPLAY=:0
[Install]
WantedBy=multi-user.targetIniciar:
sudo systemctl start ros2_launch.serviceVerificar status:
sudo systemctl status ros2_launch.serviceLogs:
journalctl -u ros2_launch.service -bDesabilitar:
sudo systemctl disable ros2_launch.serviceRemover:
sudo rm /etc/systemd/system/ros2_launch.service
sudo systemctl daemon-reloadSe desejar alterar o comportamento do serviço (como o script executado, usuário ou variáveis de ambiente), edite o arquivo:
sudo nano /etc/systemd/system/ros2_launch.serviceExemplos de ajustes:
-
Alterar o caminho do script:
ExecStart=/home/jetson/meu_novo_script.sh -
Mudar o usuário:
User=usuario_diferente -
Adicionar novas variáveis de ambiente:
Environment=VAR1=valor1 Environment=VAR2=valor2
Após qualquer edição, recarregue o systemd:
sudo systemctl daemon-reexecE reinicie o serviço para aplicar:
sudo systemctl restart ros2_launch.service- O script deve conter todas as exports necessárias (Spinnaker, ROS, etc)
- O serviço assume que o script está em local fixo (ajuste se preciso)
- A rede deve estar pronta no momento do launch (usar
After=network-online.target)