Car Control API — это Python-пакет для дистанционного управления образовательным мобильным роботом TurtleCar. Пакет предоставляет простой и интуитивно понятный интерфейс для взаимодействия с роботом через WebSockets, позволяя выполнять основные действия, такие как управление скоростью и направлением, а также получать данные от датчиков и камеры робота.
- Подключение через WebSockets: Надежное и быстрое соединение с машиной.
- Управление движением: Управление скоростью и направлением.
- Получение данных: Доступ к данным УЗ, датчиков линии, датчика цвета, концевиков, одометрии и другим сенсорам.
- Работа с камерой: Получение изображений с камеры машины для анализа или отображения.
- Асинхронность: Поддержка асинхронных операций для эффективного управления ресурсами.
Установка пакета осуществляется через pip. Убедитесь, что у вас установлен Python версии 3.6 или выше.
cd car_control_api
pip3 install -e .Пакет требует наличия следующих зависимостей:
websocketsnumpyopencv-python
Эти зависимости автоматически устанавливаются вместе с пакетом. Однако, вы также можете установить их вручную, используя файл requirements.txt:
pip3 install -r requirements.txtНиже приведен пример того, как подключиться к машшине и выполнить основные действия:
from car_control_api import Car
client = Car()В директории examples/ находится скрипт api_test.py, демонстрирующий использование пакета. Запустите его следующей командой:
python3 examples/api_test.pyОсновной класс для управления роботом.
-
connect(ip: str, port: str) -> bool
Подключается к машине по указанному IP и порту.
-
disconnect() -> bool
Отключается от машины.
-
getImage() -> numpy.ndarray
Получает изображение с камеры машины.
-
getUtilsData() -> dict
Получает данные утилит.
-
setZeroOdom()
Устанавливает нулевую точку отсчета для колёсной одометрии.
-
getOdomPose() -> list
Получает данные о положении с колёсной одометрии.
-
getVelocity() -> list
Получает линейную и угловую скорости с колёсной одометрии.
-
getLidar() -> dict
Получает данные с лидара.
-
getArucos() -> dict
Получает информацию об обнаруженных ArUco-маркерах.
-
getCameraPoseAruco() -> dict
Получает позицию камеры относительно ArUco-маркеров.
-
getColor() -> list
Получает данные с датчика цвета, значения R, G и B.
-
getUltrasonic() -> list
Получает данные с ультразвуковых датчиков.
-
getTouch() -> list
Получает данные с концевиков.
-
getLine() -> list
Получает данные с датчиков линии.
-
getUltrasonicSens(id: int) -> int
Получает данные с ультразвукого датчика заданного id (1-3).
-
getTouchSens(id: int) -> int
Получает данные с концевика заданного id (1-2).
-
getLineSens(id: int) -> int
Получает данные с датчика линии заданного id (1-3).
-
getBlobs() -> dict
Получает информацию об обнаруженных цветовых пятнах.
-
getWheelSpeed() -> float
Получает скорость вращения колес в об/с.
-
getSteeringPose() -> float
Получает угол поворота руля в град.
-
setVx(vx: float)
Устанавливает линейную скорость движения vx в м/с.
-
setSteeringPose(steer_angle: float)
Устанавливает угол поворота руля steer_angle в град.
-
setVelocity(lin_vel: float, ang_vel: float)
Устанавливает линейную (м/с) и угловую (рад/с) скорости движения.
-
setDeviceControl(vx: float, steer_angle: float)
Устанавливает линейную скорость (м/с) движения и угол поворота руля (град).
-
gotoXY(x: float, y: float)
Перемещает машину в заданные координаты.
-
gotoXYrobot(x: float, y: float)
Перемещает машину в заданные координаты в локальной системе отсчёта.
-
setLEDValue(val: int)
Устанавливает значение освещенности светодиода датчика цвета [0-255].
-
AddOnMessangeUtils(handler: Callable)
Добавляет обработчик для сообщений утилит.
-
AddOnMessangeImage(handler: Callable)
Добавляет обработчик для сообщений изображений.
Мы приветствуем вклад сообщества в развитие проекта! Если вы нашли ошибку или хотите предложить новую функциональность, пожалуйста, создайте issue или сделайте pull request.
Этот проект лицензирован под лицензией MIT. Подробности см. в файле LICENSE.