ROS позволяет создавать и отображать информационные сообщения различного уровня важности. Сообщения DEBUG и INFO предназначены для обычных сообщений и направляются в стандартный порт вывода stdout, в то время как WARN, ERROR и FATAL являются критическими и выводятся в порт ошибок stderr. Чтобы увидеть, как это работает, сделаем копию файла hello.py, сохраним её как log.py и добавим несколько строк.
chmod +x log.py
roscore
rosrun ros_test log.py
Каждую секунду на экране будут отображаться сообщения, критические выделены красным цветом. Обратите внимание, что DEBUG среди них нет. Чтобы эти сообщения появились, нужно изменить уровень логирования, для этого в методе init_node() существует параметр log_level:
rospy.init_node('log_write', log_level=rospy.DEBUG)
Частоту вывода сообщения можно поменять, если использовать функции семейства rospy.log*_throttle(период,сообщение).
Сообщения, генерируемые всеми нодами, направляются в топик /rosout, т.е. их можно просмотреть с помощью команды
rostopic echo /rosout
Также существует специальная утилита rqt_console, которая отображает сообщения из /rosout в графическом режиме.
Настроить тип отображаемых сообщений и выбрать ноды позволяет другая графическая программа - rqt_logger_level.
Помимо вывода на экран, поступающие в /rosout сообщения записываются в лог-файле ~/.ros/log/run_id/rosout.log, где run_id - это UUID, генерируемый для каждой новой сессии, его можно получить командой
rosparam get /run_id
Эти логи, безусловно, полезны, однако со временем имеют свойство накапливаться. Узнать текущий размер логов можно с помощью команды
rosclean check
а удалить -
rosclean purge
Комментариев нет:
Отправить комментарий