6.4 Мониторинг батареи ноутбука

Если ваш робот содержит ноутбук на борту, то вы можете следить за состоянием батареи ноутбука и публиковать результат в массиве /diagnostics. Затем мы можем использовать эту информацию, чтобы узнать, когда аккумулятор находится в неисправном состоянии или компьютер нуждается в подзарядке.

К счастью для нас, люди в Willow Garage давным-давно создали узел для мониторинга батареи ноутбука Turtlebot с помощью системного файла /proc/acpi/battery/BAT1. Мы включили измененную версию этого сценария под названием laptop_battery.py и его можно найти в подкаталоге rbx2_bring up/nodes.

Если вы работаете на ноутбуке, когда читаете это, вы можете протестировать сценарий следующим образом:

$ roslaunch rbx2_bringup laptop_battery.launch

Файл запуска определяет скорость публикации диагностических данных (по умолчанию 1 Гц) и путь apci_path к файлу батареи (по умолчанию /proc/acpi/battery/BAT1). Предполагая, что файл запуска работает без ошибок, взгляните на данные, опубликованные в разделе /diagnostics:

$ rostopic echo /diagnostics | more

Вывод на экран должен выглядеть примерно так:

header:
  seq: 21 stamp:
secs: 1395878798
nsecs: 494307994
frame_id: ''
status:
 -      level: 0
name: Laptop Battery
message: OK
hardware_id: ''
values:
      -
key: Voltage (V)
value: 15.12
      -
key: Current (A)
value: -19.232
      -
key: Charge (Ah)
value: 27.412
      -
key: Capacity (Ah)
value: 33.46
      -
key: Design Capacity (Ah)
value: 46.472 --
      -

Как вы можете видеть, узел батареи ноутбука публикует исходные значения напряжения, заряда и емкости в виде пар «ключ-значение». То, что не очевидно, пока вы внимательно не посмотрите на сценарий laptop_battery.py,который заключается в том, что общий уровень диагностики всегда будет равен 0 (т. е. ОК) до тех пор, пока батарея обнаружена и ее состояние было своевременно обновлено. Другими словами, опубликованный здесь статус не связан с зарядом батареи—он только отражает, присутствует ли батарея или нет, и может быть отслежен. Новый сценарий, подробно описанный в следующем разделе, опубликует диагностическое сообщение, основанное на самой зарядке.

Last updated