Hack ROS2 para habilitar log DEBUG durante 'ros2 launch'

Problema

Quando você faz ros2 launch de um pacote ROS, o nível de log padrão é frequentemente definido como INFO, portanto você não verá informações úteis quando um erro for encontrado, ex.:

enable_ros2_debug.sh
[INFO] [launch]: All log files can be found below /home/user/.ros/log/2025-01-24-03-53-34-995687-user-desktop-2530786
[INFO] [launch]: Default logging verbosity is set to INFO
[ERROR] [launch]: Caught exception in launch (see debug for traceback): substitution args not supported:  No module named 'roslaunch'

Solução

Existe um pedido de funcionalidade para permitir definir o nível de log para ros2 launch via argumento de linha de comando. Isso não está implementado.

Você tem a opção de modificar significativamente o launch file (veja o pedido de funcionalidade para detalhes) ou você pode usar o seguinte hack:

No topo do seu launch file, adicione o seguinte código Python:

enable_debug_logging.py
import logging
logging.root.setLevel(logging.DEBUG)

Enquanto a mensagem Default logging verbosity is set to INFO ainda será impressa (já que é executada antes do seu arquivo Python), a maioria dos módulos agora fará log no nível DEBUG.


Check out similar posts by category: ROS