diff --git a/docs/ru/nti2019.md b/docs/ru/nti2019.md index 79251e58..c73be0a2 100644 --- a/docs/ru/nti2019.md +++ b/docs/ru/nti2019.md @@ -128,68 +128,10 @@ rosservice call /navigate "{x: 0.0, y: 0.0, z: 2, yaw: 0.0, yaw_rate: 0.0, speed Для более подробной информации и описания других команд смотрите [API simple_offboard](simple_offboard.md) и [примеры кода](snippets.md). -### Работа с LED-лентой через ROS +### Работа с светодиодной лентой -В образ Клевера для Олимпиады НТИ включена нода ROS, работающая со светодиодной подсветкой. С её помощью можно управлять светодиодами, не запуская свою программу из-под `sudo`. По умолчанию эта нода выключена, но её можно включить, если в файле `/home/pi/catkin_ws/src/ros_ws281x/launch/clever4.launch` изменить строку +В используемой версии Клевера LED-лента подключена напрямую к Raspberry Pi. При включении всех светодиодов ленты на полную мощность возможно повреждение цепей питания микрокомпьютера. -```xml - -``` +Сигнальный провод ленты подключен к GPIO-пину 18. -на - -```xml - -``` - -и перезапустить службу `rosled`: - -```bash -sudo systemctl restart rosled -``` - -Пример работы со светодиодной лентой: - -```python -import rospy -# Загружаем из ноды LED-ленты описание сервиса SetLeds... -from ros_ws281x.srv import SetLeds -# ...и сообщений LEDState и LEDStateArray. Сообщение LEDState -# содержит номер светодиода и его цвет, LEDStateArray - массив -# сообщений LEDState -from ros_ws281x.msg import LEDState, LEDStateArray -# Для задания цвета используется стандартное сообщение ColorRGBA -from std_msgs.msg import ColorRGBA - -# Количество светодиодов в ленте -NUM_LEDS = 60 - -# Прокси к сервису установки состояния светодиодов -set_leds = rospy.ServiceProxy("/led/set_leds", SetLeds, persistent=True) - -# Вспомогательная функция заполнения всей ленты указанным цветом. -# red, green, blue - интенсивность красного, зелёного, синего цвета -# (задаётся числом от 0 до 255) -def fill_strip(red, green, blue): - # Создаём сообщение для setLeds - ledMsg = LEDStateArray() - ledMsg.leds = [] - # Для каждого светодиода указываем его новое состояние - for i in range(NUM_LEDS): - led = LEDState(i, ColorRGBA(red, green, blue, 0)) - # Записываем состояние светодиода в сообщение - ledMsg.leds.append(led) - # Вызываем сервис. После этого вся лента должна стать указанного цвета - set_leds(ledMsg) - - -# Заполняем ленту разными цветами -fill_strip(255, 0, 0) -rospy.sleep(2.0) -fill_strip(0, 255, 0) -rospy.sleep(2.0) -fill_strip(0, 0, 255) -rospy.sleep(2.0) -# Выключение ленты -fill_strip(0, 0, 0) -``` +Про работу с LED-лентой можно прочитать [в соответствующей статье](leds.md).