Установить Docker с официального сайта или запустить docker-сервер командой dockerd
.
Перейти в папку проекта Armbot. Armbot - название корневой папки проекта. Все пути в инструкции ниже, начинающиеся от Armbot, считаем от начала проекта.
1.1. Документация:
1.1.1. Перейти в папку с документацией: cd docs
1.1.2. Собрать документацию: ./gradlew copyClientResources :back:shadowJar build
(нужен доступ к интернету)
1.1.3. Перейти в папку: cd back/build/libs
(директория создается автоматически при сборке)
1.1.4. Запустить документацию из текущей папки: java -jar back-0.1-all.jar
(можно скопировать в любую другую папку и запустить оттуда)
Важно! По умолчанию в проекте задана Java 11. Поменять версию можно в файле Armbot/docs/back/build.gradle:
java {
sourceCompatibility = JavaVersion.toVersion("11")
targetCompatibility = JavaVersion.toVersion("11")
}
Для Java 8 укажите 1.8 вместо 11:
java {
sourceCompatibility = JavaVersion.toVersion("1.8")
targetCompatibility = JavaVersion.toVersion("1.8")
}
1.1.5. Открыть в браузере localhost:9080
1.2. Робот:
1.2.1. Перейти в корневую папку проекта Armbot
1.2.2. Собрать окружение для робота в docker-контейнер: sudo docker build -t armbot-img . --network=host --build-arg from=ubuntu:18.04
1.2.3. Сохранить docker-образ: sudo docker save armbot-img > armbot-img.tar
1.2.4. Заархивировать docker-образ: tar -zcvf armbot-img.tar.gz armbot-img.tar
1.3. Перенести на целевую машину
1.3.1. Скачать архив armbot-img.tar.gz на флешку. Скопировать на целевую машину
1.3.2. Разархивировать armbot-img.tar.gz: tar -xvf armbot-img.tar.gz
1.3.3. Загрузить docker-образ робота: sudo docker load < armbot-img.tar
Нужно прописать путь до проекта.
Добавьте переменную среды в файл .bashrc
(каталог /home): export ARMBOT_PATH='/home/e/ROS/Armbot'
(вместо '/home/e/ROS/Armbot' напишите свой путь к корневой папке проекта)
Примените изменения source ~/.bashrc
3.1. Дать права на запуск скриптов: sudo chmod +x scripts/*sh
3.1*. Исправить ошибку перед запуском скриптов (преобразование окончаний строк из формата DOS в формат UNIX):
Выполнить sed -i -e 's/\r$//' "$ARMBOT_PATH/scripts/fix.sh"
Выполнить ./scripts/fix.sh
* - нужно делать только при первом запуске скриптов
0*. Открыть скетч Armbot/src/armbot_move/control-arduino/move_arduino/move_arduino.ino
в Arduino IDE. Загрузить скетч.
* Пропустить этот шаг, если нужный скетч уже загружен на плату Arduino.
4.1. Режим разработки и отладки
Перейти в корень проекта. Открыть 4 окна терминала.
1 терминал:
- Запустить docker-контейнер с окружением для робота:
sudo ./scripts/docker/run_armbot_docker.sh
- Перейти в рабочую директорию
cd workspace
- Собрать проект
catkin_make
(если будут ошибки сборки, можно попробовать собрать пакеты изолированноcatkin_make_isolated
) - Прописать пути
source devel/setup.bash
- Запустить модель робота
roslaunch armbot_description armbot_npoa.rviz.launch
(или с моделью клавиатурыroslaunch armbot_description armbot_npoa.rviz.launch keyboard:=true
)
2 терминал:
- Зайти в docker-контейнер
sudo docker exec -ti armbot bash
- Перейти в рабочую директорию
cd workspace
- Прописать пути
source devel/setup.bash
- Запустить подписчик на движения
roslaunch armbot_move move.rviz.launch
3 терминал:
- Зайти в docker-контейнер
sudo docker exec -ti armbot bash
- Перейти в рабочую директорию
cd workspace
- Прописать пути
source devel/setup.bash
- Запустить подписчик движений на Arduino
rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0 _baud:=115200
4 терминал:
- Запустить публикацию движений с докером
./scripts/armbot.sh start
(или запустить робота из веб-интерфейса)
4.2. Режим запуска
Выполнить в терминале:
- Запустить docker-контейнер с окружением для робота:
./scripts/docker/run_armbot_docker.sh
- Перейти в рабочую директорию
cd workspace
- Собрать проект
catkin_make
(если будут ошибки сборки, можно попробовать собрать пакеты изолированноcatkin_make_isolated
) - Прописать пути
source devel/setup.bash
- Запустить модель робота без визуализации
roslaunch armbot_move run.launch
(или с визуализациейroslaunch armbot_move run.launch gui:=true
)
Файл command_description.txt. Пример описания команды:
direct:0.2872 4.83407e-10
right:-0.180411 -0.223463
left:-0.180411 0.223463
topLeft:0.237525 0.133799 0.0463589
На примере последней команды:
- topLeft - название команды
- 0.237525 - значение координаты X
- 0.133799 - значение координаты Y
- 0.0463589 - значение координаты Z (может отсутствовать, тогда берется значение из проекта)
Название команды пишется слева от двоеточия. После двоеточия через пробел указываются координаты. Координата Z необязательная.
Файл commands.txt. Пример описания перечня выполняемых команд:
right 6
left 4
Указывается название команды и через пробел значение задержки (в секундах) после выполнения команды.
6.1. Подготовить модель в Solidworks:
- Подготовить модель;
- Создать сборку из всех деталей (можно создать несколько сборок на каждое звено и одну общую - так будет удобнее работать);
- Рассчитать системы координат и расставить в модели по всем звеньям;
- По возможности задать материалы (или можно потом задать физичесакие характеристики каждого звена) - это нужно для симулятора Gazebo;
- Скачать и установить плагин SolidWorks to URDF Exporter (могут возникнуть проблемы, если Solidworks установлен не в папку по умолчанию);
- Задать links, joints, указать тип соединения, выбрать детали, которые будут включены в каждый link, выгрузить (ВАЖНО!!! Чтобы расчеты в модели велись по текущей программе, надо последний линк задать как "link_grip");
- Название папки задать как название пакета в проекте;
- Плагин сгенериует ROS-пакет.
6.2. Перенести пакет в проект.
6.3. Сформировать конфигурацию робота с помощью MoveIt Setup Assistant.
Запуск MoveIt Setup Assistant из Docker-контейнера: roslaunch moveit_setup_assistant setup_assistant.launch
Версию робота необходимо поменять в 2х местах:
- В проекте: Armbot/version (выводится в логи при запуске move, выводится в UI при запуске UI из проекта)
- В UI: Armbot/docs/back/src/main/resources (выводится в UI только если не может найти файл $ARMBOT_PATH/version)
В папке /home/armbot-info создайте файл Armbot.txt и укажите в нем нужные конфиги для робота. Содержимое этого файла можно поменять через пользовательский интерфейс.
Если не будет конфигов в файле Armbot.txt, то они будут браться по умолчанию из Armbot/src/armbot_move/src/settings.hpp
Пример файла с поддерживаемыми конфигами:
# Положение по оси Z
zPositionDefault = 0.06
zPositionDefaultDown = 0.012
# Ориентация по умолчанию
defaultOrientation_x = 0.999979
defaultOrientation_y = 0.00740374
defaultOrientation_z = 7.85675e-05
defaultOrientation_w = -3.01276e-06
# Позиция по умолчанию
defaultPosition_x = 0.105
defaultPosition_y = 0
defaultPosition_z = 0.05
# Сохранять координаты по вебсокету
saveWebSocket = true
# Сохранять координаты в файл
saveToFile = false