Dans Version / simulateur compatible TOPPERS Hakoba / ROS pour robot unique, la programmation de robot utilisant un robot de traçage de ligne basé sur ET Robocon est "réel sans machine" et "simulateur". Vous pouvez l'essayer avec "Achèvement interne". Dans cet article, je décrirai comment préparer un environnement de développement qui permette de programmer "sans polluer l'environnement" et "en utilisant l'éditeur habituel" en utilisant Docker.
Conformément à Procédure d'installation d'un simulateur pour un seul robot - Comment installer Unity, importer des packages et changer de méthode de communication, Unity Créez un environnement de simulation avec.
Il peut être utilisé de différentes manières, mais il doit être utilisé dans les conditions suivantes.
127.0.0.1
.Cette fois, nous ciblerons ʻARMv7-A`.
J'ai construit un fichier exécutable athrill lié statiquement et je l'ai copié dans un environnement propre en utilisant une construction en plusieurs étapes afin qu'il puisse être utilisé seul.
Dockerfile
FROM ubuntu:18.04 as athrill-builder
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \
git \
build-essential
WORKDIR /root
RUN git clone --depth 1 https://github.com/toppers/athrill.git && \
git clone --depth 1 https://github.com/toppers/athrill-target-ARMv7-A.git
WORKDIR /root/athrill-target-ARMv7-A/build_linux
RUN make timer32=true clean && \
make timer32=true -f Makefile.static
FROM ubuntu:18.04
COPY --from=athrill-builder /root/athrill/bin/linux/athrill2 /usr/local/bin
Enregistrez le Dockerfile
ci-dessus et faites unedocker build
.
$ docker build -t hako/athrill:v1.1.1 -f Dockerfile .
Vous pouvez voir que l'image du conteneur athrill a été créée.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hako/athrill v1.1.1 02a87297b3c2 3 hours ago 69MB
Clonez ev3rt-athrill-ARMv7-A et placez-y le Dockerfile suivant. Le Dockerfile est une construction en plusieurs étapes basée sur le conteneur ʻathrill Docker` créé précédemment.
$ cd ${YOUR_WORK_SPACE}
$ git clone https://github.com/toppers/ev3rt-athrill-ARMv7-A.git
$ cd ev3rt-athrill-ARMv7-A
$ vi Dockerfile
Dockerfile
FROM ubuntu:18.04 as ev3rt-builder
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \
git \
build-essential \
gcc-arm-none-eabi
WORKDIR /root
RUN git clone --depth 1 https://github.com/toppers/athrill.git && \
git clone --depth 1 https://github.com/toppers/athrill-target-ARMv7-A.git && \
git clone --depth 1 https://github.com/toppers/asp-athrill-mbed.git && \
git clone --depth 1 https://github.com/tlk-emb/mROS.git && \
sed -i '1i#include "kernel_cfg.h"' mROS/mros-lib/mros-src/api/ros.cpp
COPY . /root/ev3rt-athrill-ARMv7-A
WORKDIR /root/ev3rt-athrill-ARMv7-A
RUN mkdir -p cfg/cfg && \
cp cfg/cfg-linux-64 cfg/cfg/cfg && \
chmod +x cfg/cfg/cfg
WORKDIR /root/ev3rt-athrill-ARMv7-A/sdk/mros-obj
RUN make clean; make ATHRILL_BUILD_TARGET=ubuntu18
FROM hako/athrill:v1.1.1
RUN mkdir -p /root/ev3rt
COPY --from=ev3rt-builder /root/ev3rt-athrill-ARMv7-A/sdk/mros-obj/memory.txt /root/ev3rt/memory.txt
COPY --from=ev3rt-builder /root/ev3rt-athrill-ARMv7-A/sdk/mros-obj/device_config.txt /root/ev3rt/device_config.txt
COPY --from=ev3rt-builder /root/ev3rt-athrill-ARMv7-A/sdk/asp /root/ev3rt/asp
CMD ["athrill2", "-c1", "-t", "-1", "-m", "/root/ev3rt/memory.txt", "-d", "/root/ev3rt/device_config.txt", "/root/ev3rt/asp"]
./ev3rt-athrill-ARMv7-A
├── arch
├── cfg
├── configure
├── doc
├── Dockerfile <-Placé directement sous le projet
├── extension
├── include
├── kernel
├── library
├── LICENSE.md
├── MANIFEST
├── pdic
├── README.md
├── README.txt
├── sdk
├── syssvc
├── target
├── test
└── utils
Vérifiez avec sdk / mros-obj / device_config.txt
que l'adresse IP (DEBUG_FUNC_VDEV_TX_IPADDR) pour la communication Unity-athrill est 127.0.0.1
telle que définie dans Unity.
sdk/mros-obj/device_config.txt
DEBUG_FUNC_RESET_PC 0x18004400
DISABLE_SYMBOL_UNDERSCORE 1
DEVICE_CONFIG_TIMER_FD 400
DEBUG_FUNC_ENABLE_FT 1
DEBUG_FUNC_ENABLE_BT 1
DEBUG_FUNC_ENABLE_PROF 1
DEBUG_FUNC_ENABLE_WATCH 1
DEBUG_FUNC_ENABLE_SKIP_CLOCK 1
DEBUG_FUNC_ENABLE_SYNC_TIME 0
#DEBUG_FUNC_SHOW_SKIP_TIME 1
DEBUG_FUNC_ENABLE_VDEV 1
DEBUG_FUNC_VDEV_TX_PORTNO 54001
DEBUG_FUNC_VDEV_TX_IPADDR 127.0.0.1
DEBUG_FUNC_VDEV_RX_PORTNO 54002
DEBUG_FUNC_DISABLE_DEBUG_DATA_TYPE 1
Assurez-vous qu'il est correctement placé et créez le conteneur Docker. Cette fois, créez l'image en tant que hako / ev3rt: v1.0.0
.
$ cd ev3rt-athrill-ARMv7-A
$ docker build -t hako/ev3rt:v1.0.0 -f Dockerfile .
Vous pouvez voir que l'image du conteneur ev3rt a été créée.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hako/ev3rt v1.0.0 84e15941698e 3 hours ago 76.7MB
Procédure d'utilisation du simulateur pour un seul robot \ (version ARM ) Démarrez le simulateur Unity , lancez le simulateur de robot dans Unity.
Puis lancez roscore. Roscore doit être exécuté dans l'environnement d'adresse IP (sdk / mros-obj / mros_config / mros_sys_config.h) spécifié par mROS.
Ensuite, lancez le programme de ʻev3rt-athrill-ARMv7-A`. Veuillez spécifier l'image créée dans la version précédente.
$ docker run -it --rm --net host --name ev3rt hako/ev3rt:v1.0.0
En gros, cela devrait s'arrêter avec Ctrl-C, mais il semble que certains environnements ne s'arrêtent pas occasionnellement. Dans ce cas, vous pouvez l'arrêter avec la commande docker stop
.
$ docker stop ev3rt
athrill possède d'excellents outils de débogage. Si vous souhaitez déboguer, vous pouvez commencer à l'utiliser immédiatement en démarrant le conteneur Docker comme suit, par exemple.
$ docker run -it --rm --net host --name ev3rt hako/ev3rt:v1.0.0 athrill2 -c1 -i -t -1 -m /root/ev3rt/memory.txt -d /root/ev3rt/device_config.txt /root/ev3rt/asp
Les modifications de code peuvent être effectuées dans le répertoire ʻev3rt-athrill-ARMv7-A` à portée de main.
Par exemple, le programme principal pour déplacer un robot est décrit dans sdk / mros-obj / app.cpp
. Veuillez noter que le comportement du robot change de différentes manières.
$ vi sdk/mros-obj/app.cpp
Si vous ouvrez ʻev3rt-athrill-ARMv7-Aavec
Visual Studio Code` etc., il sera plus facile à développer. (L'éditeur n'est qu'un exemple, veuillez le sélectionner selon vos préférences.)
Après avoir apporté des corrections, suivez les étapes de «construction» et «exécution» à nouveau.
$ cd ev3rt-athrill-ARMv7-A
$ docker build -t hako/ev3rt:v1.0.0 -f Dockerfile . # BUILD
$ docker run -it --rm --net host --name ev3rt hako/ev3rt:v1.0.0 # EXECUTE
Nous avons mis au point un environnement dans lequel vous pouvez facilement modifier et déboguer le code source à portée de main tout en utilisant le conteneur. Le robot traceur de ligne est emballé avec les bases de la programmation de robot et est très éducatif. Veuillez essayer.