пятница, 14 июля 2017 г.

ROS. Информационные сообщения

ROS позволяет создавать и отображать информационные сообщения различного уровня важности. Сообщения DEBUG и INFO предназначены для обычных сообщений и направляются в стандартный порт вывода stdout, в то время как WARN, ERROR и FATAL являются критическими и выводятся в порт ошибок stderr. Чтобы увидеть, как это работает, сделаем копию файла hello.py, сохраним её как log.py и добавим несколько строк.


Здесь функции rospy.log*() формируют информационные сообщения уровня от безобидных до опасных. Остаётся сделать файл исполняемым и запустить.

   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

Комментариев нет:

Отправить комментарий