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

Наше второе приложение предназначено для того, чтобы заставить нашего робота следовать за человеком, когда он ходит по комнате. Если у вас есть TurtleBot, вы можете использовать превосходное приложение [turtlebot\_follower](http://ros.org/wiki/turtlebot_follower) от [Тони Пратканиса](http://www.formicite.com/), которое использует PCL и написано на C++. Наша цель будет состоять в том, чтобы написать аналогичное приложение на Python, где у нас нет доступа к полному API PCL.

ROS-пакет sensor\_msgs определяет класс для типа сообщения PointCloud2 и вызываемый модуль [point\_cloud2.py,](https://github.com/ros/common_msgs/blob/indigo-devel/sensor_msgs/src/sensor_msgs/point_cloud2.py) который мы можем использовать для доступа к отдельным значениям глубины. Программа turtlebot\_follower Тони Пратканиса на самом деле не знает, как выглядит человек. Вместо этого он использует следующую стратегию, чтобы обнаружить "человекоподобный сгусток" перед ним, а затем держать этот объект на определенном расстоянии:

* Во-первых, нужно определить минимальный и максимальный размер объекта в измерениях x, y и z. Таким образом робот не будет склонен зацикливаться на предметах мебели или ножках стула.
* Затем определяется, насколько близко мы хотим, чтобы робот находился к объекту(человеку). Для камеры глубины Z-координата является здесь соответствующим измерением.
* Запускается основной цикл:
  * Если робот находится слишком далеко или слишком близко к человеку, он двигается вперед или назад соответственно.
  * Если человек находится слева или справа от робота, он должен повернуться соответственно вправо или влево.
  * Соответствующее движение публикуются в виде Twist сообщения в топике /cmd\_vel.

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://artem-hachatryan.gitbook.io/ros-translation/glava-11.-sovmeshenie-zreniya-i-bazovogo-upravleniya/11.4-sledovanie-za-chelovekom.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
