Подглава 11.4 Следование за человеком

Наше второе приложение предназначено для того, чтобы заставить нашего робота следовать за человеком, когда он ходит по комнате. Если у вас есть TurtleBot, вы можете использовать превосходное приложение turtlebot_follower от Тони Пратканиса, которое использует PCL и написано на C++. Наша цель будет состоять в том, чтобы написать аналогичное приложение на Python, где у нас нет доступа к полному API PCL.

ROS-пакет sensor_msgs определяет класс для типа сообщения PointCloud2 и вызываемый модуль point_cloud2.py, который мы можем использовать для доступа к отдельным значениям глубины. Программа turtlebot_follower Тони Пратканиса на самом деле не знает, как выглядит человек. Вместо этого он использует следующую стратегию, чтобы обнаружить "человекоподобный сгусток" перед ним, а затем держать этот объект на определенном расстоянии:

  • Во-первых, нужно определить минимальный и максимальный размер объекта в измерениях x, y и z. Таким образом робот не будет склонен зацикливаться на предметах мебели или ножках стула.

  • Затем определяется, насколько близко мы хотим, чтобы робот находился к объекту(человеку). Для камеры глубины Z-координата является здесь соответствующим измерением.

  • Запускается основной цикл:

    • Если робот находится слишком далеко или слишком близко к человеку, он двигается вперед или назад соответственно.

    • Если человек находится слева или справа от робота, он должен повернуться соответственно вправо или влево.

    • Соответствующее движение публикуются в виде Twist сообщения в топике /cmd_vel.

Давайте теперь запрограммируем аналогичное приложение ROS на Python

Last updated