diff --git a/aruco_pose/src/genmap.py b/aruco_pose/src/genmap.py new file mode 100755 index 00000000..fad14917 --- /dev/null +++ b/aruco_pose/src/genmap.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python + +"""Markers map generator + +Generate map file for aruco_map nodelet. + +Usage: + genmap.py [--top-left] + genmap.py (-h | --help) + +Options: + Marker side length + Marker count along Y axis + Marker count along X axis + Distance between markers along X axis + Distance between markers along Y axis + Space beetween markers along X axis + Space beetween markers along Y axis + First marker ID + --top-left First marker is on top-left (not bottom-left) +""" + +from __future__ import print_function + +from docopt import docopt + + +arguments = docopt(__doc__) + +length = float(arguments['']) +first = int(arguments['']) +markers_x = int(arguments['']) +markers_y = int(arguments['']) +dist_x = float(arguments['']) +dist_y = float(arguments['']) +top_left = arguments['--top-left'] + +max_y = markers_y * length + +for y in range(markers_y): + for x in range(markers_x): + pos_x = x * dist_x + pos_y = y * dist_y + if top_left: + pos_y = max_y - pos_y + print('{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}\t'.format(first, length, pos_x, pos_y, 0, 0, 0, 0)) + first += 1 diff --git a/clever/requirements.txt b/clever/requirements.txt index 8679c188..d01b723a 100644 --- a/clever/requirements.txt +++ b/clever/requirements.txt @@ -1,4 +1,5 @@ flask==0.12.3 +docopt==0.6.2 geopy==1.11.0 pymavlink==2.2.10 smbus2==0.2.1 diff --git a/docs/ru/aruco_map.md b/docs/ru/aruco_map.md index 6f106eda..c3563ca1 100644 --- a/docs/ru/aruco_map.md +++ b/docs/ru/aruco_map.md @@ -37,6 +37,20 @@ id_маркера размер_маркера x y z угол_z угол_y уго Смотрите примеры карт маркеров в каталоге [`~/catkin_ws/src/clever/aruco_pose/map`](https://github.com/CopterExpress/clever/tree/master/aruco_pose/map). +Файл карты может быть сгенерирован с помощью инструмента `genmap.py`: + +```bash +rosrun aruco_pose genmap.py length x y dist_x dist_y first > ~/catkin_ws/src/clever/aruco_pose/map/test_map.txt +``` + +Где `length` – размер маркера, `x` – количество маркеров по оси *x*, `y` - количество маркеров по оси *y*, `dist_x` – расстояние между центрами маркеров по оси *x*, `y` – расстояние между центрами маркеров по оси *y*, `first` – ID первого (левого нижнего) маркера, `test_map.txt` – название файла с картой. Дополнительный ключ `--top-left` позволяет нумеровать маркеры с левого верхнего угла. + +Пример: + +```bash +rosrun aruco_pose genmap.py 0.33 2 4 1 1 0 > ~/catkin_ws/src/clever/aruco_pose/map/test_map.txt +``` + ### Проверка Для контроля карты, по которой в данный момент коптер осуществляет навигацию, можно просмотреть содержимое топика `/aruco_map/image`. Через браузер его можно просмотреть при помощи [web_video_server](web_video_server.md) по ссылке http://192.168.11.1:8080/snapshot?topic=/aruco_map/image: