Программное управление и использование SDK

Описание архитектуры ПО

После включения микроконтроллерная плата управления манипулятора будет иметь IP-адрес:

IP-адрес: 192.168.123.110 (SSH-поддержка отсутствует)

Если вы планируете писать свое программное обеспечение и управлять манипулятором со своего ПК, сконфигурируйте ему IP-адрес в соответствующей подсети. Если вы используете манипулятор с роботом B1, то бортовые компьютеры робота уже по умолчанию взаимодействуют друг с другом в этой подсети.

В комплектации с робособакой B1, Ethernet-кабель манипулятора подключается в локальную сеть бортовых компьютеров робособаки не напрямую, а через отдельный интерфейсный блок (установленный на спине). В любом случае манипулятор оказывается в локальной сети бортовых компьютеров робособаки и далее управляется программным обеспечением одного из них (за движение отвечает компьютер 192.168.123.220 (SSH-доступ: unitree/123), а именно запущенный на нем процесс Legged_sport).

Бортовой компьютер, отвечающий за движение робособаки, будем называть MotionPC.

Производитель Unitree произвел интеграцию манипулятора следующим образом. За управление манипулятором в ручном режиме со стороны собаки отвечает процесс z1_ctrl, запущенный на MotionPC. Взаимодействуя с другими процессами (например, Legged_sport), этот процесс получает от них информацию о нажатых клавишах пульта управления, производит расчеты и отправляет алгоритм движения манипулятору (по UDP).

Предоставляя примеры программирования с SDK, производитель сделал несколько демонстрационных программ по управлению манипулятором, которые будут полезны не только для изучения исходного кода и понимания принципов работы с SDK, но и для экспериментов и управления манипулятором программно. Они позволяют программировать и сохранять состояние манипулятора, приводить манипулятор в определенные точки пространства, указывая координаты, а также сохранить в память траектории движения для последующего запуска. Также позволяют управлять движением с клавиатуры ПК.

Эксперименты с этими программами являются переходной стадией от простейшего управления с пульта, до написания своего программного обеспечения. Но даже если вы не планируете разрабатывать свое ПО, то использование этих программ позволит сильно расширить демонстрационный функционал робота.

Так как эти программы берут на себя управление манипулятором, то стандартный процесс z1_ctrl, запущенный на бортовом компьютере робособаки, следует убить.

В командной строке MotionPC используйте команду:

sudo pkill z1_ctrl

Если этого не сделать, то при запуске примера сетевой порт будет занят, и запускаемые пользователем демонстрационные программы работать не будут. Примеры входят в состав пакета SDK (архив z1_sdk-v22.9.5.zip). Компилировать их вы можете на самой собаке, либо на своем ПК (должен находиться в локальной сети робособаки при запуске примера).


Демонстрационные программы

  1. z1_ctrl_udp_controller

Скомплированный пример уже находится находится в собаке /home/unitree/. Он демонстрирует множество функций управления. Запустив его, нужно выбрать один из режимов управления:

Функция Клавиша Описание
Стартовая позиция ~ Вернуть манипулятор в исходное состояние
Пассивное состояние 1 Убрать напряжение с двигателей, (внимание!) манипулятор опустится под своей силой тяжести
Управление звеньями 2 Управление звеньями клавишами Q/A, W/S, D/E, R/F, T/G, Y/H и захватом клавишами “вверх/вниз” (стрелки)
Управление в декартовом пространстве 3 Управление перемещением захвата по осям и вращение вокруг них клавишами Q/A, W/S, E/D, R/F, T/G, Y/H
MOVEJ 4 Прийти в точку по кратчайшему пути (указываются координаты точки)
MOVEL 5 Прийти в точку по прямой линии (указываются координаты точки)
MOVEC 6 Прийти в точку по радиусу через промежуточную точку (указываются координаты двух точек)
Обучение траектории 7 С двигателей будет снято напряжение, после чего можно руками перемещать манипулятор по нужной траектории, которая будет сохраняться
Воспроизвести траекторию 8 Выполнить траекторию, созданную в предыдущем режиме
Сохранить положение 9 Сохраняет положение манипулятора
Воспроизвести положение 0 Возвращает в ранее сохраненное положение
Калибровка =  

2) getJointGripperState

Позволяет получать положение звеньев и координаты текущей точки захвата.

3) example_lowcmd_send

Позволяет управлять двигателями на абстракции низкого непосредственно управляя моментом, скоростью и положением.

4) bigDemo

Программа демонстрирует использование высокоуровневого класса unitreeArm, который реализует некоторые методы управления из первого примера


Программирование посредством SDK

Взаимодействие с манипулятором (управляющие команды и обратная связь) осуществляется по интерфейсу Ethernet, протокол UDP.

SDK предоставляет классы и функции для высокоуровневого программирования манипулятора. Имеется готовая интеграция с ROS.

Работа с SDK робособаки и манипулятора основана на Ubuntu 18.04 и ROS версии Melodic.

Использование SDK

SDK зависит от многих сторонних инструментов, которые нужно установить. Некоторые из них даже включены в пакет SDK (Eigen and RDBL).

  • build-essential
    sudo apt install build-essential
    

Boost (версии 1.5.4 или выше):

dpkg -S /usr/include/boost/version.hpp # check boost version
sudo apt install libboost-dev # install boost

CMake (версии 2.8.3 или выше):

cmake --version # check cmake version
sudo apt install cmake # install cmake

GCC (GLIBCXX 3.4.22 или выше): проверка текущей версии:

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX

обновление:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9
sudo apt-get upgrade libstdc++6

Eigen (версии 3.3.9): Если более старая версия установлена, нужно удалить ее перед установкой новой. удаление:

cd /usr/include
sudo rm -rf ./eigen3

компиляция и установка свежей версии:

cd eigen-3.3.9
mkdir build
cd build
cmake ..
sudo make install
sudo ln -s /usr/local/include/eigen3 /usr/include/eigen3
sudo ln -s /usr/local/include/eigen3/Eigen /usr/local/include/Eigen

RBDL (версии 2.6.0, не требуется после версии SDK 2022.10.21):

cd rbdl-2.6.0
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=release ..
sudo make install
sudo su (input password)
echo /usr/local/lib >> /etc/ld.so.conf # set path
ldconfig
exit # Exit super administrator mode

Установка ROS (Melodic)

Используйте официальную документацию по установке ROS Melodic

Описание работы с ROS выходит за рамки данного руководства. Подробную информацию касаемо программирования посредством SDK и настройке среды ROS от производителя можно получить здесь