diff --git a/DISCLAIMER.de-DE.md b/DISCLAIMER.de-DE.md new file mode 100644 index 000000000..8bf33518e --- /dev/null +++ b/DISCLAIMER.de-DE.md @@ -0,0 +1,32 @@ +## HAFTUNGSAUSSCHLUSS + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +Das OpenBot-Projekt ist eine Open-Source-Initiative, die darauf abzielt, zugängliche Robotiklösungen für Bildungs-, Experimentier- und Freizeitzwecke bereitzustellen. Der folgende Haftungsausschluss beschreibt die Nutzungsbedingungen für die OpenBot-Software und Hardware-Designs. + +### Software-Haftungsausschluss + +- Die OpenBot-Software wird ohne jegliche ausdrückliche oder stillschweigende Gewährleistung bereitgestellt. +- Die Mitwirkenden und Betreuer des OpenBot-Projekts sind nicht verantwortlich für Schäden oder Datenverluste, die durch die Nutzung der Software entstehen können. +- Die Benutzer sind dafür verantwortlich, sicherzustellen, dass ihre Nutzung der OpenBot-Software allen relevanten Gesetzen und Vorschriften entspricht. +- Der Missbrauch der Software für böswillige oder unethische Zwecke ist strengstens untersagt. + +### Hardware-Haftungsausschluss + +- Die OpenBot-Hardware-Designs werden zu Bildungs- und Experimentierzwecken bereitgestellt und sind möglicherweise nicht für alle Anwendungsfälle geeignet. +- Die Benutzer sind dafür verantwortlich, sicherzustellen, dass ihre Implementierung der OpenBot-Hardware den Sicherheitsstandards und Vorschriften ihrer Region entspricht. +- Die Mitwirkenden und Betreuer des OpenBot-Projekts haften nicht für Verletzungen, Schäden oder Verluste, die durch den Bau, die Modifikation oder den Betrieb von Robotern auf Basis der OpenBot-Hardware-Designs entstehen. +- Die Benutzer werden aufgefordert, Vorsicht walten zu lassen und die Sicherheit zu priorisieren, wenn sie Roboter auf Basis von OpenBot bauen und betreiben. + +### Allgemeiner Haftungsausschluss + +- Die Mitwirkenden und Betreuer des OpenBot-Projekts lehnen jegliche Haftung für Schäden oder Verluste ab, die direkt oder indirekt aus der Nutzung oder dem Missbrauch der OpenBot-Software und Hardware-Designs entstehen. +- Die Benutzer werden ermutigt, die OpenBot-Ressourcen verantwortungsbewusst, ethisch und in Übereinstimmung mit allen geltenden Gesetzen und Vorschriften zu nutzen. + +Durch die Nutzung der OpenBot-Software und Hardware-Designs erkennen Sie an, dass Sie die Bedingungen dieses Haftungsausschlusses gelesen, verstanden und akzeptiert haben. diff --git a/DISCLAIMER.es-ES.md b/DISCLAIMER.es-ES.md new file mode 100644 index 000000000..186615205 --- /dev/null +++ b/DISCLAIMER.es-ES.md @@ -0,0 +1,32 @@ +## AVISO LEGAL + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +El proyecto OpenBot es una iniciativa de código abierto que tiene como objetivo proporcionar soluciones robóticas accesibles para fines educativos, experimentales y recreativos. El siguiente aviso legal describe los términos y condiciones de uso del software y los diseños de hardware de OpenBot. + +### Aviso Legal del Software + +- El software de OpenBot se proporciona "tal cual" sin ninguna garantía de ningún tipo, expresa o implícita. +- Los colaboradores y mantenedores del proyecto OpenBot no son responsables de ningún daño o pérdida de datos que pueda resultar del uso del software. +- Los usuarios son responsables de asegurarse de que su uso del software de OpenBot cumpla con todas las leyes y regulaciones relevantes. +- El uso indebido del software para fines maliciosos o poco éticos está estrictamente prohibido. + +### Aviso Legal del Hardware + +- Los diseños de hardware de OpenBot se proporcionan para fines educativos y experimentales y pueden no ser adecuados para todos los casos de uso. +- Los usuarios son responsables de asegurarse de que su implementación del hardware de OpenBot cumpla con los estándares de seguridad y regulaciones aplicables a su región. +- Los colaboradores y mantenedores del proyecto OpenBot no son responsables de ninguna lesión, daño o pérdida resultante de la construcción, modificación u operación de robots basados en los diseños de hardware de OpenBot. +- Se insta a los usuarios a actuar con precaución y priorizar la seguridad al construir y operar robots basados en OpenBot. + +### Aviso Legal General + +- Los colaboradores y mantenedores del proyecto OpenBot declinan cualquier responsabilidad por daños o pérdidas incurridas directa o indirectamente por el uso o mal uso del software y los diseños de hardware de OpenBot. +- Se anima a los usuarios a utilizar los recursos de OpenBot de manera responsable, ética y en cumplimiento con todas las leyes y regulaciones aplicables. + +Al usar el software y los diseños de hardware de OpenBot, usted reconoce que ha leído, entendido y aceptado los términos de este aviso legal. diff --git a/DISCLAIMER.fr-FR.md b/DISCLAIMER.fr-FR.md new file mode 100644 index 000000000..adbf835cd --- /dev/null +++ b/DISCLAIMER.fr-FR.md @@ -0,0 +1,32 @@ +## AVERTISSEMENT + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +Le projet OpenBot est une initiative open-source visant à fournir des solutions robotiques accessibles à des fins éducatives, expérimentales et récréatives. Le présent avertissement décrit les termes et conditions d'utilisation des logiciels et des conceptions matérielles d'OpenBot. + +### Avertissement sur le logiciel + +- Le logiciel OpenBot est fourni "tel quel" sans aucune garantie, expresse ou implicite. +- Les contributeurs et mainteneurs du projet OpenBot ne sont pas responsables des dommages ou pertes de données pouvant résulter de l'utilisation du logiciel. +- Les utilisateurs sont responsables de s'assurer que leur utilisation du logiciel OpenBot est conforme à toutes les lois et réglementations en vigueur. +- L'utilisation abusive du logiciel à des fins malveillantes ou contraires à l'éthique est strictement interdite. + +### Avertissement sur le matériel + +- Les conceptions matérielles d'OpenBot sont fournies à des fins éducatives et expérimentales et peuvent ne pas convenir à tous les cas d'utilisation. +- Les utilisateurs sont responsables de s'assurer que leur mise en œuvre du matériel OpenBot est conforme aux normes de sécurité et aux réglementations applicables dans leur région. +- Les contributeurs et mainteneurs du projet OpenBot ne sont pas responsables des blessures, dommages ou pertes résultant de la construction, modification ou utilisation de robots basés sur les conceptions matérielles d'OpenBot. +- Les utilisateurs sont invités à faire preuve de prudence et à prioriser la sécurité lors de la construction et de l'utilisation de robots basés sur OpenBot. + +### Avertissement général + +- Les contributeurs et mainteneurs du projet OpenBot déclinent toute responsabilité pour les dommages ou pertes encourus directement ou indirectement par l'utilisation ou la mauvaise utilisation des logiciels et conceptions matérielles d'OpenBot. +- Les utilisateurs sont encouragés à utiliser les ressources d'OpenBot de manière responsable, éthique et en conformité avec toutes les lois et réglementations applicables. + +En utilisant les logiciels et conceptions matérielles d'OpenBot, vous reconnaissez avoir lu, compris et accepté les termes de cet avertissement. \ No newline at end of file diff --git a/DISCLAIMER.md b/DISCLAIMER.md index 30899c5e7..9b794cb88 100644 --- a/DISCLAIMER.md +++ b/DISCLAIMER.md @@ -1,5 +1,13 @@ ## DISCLAIMER +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ The OpenBot project is an open-source initiative aimed at providing accessible robotics solutions for educational, experimental, and recreational purposes. The following disclaimer outlines the terms and conditions of use for the OpenBot software and hardware designs. ### Software Disclaimer diff --git a/DISCLAIMER.zh-CN.md b/DISCLAIMER.zh-CN.md new file mode 100644 index 000000000..a3ce4b850 --- /dev/null +++ b/DISCLAIMER.zh-CN.md @@ -0,0 +1,32 @@ +## 免责声明 + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +OpenBot 项目是一个开源计划,旨在为教育、实验和娱乐目的提供可访问的机器人解决方案。以下免责声明概述了 OpenBot 软件和硬件设计的使用条款和条件。 + +### 软件免责声明 + +- OpenBot 软件按“原样”提供,不提供任何明示或暗示的保证。 +- OpenBot 项目的贡献者和维护者不对使用该软件可能导致的任何损坏或数据丢失负责。 +- 用户有责任确保其使用 OpenBot 软件符合所有相关法律和法规。 +- 严禁将软件用于恶意或不道德的目的。 + +### 硬件免责声明 + +- OpenBot 硬件设计仅供教育和实验用途,可能不适用于所有使用场景。 +- 用户有责任确保其实施的 OpenBot 硬件符合其所在地区适用的安全标准和法规。 +- OpenBot 项目的贡献者和维护者不对基于 OpenBot 硬件设计的机器人在构建、修改或操作过程中导致的任何伤害、损坏或损失负责。 +- 用户在构建和操作基于 OpenBot 的机器人时应谨慎行事,并优先考虑安全。 + +### 一般免责声明 + +- OpenBot 项目的贡献者和维护者对因直接或间接使用或误用 OpenBot 软件和硬件设计而导致的任何损害或损失不承担任何责任。 +- 鼓励用户负责任地、道德地使用 OpenBot 资源,并遵守所有适用的法律和法规。 + +通过使用 OpenBot 软件和硬件设计,您确认您已阅读、理解并同意本免责声明的条款。 \ No newline at end of file diff --git a/README.de-DE.md b/README.de-DE.md index 9b38a4029..bf403f2b9 100644 --- a/README.de-DE.md +++ b/README.de-DE.md @@ -19,7 +19,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

OpenBot nutzt Smartphones als Gehirn für kostengünstige Roboter. Wir haben ein kleines Elektrofahrzeug entworfen, das etwa 50 Dollar kostet und als Roboterkörper dient. Unser Software-Stack für Android-Smartphones unterstützt fortgeschrittene Robotikanwendungen wie Personenerkennung und Echtzeit-Autonomes Fahren. diff --git a/README.es-ES.md b/README.es-ES.md new file mode 100644 index 000000000..12a258f30 --- /dev/null +++ b/README.es-ES.md @@ -0,0 +1,99 @@ + + Banner + + +

Convirtiendo Smartphones en Robots

+ +

+ GitHub build + GitHub issues + GitHub pull requests + GitHub forks + GitHub stars + Github downloads + Github size + Github license +

+ +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +OpenBot aprovecha los smartphones como cerebros para robots de bajo costo. Hemos diseñado un pequeño vehículo eléctrico que cuesta alrededor de $50 y sirve como cuerpo del robot. Nuestra pila de software para smartphones Android soporta cargas de trabajo avanzadas de robótica, como el seguimiento de personas y la navegación autónoma en tiempo real. + +## Comienza con OpenBot + +- Lee el [Aviso Legal](DISCLAIMER.es-ES.md) +- Construye tu propio [Cuerpo de Robot](body/README.es-ES.md) +- Flashea el [Firmware de Arduino](firmware/README.es-ES.md) +- Instala las [Aplicaciones Android](android/README.es-ES.md) +- Conduce el robot a través de un [Controlador](controller/README.es-ES.md) +- Entrena tu propia [Política de Conducción](policy/README.es-ES.md) + +## Obtén el código fuente + +- Puedes descargar el repositorio como un [archivo zip](https://github.com/intel-isl/OpenBot/archive/master.zip) y extraerlo en una carpeta de tu elección. +- Puedes clonar el repositorio de OpenBot desde GitHub con el siguiente comando: + ```bash + git clone https://github.com/intel-isl/OpenBot.git + ``` +- Puedes hacer un fork del repositorio de OpenBot y luego clonar tu copia local. Esto es recomendable, especialmente si deseas [contribuir](CONTRIBUTING.es-ES.md). + +## Videos + + + youtube video + + + + youtube video + + +## Proyectos interesantes usando OpenBot + +Ya hay muchos proyectos interesantes usando OpenBot. A continuación, una pequeña selección. Haz clic en las imágenes para ser redirigido a los respectivos proyectos. + +

+ + Tank OpenBot + + + 2WD OpenBot + + + Cardboard OpenBot + + + Baby Yoda OpenBot + +

+ +## Contacto + +- Únete a nuestro canal de [Slack](https://join.slack.com/t/openbot-community/shared_invite/zt-jl8ygxqt-WNRNi9yzh7Lu60qui6Nh6w) para conectarte con la comunidad de OpenBot. +- Contáctanos vía [Email](mailto:openbot.team@gmail.com) + +## Contribuir + +Por favor, lee las [directrices de contribución](CONTRIBUTING.md). Si no estás seguro de por dónde empezar, echa un vistazo a los [issues abiertos](https://github.com/intel-isl/OpenBot/issues). + +## Cita + +Por favor, cita nuestro [artículo](https://arxiv.org/abs/2008.10631) si usas OpenBot. + +```bib +@inproceedings{mueller2021openbot, + title = {OpenBot: Turning Smartphones into Robots}, + author = {M{\"u}ller, Matthias y Koltun, Vladlen}, + booktitle = {Proceedings of the International Conference on Robotics and Automation (ICRA)}, + year = {2021}, +} +``` + + + Footer + diff --git a/README.fr-FR.md b/README.fr-FR.md index 4e7bb433b..300d164d8 100644 --- a/README.fr-FR.md +++ b/README.fr-FR.md @@ -19,7 +19,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

OpenBot utilise les smartphones comme cerveaux pour des robots à faible coût. Nous avons conçu un petit véhicule électrique qui coûte environ 50 $ et sert de corps de robot. Notre pile logicielle pour smartphones Android prend en charge des charges de travail robotiques avancées telles que le suivi de personnes et la navigation autonome en temps réel. diff --git a/README.md b/README.md index 53d8f4757..91c7fd813 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

OpenBot leverages smartphones as brains for low-cost robots. We have designed a small electric vehicle that costs about $50 and serves as a robot body. Our software stack for Android smartphones supports advanced robotics workloads such as person following and real-time autonomous navigation. diff --git a/README.zh-CN.md b/README.zh-CN.md index 9f13f0144..0ab9bd4ea 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -19,7 +19,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

OpenBot 利用智能手机作为低成本机器人的大脑。我们设计了一款小型电动车,成本约为 50 美元,作为机器人的主体。我们的 Android 智能手机软件栈支持高级机器人工作负载,如跟随人和实时自主导航。 diff --git a/android/README.de-DE.md b/android/README.de-DE.md index ef9df9632..2879c374e 100644 --- a/android/README.de-DE.md +++ b/android/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## Funktionen diff --git a/android/README.es-ES.md b/android/README.es-ES.md new file mode 100644 index 000000000..831063563 --- /dev/null +++ b/android/README.es-ES.md @@ -0,0 +1,68 @@ +# Aplicaciones Android + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +## Características + +Haz clic en los enlaces a continuación para leer sobre las características de las aplicaciones. + +- [Aplicación Robot](robot/README.es-ES.md) +- [Aplicación Controlador](controller/README.es-ES.md) + +## Instalar las aplicaciones + +La forma más fácil de obtener cualquiera de las aplicaciones es descargándola directamente al teléfono usando el código QR correspondiente. Si estás en el navegador del teléfono, también puedes hacer clic en el código QR. Luego puedes abrir el apk en tu teléfono e [instalarlo](https://www.lifewire.com/install-apk-on-android-4177185). Ten en cuenta que el apk solo está firmado con una clave de depuración. + + + + + + + + + + +
+ 🤖 App + + + + 🎮 App + +
🤖 App🎮 App
+ +Alternativamente, puedes descargar los apks desde los assets de cualquier [release](https://github.com/intel-isl/OpenBot/releases). Si deseas la última aplicación de la rama principal, también puedes descargarla desde los artefactos de compilación [aquí](https://github.com/intel-isl/OpenBot/actions?query=workflow%3A%22Java+CI+with+Gradle%22). Ten en cuenta que puede no ser estable. Si deseas realizar cambios en la aplicación más adelante, sigue los pasos a continuación para compilar la aplicación y desplegarla en tu teléfono. + +## Compilar las aplicaciones + +### Requisitos previos + +- [Android Studio Electric Eel | 2022.1.1 o posterior](https://developer.android.com/studio/index.html) para compilar e instalar los apks. +- Dispositivo Android y entorno de desarrollo Android con API mínima 21. +- Actualmente, usamos API 33 como SDK de compilación y API 32 como SDK de destino. Debería instalarse automáticamente, pero si no es así, puedes instalar el SDK manualmente. Ve a Android Studio -> Preferences -> Appearance & Behaviour -> System Settings -> Android SDK. Asegúrate de que API 33 esté marcada y haz clic en aplicar. + +![Android SDK](../docs/images/android_studio_sdk.jpg) + +### Proceso de compilación + +1. Abre Android Studio y selecciona *Open an existing Android Studio project*. +2. Selecciona el directorio OpenBot/android y haz clic en OK. +3. Si deseas instalar la [aplicación OpenBot](app/README.es-ES.md) asegúrate de seleccionar la configuración *app*. Si deseas instalar la [aplicación Controlador](controller/README.es-ES.md), selecciona la configuración *controller*. Confirma la sincronización de Gradle si es necesario. Para realizar una sincronización de Gradle manualmente, haz clic en el icono de gradle. + ![Gradle Sync](../docs/images/android_studio_bar_gradle.jpg) +4. Conecta tu dispositivo Android y asegúrate de que la depuración USB en las [opciones de desarrollador](https://developer.android.com/studio/debug/dev-options) esté habilitada. Dependiendo de tu entorno de desarrollo, pueden ser necesarios [otros pasos](https://developer.android.com/studio/run/device). Ahora deberías ver tu dispositivo en la barra de navegación superior. + ![Phone](../docs/images/android_studio_bar_phone.jpg) +5. Haz clic en el botón de ejecutar (la flecha verde) o selecciona Run > Run 'android' desde el menú superior. Es posible que necesites reconstruir el proyecto usando Build > Rebuild Project. + ![Run](../docs/images/android_studio_bar_run.jpg) +6. Si te pregunta si deseas usar Instant Run, haz clic en *Proceed Without Instant Run*. + +### Solución de problemas + +#### Versiones + +Si recibes un mensaje como `The project is using an incompatible version (AGP 7.4.0) of the Android Gradle plugin. Latest supported version is AGP 7.3.0` necesitas actualizar Android Studio o degradar tu plugin de gradle. Puedes leer más sobre la compatibilidad de versiones entre Android Studio y el plugin de gradle [aquí](https://developer.android.com/studio/releases/gradle-plugin#android_gradle_plugin_and_android_studio_compatibility). \ No newline at end of file diff --git a/android/README.fr-FR.md b/android/README.fr-FR.md index 019777d72..2d18fa151 100644 --- a/android/README.fr-FR.md +++ b/android/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## Fonctionnalités diff --git a/android/README.md b/android/README.md index 232ec7748..22b0a6dbb 100755 --- a/android/README.md +++ b/android/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## Features diff --git a/android/README.zh-CN.md b/android/README.zh-CN.md index 96ab630cd..485c7486b 100644 --- a/android/README.zh-CN.md +++ b/android/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## 功能 diff --git a/android/controller/README.de-DE.md b/android/controller/README.de-DE.md index 084f357c4..9afe12934 100644 --- a/android/controller/README.de-DE.md +++ b/android/controller/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Diese Android-App dient als `Fernsteuerung` für das [OpenBot](https://www.openbot.org) Fahrzeug. Im Grunde erfüllt sie eine ähnliche Funktion wie ein PS3/4- oder Xbox-Controller, läuft jedoch auf einem anderen Android-Gerät. diff --git a/android/controller/README.es-ES.md b/android/controller/README.es-ES.md new file mode 100644 index 000000000..dcd7c6694 --- /dev/null +++ b/android/controller/README.es-ES.md @@ -0,0 +1,82 @@ +# Controller App + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +Esta aplicación de Android sirve como un `control remoto` para el vehículo [OpenBot](https://www.openbot.org). Básicamente, realiza una función similar a la de un control remoto de PS3/4 o Xbox, pero ejecutándose en otro dispositivo Android. + +## Conexión + +Cuando se inicia la aplicación del controlador, intenta conectarse inmediatamente al robot. Vemos la siguiente pantalla: + +

+ +

+ +Para conectar el controlador al robot, coloca la configuración de control de la aplicación del robot en el modo **Phone**. + +

+ + +

+ +También puedes conectarte al controlador desde el `FreeRoamFragment` seleccionando el teléfono como el controlador: + +

+ +

+ +En unos segundos, escucharás un pitido y el controlador cambiará su pantalla a: + +

+ +

+ +Aquí puedes seleccionar conducir el robot inclinando el teléfono o utilizando los controles en pantalla. + +***Nota:*** Esto debería ser suficiente para conectar, pero si la conexión no se puede establecer después de 30 segundos, cambia la configuración de `Control` en la aplicación del robot a `Gamepad` y luego a `Phone` nuevamente para reiniciar la conexión. Si eso falla, cierra la aplicación del controlador y vuelve a iniciarla. Cambia el modo de Control nuevamente en la aplicación del robot. + +## Operación + +### Controles en pantalla +Este modo permite al usuario controlar el coche robot mediante dos deslizadores en modo `Dual Drive`. Puedes girar a la izquierda/derecha moviendo el pulgar del deslizador hacia arriba y hacia abajo en cada lado. Las ruedas de cada lado giran hacia adelante/atrás cuando mueves el pulgar por encima/debajo del centro del deslizador. + +

+ +

+ +También puedes configurar los indicadores de giro a la izquierda/derecha + + +haciendo clic en las flechas en la parte superior izquierda de la pantalla, y el botón rojo entre ellas para cancelar. + +### Inclinar para conducir +El controlador también puede usar su sensor de movimiento acelerómetro para conducir el robot. Si seleccionas esta opción, el controlador entrará en un modo de pantalla completa (Zen) con solo el video mostrando y los pedales de `freno` y `acelerador`. Para salir de este modo, toca dos veces la pantalla. + +Aquí hay una imagen de la pantalla del `modo de inclinación`: + +

+ +

+ +Usa los botones de `acelerador` y `freno` para moverte hacia adelante/atrás. + +- Presionar el `acelerador` acelerará el robot a toda velocidad en 2 segundos. Cuando sueltes el botón, el robot reducirá la velocidad hasta detenerse (la velocidad de parada se establece en 0% de la velocidad máxima, se puede ajustar). +- Presionar el botón de `freno` detendrá inmediatamente el robot. Si mantenemos el freno durante otro segundo, el robot comenzará a moverse hacia atrás hasta alcanzar la velocidad máxima en reversa en un segundo. Cuando soltemos el freno, el robot se detendrá. +- Dirigimos el robot inclinando el controlador hacia la izquierda o derecha. + +## Desarrollo Futuro + +Algunas de las características que estamos buscando agregar son: + +- Añadir información en el controlador para más sensores del robot, como el nivel de batería y la velocidad. +- Transmisión de video desde la cámara del robot al controlador. +- Usar el sensor giroscópico del controlador para controlar el robot. +- Enviar eventos de choque y golpe desde el robot al controlador para una experiencia más realista. + +Aquí tienes una [Descripción Técnica](../../docs/technical/OpenBotController.pdf) de la aplicación del controlador. \ No newline at end of file diff --git a/android/controller/README.fr-FR.md b/android/controller/README.fr-FR.md index 3849eb327..90685eeea 100644 --- a/android/controller/README.fr-FR.md +++ b/android/controller/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Cette application Android sert de `télécommande` pour le véhicule [OpenBot](https://www.openbot.org). Elle fonctionne de manière similaire à une manette PS3/4 ou Xbox, mais sur un autre appareil Android. diff --git a/android/controller/README.md b/android/controller/README.md index 09175ec4d..08e84d26c 100644 --- a/android/controller/README.md +++ b/android/controller/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

This Android app serves as a `remote controller` for the [OpenBot](https://www.openbot.org) vehicle. Basically it performs similar function as PS3/4 or Xbox remote controller, but running on another Android device. diff --git a/android/controller/README.zh-CN.md b/android/controller/README.zh-CN.md index d4482bbba..e8e5cfa14 100644 --- a/android/controller/README.zh-CN.md +++ b/android/controller/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

这款安卓应用程序作为 [OpenBot](https://www.openbot.org) 车辆的 `远程控制器`。基本上,它的功能类似于PS3/4或Xbox的遥控器,但运行在另一台安卓设备上。 diff --git a/android/robot/README.de-DE.md b/android/robot/README.de-DE.md index 17064684f..bc8f025ad 100644 --- a/android/robot/README.de-DE.md +++ b/android/robot/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## HAFTUNGSAUSSCHLÜSSE diff --git a/android/robot/README.es-ES.md b/android/robot/README.es-ES.md new file mode 100644 index 000000000..1a9fd9272 --- /dev/null +++ b/android/robot/README.es-ES.md @@ -0,0 +1,252 @@ +# Robot App + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +## AVISOS + +1. **Seguridad:** Asegúrate siempre de operar en un entorno seguro. Ten en cuenta que tu teléfono podría dañarse en una colisión. Se requiere un cuidado especial al usar el control automatizado (por ejemplo, seguimiento de personas o política de conducción). Asegúrate de tener siempre un controlador de juegos conectado y estar familiarizado con la asignación de teclas para poder detener el vehículo en cualquier momento. ¡Usa bajo tu propio riesgo! +2. **Aplicación en desarrollo:** La aplicación está en desarrollo y puede fallar o mostrar un comportamiento inesperado dependiendo del modelo de tu teléfono y la versión del sistema operativo. Asegúrate de probar todas las funcionalidades sin las ruedas conectadas. ¡Usa bajo tu propio riesgo! + +## Pantallas de la Aplicación + +### Menú Principal + +La aplicación comienza con una pantalla de menú que muestra todas las pantallas disponibles. La pantalla de configuración se puede abrir con un clic en el ícono en la esquina superior derecha. Al hacer clic en los otros íconos, el usuario puede acceder a varias pantallas cuyas funcionalidades se explican a continuación. + +

+Menú Principal +Menú de Configuración +Menú de Configuración +Menú de Configuración +

+ +### Menú de Configuración + +#### Conexión USB + +Toca el ícono USB para abrir las opciones USB. El menú desplegable se usa para configurar la velocidad en baudios. El valor predeterminado es 115200 y no deberías necesitar cambiarlo a menos que modifiques el firmware de Arduino. La aplicación intentará conectarse automáticamente, pero en caso de que encuentres problemas, puedes usar este interruptor para desconectar/conectar. + +

+Conectando dispositivo +Botón de desconexión +

+ +#### Permisos + +Aquí puedes verificar los permisos de la aplicación y ajustarlos si es necesario. + +#### Transmisión de Video + +Puedes elegir entre `WebRTC` y `RTSP` para transmitir video a un dispositivo externo. La aplicación controladora del teléfono y el servidor node-js necesitan que esto esté configurado en `WebRTC`. El controlador de Python espera que la transmisión esté configurada en `RTSP`. + +#### Conexión Bluetooth + +Asegúrate de que tu dispositivo Android tenga soporte BLE (Bluetooth Low Energy). Si tu versión de Android es mayor o igual a 7.0, también necesitas activar el servicio de ubicación y permitir el permiso de ubicación en la configuración para buscar dispositivos BLE cercanos. Para habilitar BLE, cambia el modo de conectividad de USB a Bluetooth en el menú de configuración. Obtendrás un ícono de Bluetooth en la parte superior de la pantalla de inicio. Toca el ícono de Bluetooth para iniciar el escaneo BLE; toma 4 segundos escanear y obtener una lista de todos los dispositivos OpenBot BLE cercanos. Conéctate con tu OpenBot tocando el botón `Conectar`. Después de una conexión exitosa, el botón `Conectar` cambiará a `Desconectar`. Ahora puedes volver a la pantalla de inicio. + +

+Dispositivos BLE +Conectando dispositivo +Botón de desconexión +

+ +### Exploración Libre + +Exploración Libre ofrece un control simple del robot con actualizaciones en tiempo real e información sobre la batería, velocidad y distancia de las superficies. + +

+Exploración Libre +

+ +- **Batería**: El ícono de la batería muestra los niveles de batería en tiempo real del robot conectado. +- **Estado de Conducción**: Hay 3 estados de conducción mostrados en la vista: + - D -> Conducción, cuando el robot está avanzando + - N -> Neutro, cuando el robot está estacionario + - R -> Reversa, cuando el robot está retrocediendo + El volante gira proporcionalmente al ángulo de dirección. +- **Velocidad**: El velocímetro muestra la velocidad del robot. +- **Sonar**: La distancia libre frente al robot en cm. +- **Control**: Controlador, Modo de Conducción y Velocidad se usan para controlar la configuración del robot como se describe en la [sección de control](#control). + +### Recolección de Datos + +Interfaz simple para la recolección de conjuntos de datos. + +

+Recolección de Datos +

+ +- **Servidor**: Si tienes la [aplicación web](../../policy#web-app) para el entrenamiento de políticas en funcionamiento, puedes seleccionarla aquí para cargar datos automáticamente. +- **Resolución de Vista Previa**: Se usa para cambiar entre resoluciones de vista previa de la cámara. Hay 3 configuraciones: + - ***FULL_HD*** (1920x1080p) + - ***HD*** (1280x720p) + - ***SD*** (640x360) +- **Resolución del Modelo**: Se usa para cambiar entre resoluciones de imágenes guardadas para entrenar diferentes modelos. +- **Guardar/Descartar los Datos Recogidos**: el proceso de recolección de datos se puede controlar desde la pantalla o de forma remota, por ejemplo, desde un controlador Bluetooth. Al usar un controlador Bluetooth, puedes: + - Presionar el **botón A** para **iniciar** el proceso de recolección de datos + - Presionar el **botón A nuevamente** para **detener** la recolección de datos y guardar los datos recogidos en un archivo .zip + - Alternativamente, presionar el **botón R1** para **detener** la recolección de datos **sin guardar** los datos recogidos (por ejemplo, debido a una colisión inesperada con el entorno) + - Recuerda usar el fragmento de asignación de controladores para asegurarte de estar usando los botones correctos. + +### Asignación de Controladores + +Interfaz simple para verificar la asignación de botones y joysticks de un controlador BT conectado. + +

+Asignación de Controladores +

+ +### Información del Robot + +Interfaz simple para obtener información del robot y probar la funcionalidad básica. El **Tipo de Robot** configurado en el firmware se muestra como texto y animación. Las marcas de verificación en las secciones **Sensores**, **Odómetro de Ruedas** y **LEDs** muestran qué características son compatibles con el robot conectado. La sección **Lecturas** proporciona las mediciones de sensores más importantes. En la sección **Enviar Comandos**, los usuarios pueden enviar comandos básicos de motor presionando los botones correspondientes y controlar los LEDs delanteros y traseros con un deslizador. + +

+Información del Robot +

+ +### Piloto Automático + +Interfaz simple para ejecutar modelos de piloto automático. + +

+Piloto Automático +

+ +- **Servidor**: Si tienes la [aplicación web](../../policy#web-app) para el entrenamiento de políticas en funcionamiento, puedes seleccionarla aquí y enviar modelos de piloto automático entrenados al robot. +- **Modelo**: Elige un modelo entrenado para usar en el modo de piloto automático. +- **Dispositivo**: Usa CPU, GPU o NNAPI para la inferencia (más detalles [aquí](#dispositivo)). +- **Hilos**: Número de hilos a usar (solo hace una diferencia cuando se selecciona CPU como dispositivo). +- **Control**: Controlador, Modo de Conducción y Velocidad se usan para controlar la configuración del robot como se describe en la [sección de control](#control). + +### Seguimiento de Objetos + +Interfaz simple para el seguimiento de objetos de 80 clases diferentes. Una breve descripción de los diferentes modelos de IA para el seguimiento de objetos y los puntos de referencia de rendimiento se pueden encontrar en [Gestión de Modelos](#gestión-de-modelos). + +

+Texto alternativo +Texto alternativo +

+ +- **Velocidad Dinámica**: reduce la velocidad del robot en "Modo Automático" si se acerca al objeto rastreado. + La velocidad se escala en función del área del cuadro delimitador (funciona mejor en orientación horizontal). +- **Modelo**: Elige un detector de objetos basado en el rendimiento de tu teléfono (ver más abajo para [resultados de referencia](#punto-de-referencia)). +- **Objeto**: Elige el objeto que deseas rastrear. Los modelos pueden detectar las 80 [clases de objetos COCO](https://tech.amikelive.com/node-718/what-object-categories-labels-are-in-coco-dataset/). +- **Confianza**: Umbral de confianza para determinar si se aceptan las detecciones. Aumenta si obtienes detecciones falsas, disminuye si el objeto de interés no se detecta. +- **Dispositivo**: Usa CPU, GPU o NNAPI para la inferencia (más detalles [aquí](#dispositivo)). +- **Hilos**: Número de hilos a usar (solo hace una diferencia cuando se selecciona CPU como dispositivo). +- **Control**: Controlador, Modo de Conducción y Velocidad se usan para controlar la configuración del robot como se describe en la [sección de control](#control). + +### Navegación a Punto de Destino + +Ten en cuenta que este fragmento requiere ARCore y permiso de cámara. Si tu dispositivo no es compatible con ARCore y continúas de todos modos, la aplicación se bloqueará. En esta pantalla puedes especificar un objetivo a través de un vector 2D con respecto a la posición y orientación actual del robot. El vector 2D contiene la distancia al frente y a la izquierda del robot en metros. Ambos valores también pueden ser negativos y corresponder a la parte trasera y derecha del robot en ese caso. Después de especificar el objetivo y presionar `Iniciar`, el robot ejecutará una política de IA que intentará alcanzar el objetivo mientras evita obstáculos. + +

+Texto alternativo +

+ +### Gestión de Modelos + +Todos los modelos están cuantizados para un mejor rendimiento en dispositivos integrados. Consulta la sección a continuación para una breve descripción de los modelos disponibles y los resultados de referencia. La [precisión media promedio (mAP)](https://kharshit.github.io/blog/2019/09/20/evaluation-metrics-for-object-detection-and-segmentation) se calcula en el conjunto de validación del conjunto de datos [COCO Detection 2017](https://cocodataset.org/#detection-2017). Cada modelo se ejecuta durante aproximadamente 1 minuto; el tiempo de inferencia se promedia en los últimos 100 fotogramas y se informa en fotogramas por segundo (fps). Ten en cuenta que los modelos con mayor resolución de entrada pueden ser mejores para objetos más pequeños a pesar de un mAP más bajo. + +

+Gestión de Modelos +

+ +### Punto de Referencia + +#### Teléfonos + +| Nombre del Modelo | Chipset | RAM | SO | +|-------------------|----------------|------|----| +| Samsung S22 Ultra | Exynos 2200 | 12GB | 12 | +| Samsung S20FE 5G | Snapdragon 865 | 6GB | 12 | +| Huawei P30 Pro | Kirin 980 | 8GB | 10 | +| Google Pixel 6XL | Google Tensor | 12GB | 12 | +| Xiaomi Mi9 | Snapdragon 855 | 6GB | 10 | +| Google Pixel 4XL | Snapdragon 855 | 6GB | 13 | + +#### MobileNetV1-300 (preinstalado) - mAP: 18% + +Detector de objetos SSD con [MobileNet V1](https://tfhub.dev/tensorflow/lite-model/ssd_mobilenet_v1/1/metadata/2) como backbone y resolución de entrada de 300x300. + +|teléfono/dispositivo (fps)| CPU | GPU | NNAPI | +|--------------------------|-----|-----|-------| +| Samsung S22 Ultra | 33 | 13 | 30 | +| Samsung S20FE 5G | 34 | 57 | 87 | +| Huawei P30 Pro | 36 | 25 | 10 | +| Google Pixel 6XL | 35 | 42 | 53 | +| Xiaomi Mi9 | 22 | 41 | 33 | +| Google Pixel 4XL | 37 | 36 | 45 | + +#### MobileNetV3-320 - mAP: 16% + +Detector de objetos SSD con MobileNet V3 como backbone y resolución de entrada de 320x320. + +|teléfono/dispositivo (fps)| CPU | GPU | NNAPI | +|--------------------------|-----|-----|-------| +| Samsung S22 Ultra | 30 | 17 | 30 | +| Samsung S20FE 5G | 34 | 42 | 28 | +| Huawei P30 Pro | 32 | 27 | 23 | +| Google Pixel 6XL | 33 | 43 | 27 | +| Xiaomi Mi9 | 20 | 45 | 10 | +| Google Pixel 4XL | 32 | 38 | 21 | + +#### YoloV4-tiny-224 - mAP: 22% + +Versión pequeña de [YoloV4](https://arxiv.org/abs/2004.10934) con resolución de entrada de 224x224. + +|teléfono/dispositivo (fps)| CPU | GPU | NNAPI | +|--------------------------|-----|-----|-------| +| Samsung S22 Ultra | 31 | 12 | 31 | +| Samsung S20FE 5G | 30 | 21 | 14 | +| Huawei P30 Pro | 27 | 17 | 22 | +| Google Pixel 6XL | 29 | 24 | 19 | +| Xiaomi Mi9 | 16 | 14 | 9.3 | +| Google Pixel 4XL | 22 | 19 | 14 | + +#### YoloV4-tiny-416 - mAP: 29% + +Versión pequeña de [YoloV4](https://arxiv.org/abs/2004.10934) con resolución de entrada de 416x416. + +|teléfono/dispositivo (fps)| CPU | GPU | NNAPI | +|--------------------------|-----|-----|-------| +| Samsung S22 Ultra | 13 | 9.8 | 13 | +| Samsung S20FE 5G | 12 | 9.4 | 7.7 | +| Huawei P30 Pro | 8.4 | 7.6 | 6.9 | +| Google Pixel 6XL | 10 | 9.6 | 7.2 | +| Xiaomi Mi9 | 9.0 | 7.3 | 5.0 | +| Google Pixel 4XL | 7.2 | 7.4 | 6.2 | + +#### YoloV4-224 - mAP: 40% + +[YoloV4](https://arxiv.org/abs/2004.10934) con resolución de entrada de 224x224. + +|teléfono/dispositivo (fps)| CPU | GPU | NNAPI | +|--------------------------|-----|-----|-------| +| Samsung S22 Ultra | 3.7 | 5.6 | 3.5 | +| Samsung S20FE 5G | 3.1 | 7.1 | 4.2 | +| Huawei P30 Pro | 2.4 | 6.2 | 0.7 | +| Google Pixel 6XL | 2.7 | 11 | 0.9 | +| Xiaomi Mi9 | 2.1 | 6.4 | 1.7 | +| Google Pixel 4XL | 1.8 | 5.0 | 3.7 | + +#### YoloV5s-320 - mAP: 28% + +[YoloV5](https://github.com/ultralytics/yolov5) con resolución de entrada de 320x320. + +|teléfono/dispositivo (fps)| CPU | GPU | NNAPI | +|--------------------------|-----|-----|-------| +| Samsung S22 Ultra | 21 | 10 | 21 | +| Xiaomi Mi9 | 13 | 15 | 0.8 | +| Google Pixel 4XL | 12 | 17 | 18 | + +#### YoloV5s-640 - mAP: 34% + +[YoloV5](https://github.com/ultralytics/yolov5) con resolución de entrada de 640x640. + +|teléfono/dispositivo (fps)| \ No newline at end of file diff --git a/android/robot/README.fr-FR.md b/android/robot/README.fr-FR.md index bd21e0cd1..33f0203cd 100644 --- a/android/robot/README.fr-FR.md +++ b/android/robot/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## AVERTISSEMENTS @@ -382,11 +383,4 @@ La [démo Android de détection d'objets TensorFlow Lite](https://github.com/ten ## Suivant (optionnel) -Entraînez votre propre [Driving Policy](../../policy/README.md) - -

- English | - 简体中文 | - Deutsch | - Français -

\ No newline at end of file +Entraînez votre propre [Driving Policy](../../policy/README.md) \ No newline at end of file diff --git a/android/robot/README.md b/android/robot/README.md index 4fe129052..ec79fe2f8 100644 --- a/android/robot/README.md +++ b/android/robot/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## DISCLAIMERS diff --git a/android/robot/README.zh-CN.md b/android/robot/README.zh-CN.md index 2275b330f..bf75e0ca0 100644 --- a/android/robot/README.zh-CN.md +++ b/android/robot/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## 免责声明 diff --git a/body/README.de-DE.md b/body/README.de-DE.md index 21fd74735..1583f44b5 100644 --- a/body/README.de-DE.md +++ b/body/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Sie können einen [Ready-to-Run (RTR)](rtr) OpenBot auf Amazon kaufen: diff --git a/body/README.es-ES.md b/body/README.es-ES.md new file mode 100644 index 000000000..a2e7c215d --- /dev/null +++ b/body/README.es-ES.md @@ -0,0 +1,61 @@ +# OpenBot: Cuerpo del Robot + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +Puedes comprar un OpenBot [listo para usar (RTR)](rtr) en Amazon: +- [RTR-TT](https://buy.openbot.org/rtr-tt) +- [RTR-520](https://buy.openbot.org/rtr-520) + +Para pedidos más grandes, por favor contáctanos por correo electrónico. + +## Construyendo el tuyo propio + +Puedes construir cualquier cuerpo de robot con ruedas alrededor de un microcontrolador como el Arduino Nano para usar con el conjunto de software de OpenBot. Hemos diseñado un [cuerpo impreso en 3D](diy) para un robot con ruedas que se basa en hardware de hobby de bajo costo y fácilmente disponible. [OpenBot Lite](lite) es una variante más pequeña y simplificada de la versión DIY de OpenBot desarrollada para la educación. Incluso si no deseas construirlo, puedes encontrar útiles las [guías en video paso a paso](lite/#step-by-step-video-guides). También hemos diseñado un [cuerpo impreso en 3D](rc_truck) para camiones RC 1:16 disponibles comercialmente (como [este](https://www.amazon.de/dp/B00M3J7DJW)). También proporcionamos planos para construir un [vehículo multi-terreno](mtv), como una plataforma de propósito general para proyectos al aire libre utilizando el marco de OpenBot. + +A continuación, se presentan varios ejemplos con instrucciones de construcción y más detalles: + + + + + + + + + + + + + + + + +
+ DIY + + + + Lite + + + + RC Truck + + + + Multi-Terrain Vehicle + + + + RTR + +
DIY Lite RC Truck Vehículo Multi-Terreno RTR
+ +## Siguiente + +Flashea el [Firmware de Arduino](../firmware/README.es-ES.md) \ No newline at end of file diff --git a/body/README.fr-FR.md b/body/README.fr-FR.md index ea763d294..fd4938c11 100644 --- a/body/README.fr-FR.md +++ b/body/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Vous pouvez acheter un OpenBot [prêt à l'emploi (RTR)](rtr) sur Amazon : diff --git a/body/README.md b/body/README.md index b14495387..876d59f6b 100644 --- a/body/README.md +++ b/body/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

You can buy a [ready-to-run (RTR)](rtr) OpenBot on Amazon: diff --git a/body/README.zh-CN.md b/body/README.zh-CN.md index fa09e982f..4926faa5e 100644 --- a/body/README.zh-CN.md +++ b/body/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

你可以在亚马逊上购买一个[即插即用 (RTR)](rtr) 的 OpenBot: diff --git a/body/diy/README.de-DE.md b/body/diy/README.de-DE.md index 1f90ccf5b..4813428d9 100644 --- a/body/diy/README.de-DE.md +++ b/body/diy/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Wir haben ein Chassis für einen fahrenden Roboter entworfen, der auf kostengünstiger, leicht verfügbarer Hobby-Hardware basiert. Unten finden Sie Anweisungen zum Bau Ihres eigenen Roboters. Wenn Sie weitere Fragen oder Bedenken haben, können Sie uns gerne kontaktieren. Viel Spaß beim Roboterbau! diff --git a/body/diy/README.es-ES.md b/body/diy/README.es-ES.md new file mode 100644 index 000000000..8cf4ff011 --- /dev/null +++ b/body/diy/README.es-ES.md @@ -0,0 +1,186 @@ +# OpenBot DIY + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +Hemos diseñado un cuerpo para un robot con ruedas que se basa en hardware de hobby de bajo costo y fácilmente disponible. Puedes encontrar instrucciones para construir tu propio robot a continuación. Si tienes alguna pregunta o inquietud adicional, no dudes en contactarnos. ¡Feliz construcción de robots! + +## Chasis + +### Impresión 3D + +Necesitarás imprimir y ensamblar las siguientes piezas para construir tu OpenBot. + +#### Cuerpo del robot + +Hay varias opciones para el cuerpo del robot dependiendo de tus necesidades y capacidades de tu impresora 3D. Te animamos a diseñar y construir el tuyo propio, pero aquí hay algunas opciones como punto de partida: + +- [Cuerpo regular](cad/regular_body/README.es-ES.md): Este es el cuerpo estándar que diseñamos; requiere una placa de construcción de al menos 240mmx150mm. +- [Cuerpo delgado](cad/slim_body/README.es-ES.md): Dado que muchas impresoras 3D comunes tienen un volumen de construcción más pequeño, también hemos diseñado una versión más pequeña sin parachoques que cabe en una placa de construcción de 220mmx220mm a 45 grados. +- [Cuerpo pegable](cad/glue_body/README.es-ES.md): Para imprimir en impresoras 3D con volúmenes de construcción aún más pequeños, también hay un cuerpo modular diseñado por @sloretz con varias partes que necesitan ser pegadas; cabe en una placa de construcción de 150mmx140mm. +- [Cuerpo bloque](cad/block_body/README.es-ES.md): Este cuerpo diseñado por @Christos-P proporciona múltiples variantes con opciones para espacio extra dentro de la carcasa y una parte superior compatible con lego, manteniendo una huella pequeña que requiere solo 221mmx150mm para imprimir. + +#### Montura para el teléfono + +Además, necesitarás imprimir una montura para el teléfono que se fijará al cuerpo del robot. + +- phone_mount_bottom ([STL](../phone_mount/phone_mount_bottom.stl), [STEP](../phone_mount/phone_mount_bottom.step)) +- phone_mount_top ([STL](../phone_mount/phone_mount_top.stl), [STEP](../phone_mount/phone_mount_top.step)) + +#### Limpieza + +Antes de proceder con la construcción, es posible que necesites limpiar la impresión 3D. +

+ + + +

+ +### Alternativas + +Si no tienes acceso a una impresora 3D, hay varios kits de coches robot Arduino disponibles que puedes usar como punto de partida. Estos kits vienen con un chasis, motores y accesorios. Recomendamos obtener un kit básico, ya que no necesitarás muchos de los componentes electrónicos y sensores de los kits más caros. Aquí hay algunas opciones: + +- Perseids DIY Robot Smart Car Chassis Kit ([EU](https://www.amazon.de/dp/B07DNXBNHY), [US](https://www.amazon.com/dp/B07DNXBFQN)) +- SZDoit 4WD Smart Metal Robot Car Chassis Kit ([US](https://www.amazon.com/dp/B083K4RKBP), [AE](https://www.aliexpress.com/item/33048227237.html)) +- Joy-it Robot Car Kit 01 ([EU](https://www.amazon.de/dp/B073ZGJF28)) +- Smart Car Kit 4WD Smart Robot Car Chassis Kit ([AE](https://www.aliexpress.com/item/4001238626191.html)) + +También necesitarás una montura para el teléfono. Aquí hay algunas opciones: + +- Montura para teléfono ([EU](https://www.amazon.de/dp/B06XDYJNSR), [US](https://www.amazon.com/dp/B09CY8MC2R)) + +También puedes ser creativo y construir tu propio chasis y montura para el teléfono utilizando un material de tu elección (por ejemplo, madera, cartón, espuma de poliestireno, etc.). Si lo haces, por favor publica algunas fotos en el [canal de Slack](https://github.com/intel-isl/OpenBot#contact) para que otros puedan admirar tu creatividad. Aquí hay un ejemplo de [@custom-build-robots](https://custom-build-robots.com/roboter/openbot-dein-smartphone-steuert-ein-roboter-auto-chassis-bauen/13636): + +

+ + + +

+ +## Ensamblaje + +Hay dos opciones diferentes para el ensamblaje del robot, DIY y PCB. El enfoque DIY se basa en el popular controlador de motor L298N y se recomienda para aficionados con algo de experiencia en electrónica. Requiere una cantidad considerable de cableado, especialmente si se instalan todos los sensores y LEDs. Sin embargo, todos los componentes están fácilmente disponibles en la mayoría de los países y, especialmente para construcciones individuales o simplemente para probar el proyecto, se recomienda la opción DIY. Para reducir el cableado y facilitar el ensamblaje, también hemos desarrollado una [PCB personalizada](pcb). Esto se recomienda si deseas una construcción más limpia o quieres construir múltiples OpenBots. + +### Lista de materiales + +Nuestro cuerpo de robot se basa en electrónica de hobby fácilmente disponible. Proporcionamos enlaces para Alemania (EU) y los Estados Unidos (US) con envío rápido. Si tienes la paciencia de esperar un poco más, también puedes obtener los componentes mucho más baratos en AliExpress (AE). Necesitarás los siguientes componentes. + +#### Componentes requeridos + +- 1x Arduino Nano ([EU](https://www.amazon.de/dp/B01MS7DUEM), [US](https://www.amazon.com/dp/B00NLAMS9C), [AE](https://www.aliexpress.com/item/32866959979.html)) +- 4x Motores TT con neumáticos ([EU](https://www.conrad.de/de/p/joy-it-com-motor01-getriebemotor-gelb-schwarz-passend-fuer-einplatinen-computer-arduino-banana-pi-cubieboard-raspbe-1573543.html), [US](https://www.amazon.com/dp/B081YQM55P), [AE](https://www.aliexpress.com/item/4000126948489.html)) +- 3x Batería 18650 ([EU](https://www.conrad.de/de/p/conrad-energy-18650-usb-spezial-akku-18650-li-ion-3-7-v-1400-mah-1525536.html), [US](https://www.amazon.com/dp/B083K4XSKG), [AE](https://www.aliexpress.com/item/32352434845.html)) +- 1x Soporte para batería 18650 ([EU](https://www.amazon.de/dp/B075V25QJ9), [US](https://www.amazon.com/dp/B07DWQYD7H), [AE](https://www.aliexpress.com/item/33037738446.html)) +- 1x Cable USB OTG ([EU](https://www.amazon.de/gp/product/B075M4CQHZ), [US](https://www.amazon.com/dp/B07LBHKTMM), [AE](https://www.aliexpress.com/item/10000330515850.html)) +- 1x Resorte o banda elástica ([EU](https://www.amazon.de/gp/product/B01N30EAZO/), [US](https://www.amazon.com/dp/B008RFVWU2), [AE](https://www.aliexpress.com/item/33043769059.html)) +- 16x Tornillo M3x25 ([EU](https://www.amazon.de/dp/B07KFL3SSV), [US](https://www.amazon.com/dp/B07WJL3P3X), [AE](https://www.aliexpress.com/item/4000173341865.html)) +- 16x Tuerca M3 ([EU](https://www.amazon.de/dp/B07JMF3KMD), [US](https://www.amazon.com/dp/B071NLDW56), [AE](https://www.aliexpress.com/item/32977174437.html)) +- 6x Tornillo M3x5 ([EU](https://www.amazon.de/dp/B01HBRG3W8), [US](https://www.amazon.com/dp/B07MBHMLL2), [AE](https://www.aliexpress.com/item/32892594230.html)) +- Cables Dupont ([EU](https://www.amazon.de/dp/B07KYHBVR7), [US](https://www.amazon.com/dp/B07GD2BWPY), [AE](https://www.aliexpress.com/item/4000766001685.html)) + +#### Componentes opcionales + +- 2 x Sensor de velocidad ([EU](https://www.conrad.de/de/p/joy-it-sen-speed-erweiterungsmodul-passend-fuer-einplatinen-computer-arduino-banana-pi-cubieboard-raspberry-pi-pc-1646891.html), [US](https://www.amazon.com/dp/B081W2TY6Q), [AE](https://www.aliexpress.com/i/32850602744.html)) +- 1x Sensor ultrasónico ([EU](https://www.amazon.de/dp/B00LSJWRXU), [US](https://www.amazon.com/dp/B0852V181G/), [AE](https://www.aliexpress.com/item/32713522570.html)) +- 1x Interruptor de encendido/apagado ([EU](https://www.amazon.de/dp/B07QB22J62), [US](https://www.amazon.com/dp/B01N2U8PK0), [AE](https://www.aliexpress.com/item/1000005699023.html)) +- 2x LED naranja de 5mm ([EU](https://www.amazon.de/gp/product/B01NCL0UTQ), [US](https://www.amazon.com/dp/B077XD7MVB), [AE](https://www.aliexpress.com/item/4000329069943.html)) +- 1x Pantalla OLED ([EU](https://www.amazon.de/dp/B079H2C7WH), [US](https://www.amazon.com/dp/B085NHM5TC), [AE](https://www.aliexpress.com/item/4001268387467.html)) + +#### Componentes DIY (Opción 1) + +- 1x Controlador de motor L298N ([EU](https://www.conrad.de/de/p/joy-it-motormodul-2-u-4-phasen-6-bis-12v-1573541.html), [US](https://www.amazon.com/dp/B085XSLKFQ), [AE](https://www.aliexpress.com/item/32994608743.html)) +- (Opcional) Resistencias (2x 150 para los LEDs y una de 20 k y 10k para el divisor de voltaje) +- (Combo) 4x Motores TT & neumáticos + 2x L298N + cables Dupont ([US](https://www.amazon.com/dp/B07ZT619TD)) +- (Combo) 4x Motores TT & neumáticos + cables + tornillos ([US](https://www.amazon.com/dp/B07DRGTCTP)) + +#### Componentes PCB (Opción 2) + +- 1x [PCB personalizada](pcb) +- 5x Cable Micro JST PH 2.0 ([EU](https://www.amazon.de/gp/product/B07449V33P), [US](https://www.amazon.com/dp/B09JZC28DP), [AE](https://www.aliexpress.com/item/32963304134.html)) + +### Instrucciones de construcción + +**Consejo:** Haz clic en las imágenes para abrirlas en resolución completa en una nueva pestaña. + +#### Opción 1: DIY + +

+ + +

+ +**Consejo:** Para facilitar todo el cableado, puedes construir un pequeño distribuidor de energía para las conexiones de 5V y GND soldando un encabezado macho de 6x2 a una placa de pruebas. Luego conecta el distribuidor de energía con el 5V / GND del controlador de motor. + +1. Suelda cables a los motores y agrega los discos codificadores a los dos motores frontales si planeas usar los sensores de velocidad. +

+ + +

+2. Inserta los cables positivo y negativo de los dos motores izquierdos en OUT1 (+) y OUT2 (-) de la placa L298N. Inserta los cables positivo y negativo de los dos motores derechos en OUT4 (+) y OUT3 (-) de la placa L298N. +3. Monta los motores con ocho tornillos y tuercas M3x25. +

+ + + +

+4. Monta la L298N con cuatro tornillos M3x5. +5. (Opcional) Instala el sensor ultrasónico y reemplaza el conector en ángulo con uno recto (o dobla cuidadosamente los pines). +

+ + + +

+6. (Opcional) Instala los LEDs naranjas para las señales de indicador. +

+ + + +

+7. Monta la parte inferior de la montura del teléfono en la placa superior usando dos tornillos y tuercas M3x25. +

+ + + +

+8. Inserta la parte superior de la montura del teléfono e instala el resorte o la banda elástica. +

+ + +

+9. Reemplaza el conector en ángulo con uno recto (o dobla cuidadosamente los pines) y luego monta los sensores de velocidad con un tornillo M3x5 cada uno. +

+ + + +

+10. Instala el soporte de la batería (por ejemplo, velcro). +

+ + + +

+11. (Opcional) Inserta el interruptor de encendido/apagado y colócalo en el camino de la corriente. + 1. Empuja el interruptor en la abertura correspondiente hasta que escuches un clic. + 2. Suelda los cables rojos (12V) del soporte de la batería y el cable de alimentación a cada uno de los pines del interruptor. Conecta los cables negros (GND) y cubre la conexión con un poco de termorretráctil. + 3. Fija los cables con un poco de cinta. +

+ + + +

+12. (Opcional) Adjunta la pantalla OLED. +13. Conecta las entradas PWM del L298N a los pines D5, D6, D9 y D10 del Arduino. +14. Conecta los sensores de velocidad y el sensor ultrasónico a 5V y GND. +15. Conecta el pin D0 de los sensores de velocidad a los pines D2 (izquierda) y D3 (derecha) del Arduino. +16. Conecta los pines Echo y Trigger del sensor ultrasónico a los pines D11 y D12 del Arduino respectivamente. +17. (Opcional) Conecta los LEDs a los pines D4 (izquierda) y D7 (derecha) del Arduino y GND. Recomendamos agregar una resistencia de 150 Ohm en serie para limitar la corriente. +18. (Opcional) Conecta el divisor de voltaje al pin A7 del Arduino. Se utiliza para medir el voltaje de la batería. +19. (Opcional) Conecta la pantalla OLED (chip SSD1306) a través del bus I2C al Arduino Nano. + 1. Conecta los pines VIN y GND de la pantalla a 5V y GND. + 2. Conecta el pin SCL de la pantalla al pin A5. + \ No newline at end of file diff --git a/body/diy/README.fr-FR.md b/body/diy/README.fr-FR.md index f06725e9f..67240106e 100644 --- a/body/diy/README.fr-FR.md +++ b/body/diy/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Nous avons conçu un châssis pour un robot à roues qui repose sur du matériel de loisir peu coûteux et facilement disponible. Vous trouverez ci-dessous des instructions pour construire votre propre robot. Si vous avez d'autres questions ou préoccupations, n'hésitez pas à nous contacter. Bonne construction de robot ! diff --git a/body/diy/README.md b/body/diy/README.md index 2e818c892..fc9c9c747 100644 --- a/body/diy/README.md +++ b/body/diy/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

We have designed a body for a wheeled robot which relies on low-cost, readily available hobby hardware. You can find instructions for building you own robot below. If you have any further questions or concerns, please feel free to contact us. Happy robot building! diff --git a/body/diy/README.zh-CN.md b/body/diy/README.zh-CN.md index 269590933..b3fa3450a 100644 --- a/body/diy/README.zh-CN.md +++ b/body/diy/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

我们设计了一种轮式机器人的主体,依赖于低成本、易于获取的业余硬件。你可以在下面找到构建你自己的机器人的说明。如果你有任何进一步的问题或疑虑,请随时联系我们。祝你构建机器人愉快! diff --git a/body/diy/cad/block_body/README.de-DE.md b/body/diy/cad/block_body/README.de-DE.md index 5a6d7da6b..1e62b30c6 100644 --- a/body/diy/cad/block_body/README.de-DE.md +++ b/body/diy/cad/block_body/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Dieses Roboterchassis bietet zusätzliche Höhe, um es einfacher zu machen, alle Elektronikteile unterzubringen, und eine lego-kompatible Oberseite. Diese Version bietet die gleiche strukturelle Integrität wie der [normale Körper](../regular_body/), mit zusätzlichen Funktionen wie mehr Platz im OpenBot-Gehäuse, einer lego-kompatiblen Oberseite zum Spielen und Lernen und einer Größe, die für kleinere Druckbettgrößen geeignet ist, während die Stoßfänger beibehalten werden. diff --git a/body/diy/cad/block_body/README.es-ES.md b/body/diy/cad/block_body/README.es-ES.md new file mode 100644 index 000000000..eba4bab7c --- /dev/null +++ b/body/diy/cad/block_body/README.es-ES.md @@ -0,0 +1,46 @@ +# Cuerpo Bloque con Espacio Adicional y Soporte para Lego + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +Este chasis de robot proporciona algo de altura adicional para facilitar la inclusión de todos los componentes electrónicos y una parte superior compatible con lego. Esta versión ofrece las mismas capacidades de integridad estructural que el [cuerpo regular](../regular_body/), con características adicionales como espacio extra dentro de la carcasa de OpenBot, una parte superior compatible con lego para jugar y aprender, y un tamaño adecuado para camas de impresión más pequeñas manteniendo los parachoques. + +![Block CAD](../../../../docs/images/block_cad.jpg) + +## Piezas + +Necesitarás imprimir la parte inferior y una de las partes superiores: + +- `block_body_bottom`([STL](block_body_bottom.stl), [STEP](block_body_bottom.step)): parte inferior del cuerpo +- `block_body_top`([STL](block_body_top.stl), [STEP](block_body_top.step)): parte superior básica del cuerpo +- `block_body_top_lego`([STL](block_body_top_lego.stl), [STEP](block_body_top_lego.step)): parte superior básica del cuerpo con superficie compatible con lego +- `block_body_top_big`([STL](block_body_top_big.stl), [STEP](block_body_top_big.step)): parte superior grande del cuerpo con volumen adicional para electrónica +- `block_body_top_lego`([STL](block_body_top_big_lego.stl), [STEP](block_body_top_big_lego.step)): parte superior grande del cuerpo con superficie compatible con lego + +Para las piezas mencionadas, tu placa de construcción necesita ser al menos de 221x150mm. + +## Configuración de Impresión + +Para obtener los mejores resultados, recomendamos usar la siguiente configuración de impresión: + +- Altura de capa: 0.2mm +- Cantidad de paredes: 3 (más paredes para mejor integridad estructural de superficies más grandes) +- Capas superiores: 5 +- Capas inferiores: 4 +- Relleno: 25% +- Patrón de relleno: Concéntrico (esta configuración parece ahorrar tiempo y plástico) +- Velocidad de impresión: 50mm/seg +- Generar soporte: Sí +- Patrón de soporte: Concéntrico +- Densidad de soporte: 15% +- Habilitar borde de soporte: Sí +- Tipo de adhesión a la placa de construcción: Ninguno + +¡Feliz construcción de robots! + +![Block Body](../../../../docs/images/block_body.jpg) \ No newline at end of file diff --git a/body/diy/cad/block_body/README.fr-FR.md b/body/diy/cad/block_body/README.fr-FR.md index 55c2b2532..ea9468ed7 100644 --- a/body/diy/cad/block_body/README.fr-FR.md +++ b/body/diy/cad/block_body/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Ce châssis de robot offre une hauteur supplémentaire pour faciliter l'intégration de tous les composants électroniques et un dessus compatible avec les Lego. Cette version offre les mêmes capacités de solidité structurelle que le [corps régulier](../regular_body/), avec des fonctionnalités supplémentaires telles qu'un espace supplémentaire à l'intérieur de la coque OpenBot, un dessus compatible avec les Lego pour le jeu et l'apprentissage, et une empreinte adaptée aux tailles de lit d'impression plus petites tout en maintenant les pare-chocs. diff --git a/body/diy/cad/block_body/README.md b/body/diy/cad/block_body/README.md index 9cc8edf24..5a46c7a05 100644 --- a/body/diy/cad/block_body/README.md +++ b/body/diy/cad/block_body/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

This robot chassis provides some extra height to make it easier to fit in all the electronics and a lego-compatible top. This version offers the same structural integrity capabilities as the [regular body](../regular_body/), with additional features such as extra space inside the OpenBot shell, a lego-compatible top for play and learning and a footprint suitable for smaller print bed sizes while maintaining bumpers. diff --git a/body/diy/cad/block_body/README.zh-CN.md b/body/diy/cad/block_body/README.zh-CN.md index ff598c09d..9a4cd9879 100644 --- a/body/diy/cad/block_body/README.zh-CN.md +++ b/body/diy/cad/block_body/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

这个机器人底盘提供了一些额外的高度,使得安装所有电子设备更加容易,并且顶部兼容乐高。这一版本具有与[常规底盘](../regular_body/)相同的结构完整性能力,同时增加了额外的功能,例如OpenBot外壳内的额外空间、用于游戏和学习的乐高兼容顶部,以及适合较小打印床尺寸的占地面积,同时保持保险杠。 diff --git a/body/diy/cad/glue_body/README.de-DE.md b/body/diy/cad/glue_body/README.de-DE.md index 0ffa20e67..e56a35711 100644 --- a/body/diy/cad/glue_body/README.de-DE.md +++ b/body/diy/cad/glue_body/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Einige 3D-Drucker haben ein Bauvolumen, das zu klein ist, um den OpenBot-Körper in voller Größe zu drucken. diff --git a/body/diy/cad/glue_body/README.es-ES.md b/body/diy/cad/glue_body/README.es-ES.md new file mode 100644 index 000000000..1418c42ff --- /dev/null +++ b/body/diy/cad/glue_body/README.es-ES.md @@ -0,0 +1,32 @@ +# Cuerpo Pegable + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +Algunas impresoras 3D tienen volúmenes de construcción que son demasiado pequeños para imprimir el cuerpo de OpenBot a tamaño completo. +Esta carpeta contiene el cuerpo de OpenBot dividido en 4 piezas. +Se puede imprimir con una placa de construcción tan pequeña como 150mmx140mm, y luego pegarse. + +![Cuerpo Pegable](../../../../docs/images/glue_body.jpg) + +## Piezas + +Piezas requeridas: + +1) `glue_body_bottom_A` ([STL](glue_body_bottom_A.stl), [STEP](glue_body_bottom_A.step)) +2) `glue_body_bottom_B` ([STL](glue_body_bottom_B.stl), [STEP](glue_body_bottom_B.step)) +3) `glue_body_top_A` ([STL](glue_body_top_A.stl), [STEP](glue_body_top_A.step)) +4) `glue_body_top_B` ([STL](glue_body_top_B.stl), [STEP](glue_body_top_B.step)) + +Piezas opcionales: + +Estas piezas proporcionan una superficie adicional para pegar, lo cual puede ser útil si tu impresión experimenta deformaciones. + +* `glue_connector_bottom` ([STL](glue_connector_bottom.stl), [STEP](glue_connector_bottom.step)) +* `glue_connector_top_A` ([STL](glue_connector_top_A.stl), [STEP](glue_connector_top_A.step)) +* `glue_connector_top_B` ([STL](glue_connector_top_B.stl), [STEP](glue_connector_top_B.step)) \ No newline at end of file diff --git a/body/diy/cad/glue_body/README.fr-FR.md b/body/diy/cad/glue_body/README.fr-FR.md index f0d1b5a27..cfe02d8e0 100644 --- a/body/diy/cad/glue_body/README.fr-FR.md +++ b/body/diy/cad/glue_body/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Certaines imprimantes 3D ont des volumes de construction trop petits pour imprimer le corps OpenBot en taille réelle. diff --git a/body/diy/cad/glue_body/README.md b/body/diy/cad/glue_body/README.md index ac01389f3..cf7da5da3 100644 --- a/body/diy/cad/glue_body/README.md +++ b/body/diy/cad/glue_body/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Some 3D printers have build volumes that are too small to print the full size OpenBot body. diff --git a/body/diy/cad/glue_body/README.zh-CN.md b/body/diy/cad/glue_body/README.zh-CN.md index db48705bd..2b98381cb 100644 --- a/body/diy/cad/glue_body/README.zh-CN.md +++ b/body/diy/cad/glue_body/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

一些3D打印机的构建体积太小,无法打印全尺寸的OpenBot机身。 diff --git a/body/diy/cad/regular_body/README.de-DE.md b/body/diy/cad/regular_body/README.de-DE.md index d258c73a6..d6b9af2ae 100644 --- a/body/diy/cad/regular_body/README.de-DE.md +++ b/body/diy/cad/regular_body/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

![Zusammenbau](../../../../docs/images/assembly.gif) diff --git a/body/diy/cad/regular_body/README.es-ES.md b/body/diy/cad/regular_body/README.es-ES.md new file mode 100644 index 000000000..7f951e298 --- /dev/null +++ b/body/diy/cad/regular_body/README.es-ES.md @@ -0,0 +1,33 @@ +# Cuerpo Regular + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +![Assembly](../../../../docs/images/assembly.gif) + +## Piezas + +Necesitarás imprimir las siguientes piezas para construir tu OpenBot. + +- `body_bottom` ([STL](body_bottom.stl), [STEP](body_bottom.step)) +- `body_top` ([STL](body_top.stl), [STEP](body_top.step)) + +Para las piezas mencionadas, tu placa de construcción necesita ser al menos de 240mmx150mm. + +## Configuración de Impresión + +En una Ultimaker S5, logramos buenos resultados con las siguientes configuraciones: + +- altura de capa: 0.2mm +- grosor de pared: 1.5mm +- densidad de relleno: 20% +- patrón de relleno: cuadrícula +- velocidad de impresión: 80 mm/s +- sin soporte + +Pudimos imprimir el chasis con PLA, ABS y CPE. En nuestra experiencia, la impresión no se vio muy afectada por las configuraciones de impresión. Sin embargo, si tienes paciencia, imprimir más lento y con una altura de capa menor mejorará la impresión. Además, agregar una estructura de soporte puede mejorar la impresión, pero requerirá trabajo adicional para removerla posteriormente. \ No newline at end of file diff --git a/body/diy/cad/regular_body/README.fr-FR.md b/body/diy/cad/regular_body/README.fr-FR.md index aa7616c5d..feb743ba8 100644 --- a/body/diy/cad/regular_body/README.fr-FR.md +++ b/body/diy/cad/regular_body/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

![Assembly](../../../../docs/images/assembly.gif) diff --git a/body/diy/cad/regular_body/README.md b/body/diy/cad/regular_body/README.md index b177ccaf1..bb3f5ea62 100644 --- a/body/diy/cad/regular_body/README.md +++ b/body/diy/cad/regular_body/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

![Assembly](../../../../docs/images/assembly.gif) diff --git a/body/diy/cad/regular_body/README.zh-CN.md b/body/diy/cad/regular_body/README.zh-CN.md index 2a86265da..aef2b5215 100644 --- a/body/diy/cad/regular_body/README.zh-CN.md +++ b/body/diy/cad/regular_body/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

![Assembly](../../../../docs/images/assembly.gif) diff --git a/body/diy/cad/slim_body/README.de-DE.md b/body/diy/cad/slim_body/README.de-DE.md index 89a40b7f2..be7aaddd5 100644 --- a/body/diy/cad/slim_body/README.de-DE.md +++ b/body/diy/cad/slim_body/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Einige 3D-Drucker haben ein Bauvolumen, das zu klein ist, um den OpenBot-Körper in voller Größe zu drucken. diff --git a/body/diy/cad/slim_body/README.es-ES.md b/body/diy/cad/slim_body/README.es-ES.md new file mode 100644 index 000000000..a6370633c --- /dev/null +++ b/body/diy/cad/slim_body/README.es-ES.md @@ -0,0 +1,28 @@ +# Slim Body + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +Algunas impresoras 3D tienen volúmenes de construcción que son demasiado pequeños para imprimir el cuerpo completo de OpenBot. +Esta carpeta contiene la versión delgada del cuerpo de OpenBot. +Se puede imprimir con una placa de construcción de 220mmx220mm cuando las piezas se giran 45 grados. + +![Slim Body](../../../../docs/images/slim_body.jpg) + +## Piezas + +1) `slim_body_bottom` ([STL](slim_body_bottom.stl), [STEP](slim_body_bottom.step)) +2) `slim_body_top` ([STL](slim_body_top.stl), [STEP](slim_body_top.step)) + +Para que encaje, es posible que tengas que ajustar las siguientes configuraciones para obtener el área máxima de impresión. + +- Configura *Tipo de Adhesión de la Placa de Construcción* a "Ninguno" (Brim, Skirt y Raft aumentan el tamaño total de tu impresión) +- Desactiva el blob de imprimación (en la sección *Placa de Construcción*) +- Desactiva el segundo extrusor (si tu impresora tiene uno) + +Si tienes un poco más de espacio (223mmx223mm), también puedes imprimir el `slim_body_top_rim` ([STL](slim_body_top_rim.stl), [STEP](slim_body_top_rim.step)). Tiene un borde ligeramente más grande, lo que facilita quitar la parte superior. \ No newline at end of file diff --git a/body/diy/cad/slim_body/README.fr-FR.md b/body/diy/cad/slim_body/README.fr-FR.md index c437b8800..eaa028cc7 100644 --- a/body/diy/cad/slim_body/README.fr-FR.md +++ b/body/diy/cad/slim_body/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Certaines imprimantes 3D ont des volumes de construction trop petits pour imprimer le corps OpenBot en taille réelle. diff --git a/body/diy/cad/slim_body/README.md b/body/diy/cad/slim_body/README.md index 168f47269..9de0638c9 100644 --- a/body/diy/cad/slim_body/README.md +++ b/body/diy/cad/slim_body/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Some 3D printers have build volumes that are too small to print the full size OpenBot body. diff --git a/body/diy/cad/slim_body/README.zh-CN.md b/body/diy/cad/slim_body/README.zh-CN.md index 798d875a7..603114f24 100644 --- a/body/diy/cad/slim_body/README.zh-CN.md +++ b/body/diy/cad/slim_body/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

一些3D打印机的构建体积太小,无法打印全尺寸的OpenBot机身。 diff --git a/body/diy/pcb/README.de-DE.md b/body/diy/pcb/README.de-DE.md index 8ba33d95d..42b05a670 100644 --- a/body/diy/pcb/README.de-DE.md +++ b/body/diy/pcb/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Die Leiterplatte (PCB) dient als Trägerplatine für den Arduino Nano und integriert moderne Motortreiber, die Spannungsteiler-Schaltung und Widerstände für die LEDs. Der Arduino wird einfach in die Stiftleiste gesteckt und alle Sensoren und LEDs werden über Dupont-Kabel mit den entsprechenden Anschlüssen verbunden. diff --git a/body/diy/pcb/README.es-ES.md b/body/diy/pcb/README.es-ES.md new file mode 100644 index 000000000..085e974e5 --- /dev/null +++ b/body/diy/pcb/README.es-ES.md @@ -0,0 +1,36 @@ +# PCB Personalizado + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +El PCB personalizado actúa como una placa portadora para el Arduino Nano e integra controladores de motor modernos, el circuito divisor de voltaje y resistencias para los LEDs. El Arduino se conecta simplemente al encabezado de pines y todos los sensores y LEDs se conectan a través de cables Dupont a los conectores correspondientes. + +![PCB_2D](../../../docs/images/pcb_2d_v2.png) +![PCB_3D](../../../docs/images/pcb_3d_v2.png) + +El PCB más reciente es [versión 2](v2). Aquí están los cambios en comparación con la [versión 1](v1): + +- Mover el sensor de velocidad derecho al pin D3 para habilitar la funcionalidad de interrupción +- Añadir LED de encendido para la batería principal +- Actualizar algunos componentes que son más comúnmente disponibles +- Actualizar el divisor de voltaje a 20k/10k para mejor precisión +- Cambiar los conectores del motor a una versión vertical para un acceso más fácil + +Si ya has pedido la [versión 1](v1) del PCB ([vista 2D](../../../docs/images/pcb_2d_v1.png), [vista 3D](../../../docs/images/pcb_3d_v1.png)), no te preocupes, funcionará bien. Solo asegúrate de configurar la bandera correcta en el firmware. + +El PCB personalizado implica los siguientes pasos: + +1) **Pedir el PCB**: Descarga los archivos [Gerber](v2/gerber_v2.zip) y pide el PCB en el proveedor de tu elección. También puedes pedir el PCB directamente en [PCBWay](https://www.pcbway.com/project/shareproject/OpenBot__Turning_Smartphones_into_Robots.html) donde hemos compartido un proyecto para OpenBot. +2) **Pedir los componentes:** Descarga la [BOM](v2/BOM_v2.csv) y pide los componentes en el proveedor de tu elección, por ejemplo [LCSC](https://lcsc.com). +3) **Montaje del PCB:** Puedes montar el PCB tú mismo o hacer que lo monte un proveedor. Para el montaje automatizado necesitarás el [Archivo Centroid](v2/centroid_file_v2.csv). Si pides el PCB en [JLCPCB](https://jlcpcb.com/), puedes usar su servicio de montaje SMT. Entonces solo necesitarás pedir y soldar los componentes de orificio pasante tú mismo. Encontramos que esta es la opción más conveniente, barata y rápida. En la [versión 2](v2) del PCB, hemos actualizado los componentes para asegurarnos de que todos estén disponibles directamente en [JLCPCB](https://jlcpcb.com/). + +También puedes encontrar proveedores que te ofrecerán una solución TurnKey que cubra los 3 pasos. Fabricarán el PCB, obtendrán los componentes y montarán el PCB. Esto es muy conveniente y tampoco es muy caro. Sin embargo, los tiempos de entrega suelen ser muy largos (1-3 meses). + +Al solicitar una cotización en [PCBWay](https://www.pcbway.com/orderonline.aspx), puedes seleccionar el servicio de montaje después de subir el archivo Gerber. +![Servicio de Montaje](../../../docs/images/assembly_service.jpg) +En el siguiente paso, necesitarás subir la [BOM](v2/BOM_v2.csv) y el [Archivo Centroid](v2/centroid_file_v2.csv). Tu cotización será revisada y actualizada en unos pocos días. Luego puedes optar por proceder con el pago después de revisar el costo y el tiempo de entrega. \ No newline at end of file diff --git a/body/diy/pcb/README.fr-FR.md b/body/diy/pcb/README.fr-FR.md index 0016ab19e..df91adb08 100644 --- a/body/diy/pcb/README.fr-FR.md +++ b/body/diy/pcb/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Le PCB personnalisé agit comme une carte porteuse pour l'Arduino Nano et intègre des pilotes de moteur modernes, le circuit diviseur de tension et des résistances pour les LED. L'Arduino est simplement branché dans l'en-tête de broche et tous les capteurs et LED sont connectés via des câbles Dupont aux connecteurs appropriés. diff --git a/body/diy/pcb/README.md b/body/diy/pcb/README.md index eb08ac90b..6b84e11c8 100644 --- a/body/diy/pcb/README.md +++ b/body/diy/pcb/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

The custom PCB acts as a carrier board for the Arduino Nano and integrates modern motor drivers, the voltage divider circuit and resistors for the LEDs. The Arduino is simply plugged into the pin header and all sensors and LEDs are connected via Dupont cables to the appropriate connectors. diff --git a/body/diy/pcb/README.zh-CN.md b/body/diy/pcb/README.zh-CN.md index b6ad549a9..4a20a9f62 100644 --- a/body/diy/pcb/README.zh-CN.md +++ b/body/diy/pcb/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

定制PCB作为Arduino Nano的载板,集成了现代电机驱动器、电压分压电路和LED电阻。Arduino只需插入针脚头,所有传感器和LED通过杜邦线连接到相应的连接器。 diff --git a/body/lite/README.de-DE.md b/body/lite/README.de-DE.md index d13474eea..09a72e9e5 100644 --- a/body/lite/README.de-DE.md +++ b/body/lite/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

eSpace von ITE hat einen [Lehrplan](#curriculum) für kostengünstige und skalierbare KI- und Robotikbildung rund um den OpenBot-Software-Stack entwickelt. Dieser besteht aus [Schritt-für-Schritt YouTube-Videos](#step-by-step-video-guides), die dich durch den Zusammenbau des [OpenBot Lite](#openbot-lite-arduino) führen, die notwendige Software installieren, die Personenerkennung nutzen und deine eigene autonome Fahrstrategie trainieren und einsetzen. diff --git a/body/lite/README.es-ES.md b/body/lite/README.es-ES.md new file mode 100644 index 000000000..eb968252e --- /dev/null +++ b/body/lite/README.es-ES.md @@ -0,0 +1,73 @@ +# OpenBot para la Educación + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +eSpace de ITE ha desarrollado un [currículo](#currículo) para la educación en IA y robótica económica y escalable alrededor del stack de software OpenBot. Viene en forma de [videos paso a paso en YouTube](#guías-en-video-paso-a-paso) que te guían a través del ensamblaje del [OpenBot Lite](#openbot-lite-arduino), la instalación del software necesario, el uso del seguimiento de personas y la capacitación y despliegue de tu propia política de conducción autónoma. + +## OpenBot Lite + +OpenBot Lite es una variante más pequeña y simplificada de la versión DIY de OpenBot. Esta versión minimalista fue desarrollada por eSpace de ITE para aprovechar el gran potencial del stack de software OpenBot para la educación en IA y robótica económica y escalable. OpenBot Lite soporta tanto un [micro:bit](https://microbit.org/) (+ placa de IO propietaria) como un Arduino Nano. La imagen a continuación muestra la variante micro:bit a la izquierda y la variante Arduino a la derecha. + +

+ +

+ +## Currículo + +El currículo ha sido probado por educadores en Corea del Sur y Alemania y más de 100 estudiantes ya han aprendido sobre IA y robótica usando este currículo. Aquí hay algunos resultados de nuestras capacitaciones en línea: + +* [Corea del Sur](https://fb.watch/bDK2Vjgm3g/) +* [Alemania](https://www.facebook.com/EspaceCW/posts/5087394677946975) + +Seguimiento de personas en acción: + +

+ +

+ +El aprendizaje de políticas se basa en un campo de juego de 2.4m x 1.8m con un diseño de calle. El robot aprende a conducir de manera autónoma en esta calle y a evitar obstáculos. Esto hace que el currículo esté listo para el aprendizaje en casa. + +

+ +

+ +Piloto automático entrenado en acción: + +

+ +

+ +## Guías en Video Paso a Paso + +A continuación se presentan las listas de reproducción de YouTube en secuencia: + +Versión Arduino: +1. [Ensamblaje de OpenBot Lite (Arduino)](https://youtube.com/playlist?list=PLNKFHX5MRn52za5VeteCmvLNcL1Kowtw2) +2. [Seguimiento de Personas](https://youtube.com/playlist?list=PLNKFHX5MRn501oWvPbKzP1zkcqhLU5TOh) +3. [Aprendizaje de Políticas](https://youtube.com/playlist?list=PLNKFHX5MRn5233AyCWhcn71JdB9qIEa-E) + +Versión micro:bit: +1. [Ensamblaje de OpenBot Lite (micro:bit)](https://youtube.com/playlist?list=PLNKFHX5MRn51xVKHo2VCY-KbOFQrkOm2R) +2. [Seguimiento de Personas](https://youtube.com/playlist?list=PLNKFHX5MRn51crWis1lwFJXj69DN9evG1) +3. [Código micro:bit Explicado](https://youtube.com/playlist?list=PLNKFHX5MRn51DfspxVo16BkfXz8y9uR7N) +4. [Aprendizaje de Políticas](https://youtube.com/playlist?list=PLNKFHX5MRn5233AyCWhcn71JdB9qIEa-E) + +## Agradecimientos + +Si encuentras este material útil, por favor dale me gusta a los videos y suscríbete al canal de eSpace. Si pudiste construir tu propio OpenBot Lite, hacer que el seguimiento de personas y/o el piloto automático funcionen, siéntete libre de compartir tus historias de éxito y videos de OpenBot en las redes sociales y en [Slack](https://join.slack.com/t/openbot-community/shared_invite/zt-jl8ygxqt-WNRNi9yzh7Lu60qui6Nh6w). También puedes apoyar y seguir a Willam Tan y al equipo de eSpace que están desarrollando los materiales educativos en las redes sociales. + +* [Canal de Slack de OpenBot](https://join.slack.com/t/openbot-community/shared_invite/zt-jl8ygxqt-WNRNi9yzh7Lu60qui6Nh6w) +* [Facebook de eSpace](https://www.facebook.com/EspaceCW) +* [Instagram de eSpace](https://www.instagram.com/EspaceCW/) + +Esperamos tus historias de éxito y videos. ¡Diviértete! + +## Siguiente + +Flashea el [Firmware de Arduino](../../firmware/README.es-ES.md) \ No newline at end of file diff --git a/body/lite/README.fr-FR.md b/body/lite/README.fr-FR.md index 94f561f62..e0333b5cf 100644 --- a/body/lite/README.fr-FR.md +++ b/body/lite/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

eSpace de l'ITE a développé un [programme](#curriculum) pour une éducation économique et évolutive en IA et robotique autour de la pile logicielle OpenBot. Il se présente sous la forme de [vidéos YouTube étape par étape](#step-by-step-video-guides) qui vous guident à travers l'assemblage de l'[OpenBot Lite](#openbot-lite-arduino), l'installation des logiciels nécessaires, l'utilisation du suivi de personne et la formation et le déploiement de votre propre politique de conduite autonome. diff --git a/body/lite/README.md b/body/lite/README.md index c6f853f2d..a716b5f98 100644 --- a/body/lite/README.md +++ b/body/lite/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

ITE's eSpace has developed a [curriculum](#curriculum) for economical and scalable AI and robotics education around the OpenBot software stack. It comes in the form of [step-by-step YouTube videos](#step-by-step-video-guides) which guides you through the assembly of the [OpenBot Lite](#openbot-lite-arduino), installing the necessary software, using the person following and training and deploying your own autonomous driving policy. diff --git a/body/lite/README.zh-CN.md b/body/lite/README.zh-CN.md index de6260ddb..30dd4880b 100644 --- a/body/lite/README.zh-CN.md +++ b/body/lite/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

ITE 的 eSpace 已经开发了一套围绕 OpenBot 软件栈的 [课程](#curriculum),旨在提供经济且可扩展的 AI 和机器人教育。该课程以 [逐步指导的 YouTube 视频](#step-by-step-video-guides) 形式呈现,指导您组装 [OpenBot Lite](#openbot-lite-arduino),安装必要的软件,使用跟随功能以及训练和部署您自己的自动驾驶策略。 diff --git a/body/mtv/README.de-DE.md b/body/mtv/README.de-DE.md index 0ef4581ec..5bc7b2ea7 100644 --- a/body/mtv/README.de-DE.md +++ b/body/mtv/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Wir schlagen hier eine Geländefahrzeug-Alternative zum ursprünglichen [OpenBot](https://www.openbot.org/) Fahrzeug vor. Entwickelt in Zusammenarbeit mit **Ivy Tech LTD**, basiert das Multi-Terrain Vehicle (MTV) ebenfalls auf kostengünstigen und leicht druckbaren Komponenten. Das MTV ist inspiriert von mehreren Erkundungsfahrzeugkonzepten, die in den letzten Jahrzehnten für die Mond- und Marsforschung entwickelt wurden. Das MTV ist um einen Satz von 6 angetriebenen Rädern herum konstruiert, die in einer Rocker-Bogie-Konfiguration angeordnet sind. Im Gegensatz zu den meisten Mond- oder Mars-Rovern können die Räder nicht radial rotieren. Das Fahrzeug funktioniert daher wie ein Panzer, was die manuelle Steuerung recht intuitiv macht. diff --git a/body/mtv/README.es-ES.md b/body/mtv/README.es-ES.md new file mode 100644 index 000000000..65eaebf12 --- /dev/null +++ b/body/mtv/README.es-ES.md @@ -0,0 +1,266 @@ +# OpenBot: Vehículo Multi-Terreno (MTV) + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +Aquí proponemos una alternativa todoterreno al vehículo original [OpenBot](https://www.openbot.org/). Desarrollado en colaboración con **Ivy Tech LTD**, el Vehículo Multi-Terreno (MTV) también se basa en componentes económicos y fácilmente imprimibles. El MTV está inspirado en varios conceptos de vehículos de exploración desarrollados en las últimas décadas para la exploración lunar y marciana. El MTV está diseñado alrededor de un conjunto de 6 ruedas actuadas, organizadas en una configuración Rocker-Bogie. A diferencia de la mayoría de los rovers lunares o marcianos, las ruedas no pueden girar radialmente. Por lo tanto, el vehículo opera de la misma manera que un tanque, lo que hace que el control manual sea bastante intuitivo. + +

+ App GUI +

+ +## I. Impresión 3D + +Necesitarás imprimir las siguientes piezas para construir tu OpenBot MTV. + +

+ App GUI +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ID GrupoNombre del ÍtemCantidadImagen (no a escala)MaterialDuraciónCosto
A1Ensamblaje del motorParte Superior de la Caja del Motor
(STL, STEP)
6

App GUI

498g36h€23.51
A2Parte Inferior de la Caja del Motor
(STL, STEP)
6

App GUI

A3Soporte del Motor
(STL, STEP)
6

App GUI

251g17.5h€11.98
A4JuntasJunta de 90 grados
(STL, STEP)
2

App GUI

228g20.5h€15.05
A5Junta de 100 grados
(STL, STEP)
1

App GUI

A6Junta de 100 grados Espejo
(STL, STEP)
1

App GUI

A7Junta Final
(STL, STEP)
2

App GUI

A8PatasPata Delantera
(STL, STEP)
4

App GUI

317g22.5h€14.97
A9Pata Media
(STL, STEP)
2

App GUI

A10Pata Trasera
(STL, STEP)
2

App GUI

A11Cubierta del RodamientoCubierta del Rodamiento
(STL, STEP)
4

App GUI

13g1.5h€0.60
A12Plataforma de Montaje del TeléfonoPlataforma de Montaje del Teléfono
(STL, STEP)
1

App GUI

19g2h€0.91
A13Parachoques DelanteroNombre Delantero
(STL, STEP)
1

App GUI

228g20.5h€15.04
A14Nombre Trasero
(STL, STEP)
1

App GUI

A15Parachoques Izquierdo
(STL, STEP)
1

App GUI

A16Parachoques Derecho
(STL, STEP)
1

App GUI

A17Compartimento Parte Trasera del Compartimento
(STL, STEP)
1

App GUI

413g32h€22.75
A18Parte Delantera del Compartimento
(STL, STEP)
1

App GUI

316g22h€17.42
A19Techo Delantero
(STL, STEP)
1

App GUI

58g5.5h€3.19
A20Techo Trasero
(STL, STEP)
1

App GUI

140g13.5h€7.73
A21abMontaje de la Batería P1 & P2
(STL, STEP) +
(STL, STEP)
1

App GUI

15g1.5h€0.80
A22Tapas de los Faros
(STL, STEP)
4

App GUI

47g4h€2.58
A23Faro Delantero
(STL, STEP)
4

App GUI

A24Tapa de Acceso a la Batería
(STL, STEP)
1

App GUI

+ +Para las piezas anteriores, tu placa de construcción necesita ser al menos de 240mmx150mm. + +En una Ultimaker S5, logramos buenos resultados con los siguientes ajustes: + +- altura de capa: 0.2mm +- grosor de pared: 1.5mm +- densidad de relleno: 20% +- patrón de relleno: cuadrícula +- velocidad de impresión: 80 mm/s +- sin soporte + +## II. Ensamblaje Electro-Mecánico + +### II.1. Lista de materiales + +Nuestro cuerpo de robot se basa en electrónica de hobby fácilmente disponible. Proporcionamos enlaces para Alemania (UE) y los Estados Unidos (EE.UU.) con envío rápido. Si tienes la paciencia de esperar un poco más, también puedes obtener los componentes mucho más baratos en AliExpress (AE). Necesitarás los siguientes componentes. + + + + + + + + + + + + + + + + + +
ID DescripciónImagenProveedorPrecio UnitarioCantidadCosto
O1Motor DC JGB37-520 con encoders - 12V | 178RPM

English | 简体中文 | Deutsch | - Français + Français | + Español

Nous proposons ici une alternative tout-terrain au véhicule original [OpenBot](https://www.openbot.org/). Développé en collaboration avec **Ivy Tech LTD**, le Véhicule Multi-Terrain (MTV) est également basé sur des composants peu coûteux et facilement imprimables. Le MTV s'inspire de plusieurs concepts de véhicules d'exploration développés au cours des dernières décennies pour l'exploration lunaire et martienne. Le MTV est conçu autour d'un ensemble de 6 roues actionnées, organisées en configuration Rocker-Bogie. Contrairement à la plupart des rovers lunaires ou martiens, les roues ne peuvent pas tourner radialement. Le véhicule fonctionne donc de la même manière qu'un char, ce qui rend le contrôle manuel assez intuitif. diff --git a/body/mtv/README.md b/body/mtv/README.md index 63ff7db89..a5fe453a9 100644 --- a/body/mtv/README.md +++ b/body/mtv/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

We here propose an all-terrain alternative to the original [OpenBot](https://www.openbot.org/) vehicle. Developed in collaboration with **Ivy Tech LTD**, the Multi-Terrain Vehicle (MTV) is also based on inexpensive and easily printable components. The MTV is inspired by several exploration vehicle concepts developed over the past decades for lunar and Martian exploration. The MTV is designed around a set of 6 actuated wheels, organized in a Rocker-Bogie configuration. Unlike most lunar or Martian rovers, the wheels cannot rotate radially. The vehicle therefore operates in the same way as a tank, which makes manual control rather intuitive. diff --git a/body/mtv/README.zh-CN.md b/body/mtv/README.zh-CN.md index d7636ec85..fcaa255ef 100644 --- a/body/mtv/README.zh-CN.md +++ b/body/mtv/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

我们在此提出了一个原始 [OpenBot](https://www.openbot.org/) 车辆的全地形替代方案。由 **Ivy Tech LTD** 合作开发的多地形车辆 (MTV) 也基于廉价且易于打印的组件。MTV 的设计灵感来自过去几十年为月球和火星探索开发的多个探测车概念。MTV 采用 6 个驱动轮,按照摇杆-摇臂配置排列。与大多数月球或火星探测车不同,这些轮子不能径向旋转。因此,该车辆的操作方式类似于坦克,使得手动控制相当直观。 diff --git a/body/mtv/pcb/README.de-DE.md b/body/mtv/pcb/README.de-DE.md index 890e393f1..6e9bc0660 100644 --- a/body/mtv/pcb/README.de-DE.md +++ b/body/mtv/pcb/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

### Übersicht der Steuerungsarchitektur des MTV diff --git a/body/mtv/pcb/README.es-ES.md b/body/mtv/pcb/README.es-ES.md new file mode 100644 index 000000000..c0e6c12e5 --- /dev/null +++ b/body/mtv/pcb/README.es-ES.md @@ -0,0 +1,52 @@ +## Desarrollo de Electrónica y Control + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +### Resumen de la arquitectura de control del MTV + +La arquitectura de control del MTV es de tipo en cascada. Los comandos de alto nivel se calculan en un smartphone que ejecuta el marco de trabajo de Intel [OpenBot](https://www.openbot.org/). Estos comandos se pasan a una placa de control de bajo nivel ESP32 que maneja la generación de PWM así como la comunicación con los diferentes sensores del MTV (por ejemplo, encoders, sonares, etc.). + +

+ App GUI +

+ +La placa de control de bajo nivel ESP32 se comunica con el smartphone a través de una interfaz serial-USB dedicada. + +### Arquitectura de componentes y desarrollo de PCB + +La locomoción del MTV se basa en seis motores de corriente continua de 12V, es decir, tres motores en cada lado del rover. Cada motor está equipado con una caja de engranajes planetarios y un encoder magnético incorporado, lo que permite la estimación de la velocidad. Por lo tanto, se seleccionaron dos controladores de motor individuales para el desarrollo. Debido al alto consumo de corriente requerido, se añadieron controladores de motor de alta resistencia al diseño. Se propusieron controladores de motor comerciales para este desarrollo debido a la modularidad, es decir, la capacidad de cambiar los controladores de motor cuando sea necesario. La arquitectura general de componentes del MTV se ilustra en la siguiente figura: + +

+ App GUI +

+ +El tamaño general se consideró como uno de los factores limitantes al diseñar la PCB. Por lo tanto, el diseño de la PCB se dividió en dos partes principales como se ilustra a continuación, es decir, PCB principal y PCB de distribución de energía. La PCB principal acomoda los componentes principales del sistema, como el MCU ESP32, 2 controladores de motor, conexiones de motor, etc. La PCB de distribución de energía se diseñó para convertir el suministro de batería de entrada de 11.1V-12V en 12V y 5V. Es decir, suministro de 12V: controladores de motor. Suministro de 5V: ESP 32, encoders de motor, luces delanteras y traseras. Se utilizó una batería recargable LiPo de 11.1V para el diseño del MTV. Por lo tanto, se añadió una pantalla de voltaje como indicador del nivel de batería. + +

+ App GUI +

+ +Se diseñó un conjunto de PCBs personalizadas de 2 capas para propósitos de generación de energía y control: +

+ App GUI +

+

+ App GUI +

+

+ App GUI +

+Todos los puertos de interfaz de componentes de la PCB se diseñaron con modularidad y capacidad de fácil conexión y desconexión. Además, las líneas de alimentación de 12V y las líneas de señal de 5V se mantuvieron separadas para minimizar posibles interferencias. Se añadieron algunos puertos de salida de energía adicionales de 5V y 12V al diseño para permitir futuras expansiones. Además, se añadieron pines adicionales en paralelo con el ESP32, para que los usuarios puedan usar la PCB como una placa de desarrollo para actividades de expansión futuras. Las PCBs prototipadas (parcialmente cableadas y con ESP 32 y controladores de motor) se ilustran en las siguientes figuras: +

+ App GUI +

+ +

+ App GUI +

\ No newline at end of file diff --git a/body/mtv/pcb/README.fr-FR.md b/body/mtv/pcb/README.fr-FR.md index 500a5f7ad..d307a77aa 100644 --- a/body/mtv/pcb/README.fr-FR.md +++ b/body/mtv/pcb/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

### Vue d'ensemble de l'architecture de contrôle du MTV diff --git a/body/mtv/pcb/README.md b/body/mtv/pcb/README.md index ef005ceaf..9601051af 100644 --- a/body/mtv/pcb/README.md +++ b/body/mtv/pcb/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

### Control architecture overview of the MTV diff --git a/body/mtv/pcb/README.zh-CN.md b/body/mtv/pcb/README.zh-CN.md index b8274f273..ef4912743 100644 --- a/body/mtv/pcb/README.zh-CN.md +++ b/body/mtv/pcb/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

### MTV控制架构概述 diff --git a/body/rc_truck/README.de-DE.md b/body/rc_truck/README.de-DE.md index b5ddbed65..939853309 100644 --- a/body/rc_truck/README.de-DE.md +++ b/body/rc_truck/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Wir haben einen Roboterkörper für weit verbreitete RC-Spielzeug-Trucks/Buggys im Maßstab 1:16 entworfen (wie [diesen](https://www.amazon.de/dp/B00M3J7DJW) auf Amazon). diff --git a/body/rc_truck/README.es-ES.md b/body/rc_truck/README.es-ES.md new file mode 100644 index 000000000..88a10ee79 --- /dev/null +++ b/body/rc_truck/README.es-ES.md @@ -0,0 +1,146 @@ +# OpenBot: Cuerpo de Camión RC + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +Hemos diseñado un cuerpo de robot para camiones/buggies de juguete RC a escala 1:16 ampliamente disponibles (como [este](https://www.amazon.de/dp/B00M3J7DJW) en Amazon). + +![RC-Truck-Banner](/docs/images/rc-truck-banner.jpg) + +También tenemos un [cuerpo](/body/) genérico diseñado para un robot con ruedas simple que se basa en hardware de hobby de bajo costo y fácilmente disponible. Las instrucciones de construcción para el OpenBot regular se pueden encontrar [aquí](/body/README.es-ES.md). + +## Chasis + +El chasis del OpenBot RC-Truck consta de dos componentes principales: (a) Un camión de juguete RC a escala 1:16 de tu elección y (b) una serie de piezas diseñadas a medida que proporcionamos y que se pueden imprimir en 3D. + +### Camión de juguete RC a escala 1:16 + +Para construir tu propio OpenBot RC-Truck, necesitarás un camión/buggy de juguete RC a escala 1:16. Proporcionamos enlaces de Amazon a camiones de juguete RC compatibles para Alemania ([EU](https://www.amazon.de/dp/B00M3J7DJW)), ([EU](https://www.amazon.de/dp/B088FGVYNW)) y Estados Unidos ([US](https://www.amazon.com/gp/product/B09C8XMPQ9)) con envío rápido. También se pueden encontrar varios camiones de juguete similares a escala 1:16 en otros minoristas en línea como ebay, Alibaba o AliExpress, a menudo a precios reducidos pero con velocidad de envío lenta. + +Independientemente del minorista y la versión del camión de juguete RC que elijas para tu construcción, asegúrate de que sea realmente un camión RC a escala 1:16. Esto es importante porque las piezas impresas en 3D que proporcionamos están actualmente diseñadas para adaptarse solo a camiones a escala 1:16 con algunos ajustes menores (más sobre esto más adelante). A continuación se muestran algunos ejemplos de camiones de juguete RC a escala 1:16 compatibles. + +

+   + +         + + + +

+ +### Impresión 3D + +Necesitarás imprimir las siguientes piezas para construir tu OpenBot RC-Truck. + +1) ```main_frame``` ([STL](cad/rc_truck_body/main_frame.stl), [STEP](cad/rc_truck_body/main_frame.step)) +2) ```side_cover``` \[x2\] ([STL](cad/rc_truck_body/side_cover.stl), [STEP](cad/rc_truck_body/side_cover.step)) +3) ```phone_mount_bottom``` ([STL](../phone_mount/phone_mount_bottom.stl), [STEP](../phone_mount/phone_mount_bottom.step)) +4) ```phone_mount_top``` ([STL](../phone_mount/phone_mount_top.stl), [STEP](../phone_mount/phone_mount_top.step)) + +Nota que \[xN\] indica el número de copias (es decir, N) que necesitas imprimir de una pieza en particular (donde sea aplicable). + +Las siguientes piezas son opcionales (pero recomendadas) para hacer tu OpenBot RC-Truck más compacto y estéticamente agradable. + +5) ```camera_elevator``` ([STL](cad/rc_truck_body/camera_elevator.stl), [STEP](cad/rc_truck_body/camera_elevator.step)) +6) ```electronics_cover``` \[x2\] ([STL](cad/rc_truck_body/electronics_cover.stl), [STEP](cad/rc_truck_body/electronics_cover.step)) +7) ```spacer``` \[x4\] ([STL](cad/rc_truck_body/spacer.stl), [STEP](cad/rc_truck_body/spacer.step)) +8) ```front_light_spacer``` \[x2\] ([STL](cad/rc_truck_body/front_light_spacer.stl), [STEP](cad/rc_truck_body/front_light_spacer.step)) + +Para todas las piezas anteriores, tu placa de construcción necesita ser al menos de 260mmx220mm, que es el tamaño de impresión del ```main_frame```. + +Dado que muchas impresoras 3D comunes tienen un volumen de construcción más pequeño (generalmente 220mmx220mm), hay dos opciones más que pueden funcionar. +La primera opción es imprimir el ```main_frame``` a 45 grados con material de soporte adicional. +La segunda opción requiere modificar la pieza original ```main_frame```. Recomendamos usar [Autodesk Fusion 360](https://www.autodesk.com/products/fusion-360/overview) para tales modificaciones CAD (Fusion 360 tiene una licencia académica gratuita de 1 año disponible). +Para esta opción, ponemos a disposición su archivo [STEP](/body/cad/rc_truck_body/main_frame.step), que puedes cortar en dos/tres piezas más pequeñas. +Las sub-piezas resultantes se ajustarán a una placa de construcción estándar (es decir, 220mmx220mm) y se pueden unir después de la impresión. +En el futuro, también podemos lanzar una versión modular del ```main_frame``` aquí. Todas las demás piezas requieren una placa de construcción mínima de 220mmx60mm. + +En una Ultimaker S5, logramos buenos resultados con los siguientes ajustes: + +- altura de capa: 0.2mm +- grosor de pared: 1.5mm +- densidad de relleno: 20% +- patrón de relleno: cuadrícula +- velocidad de impresión: 80 mm/s +- sin soporte + +Pudimos imprimir el chasis con PLA, CPE y ABS. En nuestra experiencia, la impresión no se vio muy afectada por los ajustes de impresión. Sin embargo, si tienes paciencia, imprimir más lento y con una altura de capa más pequeña mejorará la impresión. Además, agregar una estructura de soporte puede mejorar la impresión, pero requerirá trabajo adicional para eliminarla después. + +Antes de proceder con la construcción, es posible que necesites limpiar la impresión 3D. Sin embargo, usando los ajustes anteriores, no necesitamos ningún limado o limpieza durante nuestro proceso de construcción. Si es posible, recomendamos usar una combinación de dos colores diferentes (por ejemplo, verde/negro o rojo/negro) para imprimir diferentes partes del mismo OpenBot RC-Truck como se muestra a continuación. + +**Consejo:** Haz clic en las imágenes para abrirlas en resolución completa en una nueva pestaña. + +

+ + + +

+ +## Ensamblaje + +Si bien es posible construir tu OpenBot RC-Truck con un enfoque de bricolaje similar al OpenBot regular (ver componentes e instrucciones de construcción de bricolaje para OpenBot [aquí](/body/README.es-ES.md)), recomendamos usar la [PCB personalizada](/body/pcb) de OpenBot para construir y ensamblar el OpenBot RC-Truck. Esta opción es recomendada si deseas una construcción más limpia o quieres construir múltiples OpenBot RC-Trucks. Una ventaja adicional de usar nuestra [PCB personalizada](/body/pcb) es que puedes usar los mismos componentes para construir y cambiar entre diferentes cuerpos de OpenBot. + +### Lista de materiales + +El OpenBot RC-Truck se basa principalmente en electrónica de hobby fácilmente disponible. Proporcionamos enlaces de Amazon para Alemania (EU) y Estados Unidos (US) con envío rápido. Si tienes paciencia para esperar un poco más, también puedes obtener los componentes mucho más baratos en AliExpress (AE). Necesitarás los siguientes componentes. + +#### Componentes requeridos + +- 1x camión/buggy de juguete RC ([EU](https://www.amazon.de/dp/B00M3J7DJW), [EU](https://www.amazon.de/dp/B088FGVYNW), [US](https://www.amazon.com/gp/product/B09C8XMPQ9)) +- 1x Arduino Nano ([EU](https://www.amazon.de/dp/B01MS7DUEM), [US](https://www.amazon.com/dp/B00NLAMS9C), [AE](https://www.aliexpress.com/item/32866959979.html)) +- 1x OpenBot [PCB personalizada](/body/pcb) +- 1x cable USB OTG ([EU](https://www.amazon.de/gp/product/B075M4CQHZ), [US](https://www.amazon.com/dp/B07LBHKTMM), [AE](https://www.aliexpress.com/item/10000330515850.html)) +- 1x resorte o banda elástica ([EU](https://www.amazon.de/gp/product/B01N30EAZO/), [US](https://www.amazon.com/dp/B008RFVWU2), [AE](https://www.aliexpress.com/item/33043769059.html)) +- 6x tornillo M3x25 ([EU](https://www.amazon.de/dp/B07KFL3SSV), [US](https://www.amazon.com/dp/B07WJL3P3X), [AE](https://www.aliexpress.com/item/4000173341865.html)) +- 6x tuerca M3 ([EU](https://www.amazon.de/dp/B07JMF3KMD), [US](https://www.amazon.com/dp/B071NLDW56), [AE](https://www.aliexpress.com/item/32977174437.html)) +- Cables Dupont ([EU](https://www.amazon.de/dp/B07KYHBVR7), [US](https://www.amazon.com/dp/B07GD2BWPY), [AE](https://www.aliexpress.com/item/4000766001685.html)) + +#### Componentes opcionales + +- 1x Sensor ultrasónico ([EU](https://www.amazon.de/dp/B00LSJWRXU), [US](https://www.amazon.com/dp/B0852V181G/), [AE](https://www.aliexpress.com/item/32713522570.html)) +- 2x Interruptor de encendido/apagado ([EU](https://www.amazon.de/dp/B07QB22J62), [US](https://www.amazon.com/dp/B01N2U8PK0), [AE](https://www.aliexpress.com/item/1000005699023.html)) +- 4x LED naranja de 5mm ([EU](https://www.amazon.de/gp/product/B01NCL0UTQ), [US](https://www.amazon.com/dp/B077XD7MVB), [AE](https://www.aliexpress.com/item/4000329069943.html)) +- 4x LED rojo de 5mm ([EU](https://www.amazon.de/dp/B083HN3CLY), [US](https://www.amazon.com/dp/B077X95F7C), [AE](https://www.aliexpress.com/item/4000329069943.html)) +- 2x Lámparas LED blancas ([EU](https://www.amazon.de/-/en/gp/product/B06XTQSZDX), [US](https://www.amazon.com/gp/product/B01N2UPAD8), [AE](https://de.aliexpress.com/item/1005002991235830.html)) +- Resistor variable para LEDs ([EU](https://www.amazon.de/gp/product/B081TXJJGV), [US](https://www.amazon.com/dp/B0711MB4TL), [AE](https://de.aliexpress.com/item/1005003610664176.html)) + +### Instrucciones de construcción + +**Consejo:** Haz clic en las imágenes para abrirlas en resolución completa en una nueva pestaña. + +1. Desmonta el camión de juguete RC. Retira su cubierta superior y desatornilla los cuatro pasadores de montaje de la base como se muestra en las figuras a continuación. Guarda todos los pasadores de montaje y sus respectivos tornillos, ya que los usarás para montar el ```main_frame``` en el cuerpo del RC-Truck después de realizar todo el cableado. Todos los camiones de juguete RC compatibles vienen con dos motores: uno para el acelerador y otro para la dirección, un controlador de velocidad (con un UBEC incorporado de 5-7V) para el motor del acelerador y un paquete de baterías LiPo 2S 7.4V. Desmonta y retira el paquete de baterías de la base del camión y recárgalo con el cargador que vino con el camión. Expon/afloja los conectores de cables para ambos motores, así como la salida del UBEC del controlador de velocidad. En nuestro caso, la salida del UBEC era de 6V. +

+ + + +

+2. Nota que las dos dimensiones d1 y d2 (como se muestra a continuación) en el ```main_frame``` dependen del modelo del camión de juguete RC utilizado. Diseñamos nuestra pieza ```main_frame``` para [este](https://www.amazon.de/dp/B00M3J7DJW) modelo de camión de juguete RC. Según el camión (a escala 1:16) que uses, es posible que necesites ajustar estas dimensiones ligeramente usando el archivo ```main_frame``` [STEP](/body/cad/rc_truck_body/main_frame.step). Recomendamos usar [Autodesk Fusion 360](https://www.autodesk.com/products/fusion-360/overview) para tales modificaciones CAD (Fusion 360 tiene una licencia académica gratuita de 1 año disponible). Además, ten en cuenta que la pequeña cuña/triángulo en el ```main_frame``` representa la dirección hacia adelante. +

+ + +

+3. (Opcional) Instala el interruptor de encendido/apagado para alimentar el robot. Puedes hacer esto simplemente cortando el cable positivo que va del controlador de velocidad a la batería y soldando el interruptor entre las dos partes divididas de este cable. Asegúrate de que los conectores del interruptor estén aislados con tubo termorretráctil o cinta eléctrica y que el cable de alimentación sea lo suficientemente largo para que el interruptor pueda encajar a través de la abertura rectangular en la parte trasera del ```main_frame``` después del ensamblaje (ver la figura a continuación). +

+ + +

+4. (Opcional) Instala el sensor ultrasónico a través de la parrilla frontal del ```main_frame```. Puedes usar pegamento caliente para mantenerlo en su lugar si es necesario. Empuja suavemente el conector a una posición recta antes de colocarlo en su lugar. Esto hará que sea más fácil acceder al conector después del ensamblaje. Pasa los cables Dupont desde el conector ultrasónico hasta la abertura rectangular en la parte trasera del ```main_frame```. +

+ + + +

+5. (Opcional) Instala los LEDs naranjas para las señales de los indicadores tanto en la parte delantera como en la trasera del ```main_frame```. Puedes usar pegamento caliente para mantenerlos en su lugar si es necesario. Para cada lado, es decir, izquierdo y derecho, necesitas conectar los LEDs delanteros y traseros en paralelo. Para lograr esto, simplemente conecta sus terminales positivos y negativos juntos respectivamente. Al igual que el cable del sensor ultrasónico, pasa los cables positivos y negativos Dupont desde las señales de los indicadores izquierdo y derecho hasta la abertura rectangular en la parte trasera del ```main_frame``` donde se conectarán a sus respectivos pines de señal de indicador (tanto +ve como -ve) en la PCB. +

+ + + +

+**Consejo:** Para evitar el desorden y posibles errores de conexión a tierra durante el cableado, se recomienda formar un bucle de tierra unificado para los terminales negativos de todos los LEDs. Esto simplemente significa pasar un cable debajo del ```main_frame``` que conecte todos los terminales negativos de los LEDs. Este bucle de tierra luego se puede conectar al pin de tierra del Arduino Nano usando un solo cable Dupont, que se pasa a la abertura rectangular en la parte trasera del ```main_frame```. + +6. (Opcional) Instala las lámparas LED delanteras. Puedes usar pegamento caliente para mantener la base en su lugar y atornillar la lámpara en su respectiva base a través de la abertura frontal en cada lado. Conecta ambas lámparas LED delanteras en paralelo conectando sus terminales positivos y negativos juntos respectivamente. Dado que estas lámparas funcionan a 6V, puedes conectarlas directamente a la salida del UBEC a través de sus terminales positivos. Conecta los terminales negativos al \ No newline at end of file diff --git a/body/rc_truck/README.fr-FR.md b/body/rc_truck/README.fr-FR.md index 9e9483338..d422f73c3 100644 --- a/body/rc_truck/README.fr-FR.md +++ b/body/rc_truck/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Nous avons conçu une carrosserie de robot pour des camions/buggies RC à l'échelle 1:16 largement disponibles (comme [celui-ci](https://www.amazon.de/dp/B00M3J7DJW) sur Amazon). diff --git a/body/rc_truck/README.md b/body/rc_truck/README.md index 693a6d3c3..3ffc1da80 100644 --- a/body/rc_truck/README.md +++ b/body/rc_truck/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

We have designed a robot body for widely available 1:16 scale RC-toy trucks/buggies (such as [this](https://www.amazon.de/dp/B00M3J7DJW) on Amazon). diff --git a/body/rc_truck/README.zh-CN.md b/body/rc_truck/README.zh-CN.md index 91a77a15b..cfbf0e2b2 100644 --- a/body/rc_truck/README.zh-CN.md +++ b/body/rc_truck/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

我们为广泛使用的1:16比例RC玩具卡车/越野车(例如[这个](https://www.amazon.de/dp/B00M3J7DJW)在亚马逊上)设计了一个机器人车身。 diff --git a/body/rtr/README.de-DE.md b/body/rtr/README.de-DE.md index 4e342bbcc..656bc5c9c 100644 --- a/body/rtr/README.de-DE.md +++ b/body/rtr/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Die Ready-To-Run (RTR) Versionen des OpenBot-Fahrzeugs richten sich an ein Publikum, das nicht die Zeit oder den Willen hat, seinen eigenen Roboter zu bauen. Die RTR-Fahrzeuge kommen mit vollständig integrierter Elektronik, sind bereits auf Firmware-Ebene unterstützt und wurden sowohl aus Software- als auch aus Hardware-Perspektive gründlich getestet. Die RTR-Fahrzeuge sind in zwei verschiedenen Varianten erhältlich, die als "RTR_TT" und "RTR_520" bezeichnet werden. Beide Fahrzeuge basieren auf dem gleichen spritzwassergeschützten ABS-Gehäuse, sind jedoch für unterschiedliche Zwecke gedacht. Während der RTR_TT hauptsächlich für den Innenbereich vorgesehen ist, verfügt der RTR_520 über einen leistungsstärkeren Prozessor, bessere Motoren, stärkere Metallgetriebe und hat auch einen Satz Geländereifen, die sowohl den Innen- als auch den Außenbereich unterstützen. diff --git a/body/rtr/README.es-ES.md b/body/rtr/README.es-ES.md new file mode 100644 index 000000000..a957e2f84 --- /dev/null +++ b/body/rtr/README.es-ES.md @@ -0,0 +1,75 @@ +# OpenBot: Vehículos Listos para Usar (RTR) + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +Las versiones listas para usar (RTR) del vehículo OpenBot están dirigidas a una audiencia que no tiene la voluntad o el tiempo para construir su propio robot. Los vehículos RTR vienen con electrónica completamente integrada, ya están soportados a nivel de firmware y han sido exhaustivamente probados tanto desde una perspectiva de software como de hardware. Los vehículos RTR están disponibles en dos versiones diferentes, denominadas "RTR_TT" y "RTR_520". Ambos vehículos están construidos alrededor de la misma carcasa de ABS a prueba de salpicaduras, pero están destinados a diferentes propósitos. Mientras que el RTR_TT está principalmente destinado para uso en interiores, el RTR_520 viene con un procesador más potente, mejores motores, cajas de engranajes de metal más fuertes y también tiene un conjunto de ruedas todo terreno que soportan tanto el uso en interiores como en exteriores. +

+   + + + +

+ +### Pedido + +Los vehículos RTR OpenBot se pueden pedir [aquí](http://www.openbot.info/). + +## Construyendo el RTR tú mismo + +En caso de que quieras construir tu propio OpenBot RTR, necesitarás imprimir el chasis, fabricar las PCB y comprar los motores y un soporte para el teléfono. + +### Impresión 3D + +En caso de que aún quieras imprimir tu propio OpenBot RTR, necesitarás imprimir las siguientes partes. + +1) ```shell_bottom``` ([STL](cad/rtr_bottom.stl), [STEP](cad/rtr_bottom.step)) +2) ```shell_top``` ([STL](cad/rtr_top.stl), [STEP](cad/rtr_top.step)) +3) ```phone_mount``` ([STL](cad/rtr_mount.stl), [STEP](cad/rtr_mount.step)) + +

+ App GUI +

+ +### PCB + +Para cada una de las PCB, hay tres archivos. El archivo gerber contiene la PCB real, el archivo BOM (lista de materiales) contiene todos los componentes que se deben soldar en la PCB y el archivo centroid contiene las coordenadas de cada componente para el ensamblaje automático de la PCB. La placa base contiene la mayoría de los componentes. Hay tres variantes de la placa base. La Variante A es una placa desnuda con conectores para placas de control de motor externas y una placa de microcontrolador externa. La Variante B es una placa modular con un encabezado de pines para un microcontrolador externo. La Variante C es la placa base totalmente integrada que recomendaríamos para la mayoría de los usuarios. La placa del sensor de choque frontal contiene dos sensores de choque, un sensor de sonar y el controlador USB. Hay dos variantes de la placa del sensor de choque frontal, una con el controlador USB CH340G más barato y otra con el controlador USB CP2102N más confiable. Dependiendo de qué versión (motor TT o motor 520) quieras construir, necesitarás las siguientes PCB. + +#### Motor TT + +- 1x Placa base (Arduino) +- 1x Placa de LED de estado +- 1x Placa de sensor de choque frontal/superior/trasero +- 4x Placa de sensor de velocidad (Arduino) + +#### Motor 520 + +- 1x Placa base (ESP32) +- 1x Placa de LED de estado +- 1x Placa de sensor de choque frontal/superior/trasero + +#### Referencia de placas + +- Placa de LED de estado ([gerber](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/Gerber_Status_LED_Board_V1.zip),[bom](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/BOM_Status_LED_Board_V1.csv),[centroid](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/PickAndPlace_Status_LED_Board_V1.csv)) +- Placa de sensor de choque superior ([gerber](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/Gerber_BumpSensorTop_V1.zip),[bom](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/BOM_BumpSensorTop_V1.csv),[centroid](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/PickAndPlace_BumpSensorTop_V1.csv)) +- Placa de sensor de choque trasero ([gerber](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/Gerber_BumpSensorBack_V1.zip),[bom](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/BOM_BumpSensorBack_V1.csv),[centroid](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/PickAndPlace_BumpSensorBack_V1.csv)) +- Placa de sensor de choque frontal (CH340G) ([gerber](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/Gerber_SensorBoardFront_CH340G_V1.zip),[bom](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/BOM_SensorBoardFront_CH340G_V1.csv),[centroid](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/PickAndPlace_SensorBoardFront_CH340G_V1.csv)) +- Placa de sensor de choque frontal (CP2102N) ([gerber](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/Gerber_SensorBoardFront_CP2102N_V1.zip),[bom](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/BOM_SensorBoardFront_CP2102N_V1.csv),[centroid](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/PickAndPlace_SensorBoardFront_CP2102N_V1.csv)) +- Placa de sensor de velocidad (Arduino) ([gerber](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/Gerber_SpeedSensor_Arduino_V1.zip),[bom](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/BOM_SpeedSensor_Arduino_V1.csv),[centroid](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/PickAndPlace_SpeedSensor_Arduino_V1.csv)) +- Placa base integrada C (Arduino) ([gerber](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/Gerber_BaseBoard_Arduino_V1C.zip),[bom](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/BOM_BaseBoard_Arduino_V1C.csv),[centroid](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/PickAndPlace_BaseBoard_Arduino_V1C.csv)) +- Placa base integrada C (ESP32) ([gerber](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/Gerber_BaseBoard_ESP32_V1C.zip),[bom](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/BOM_BaseBoard_ESP32_V1C.csv),[centroid](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/PickAndPlace_BaseBoard_ESP32_V1C.csv)) +- Placa base modular B (Arduino) ([gerber](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/Gerber_BaseBoard_Arduino_V1B.zip),[bom](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/BOM_BaseBoard_Arduino_V1B.csv),[centroid](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/PickAndPlace_BaseBoard_Arduino_V1B.csv)) +- Placa base modular B (ESP32) ([gerber](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/Gerber_BaseBoard_ESP32_V1B.zip),[bom](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/BOM_BaseBoard_ESP32_V1B.csv),[centroid](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/PickAndPlace_BaseBoard_ESP32_V1B.csv)) +- Placa base desnuda A (Arduino) ([gerber](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/Gerber_BaseBoard_Arduino_V1A.zip),[bom](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/BOM_BaseBoard_Arduino_V1A.csv),[centroid](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/PickAndPlace_BaseBoard_Arduino_V1A.csv)) +- Placa de controlador de motor DRV8870 (Arduino) ([gerber](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/Gerber_MotorBoard_Arduino_V1_DRV8870.zip),[bom](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/BOM_MotorBoard_Arduino_V1_DRV8870.csv),[centroid](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/PickAndPlace_MotorBoard_Arduino_V1_DRV8870.csv)) +- Placa base desnuda A (ESP32) ([gerber](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/Gerber_BaseBoard_ESP32_V1A.zip),[bom](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/BOM_BaseBoard_ESP32_V1A.csv),[centroid](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/PickAndPlace_BaseBoard_ESP32_V1A.csv)) +- Placa de controlador de motor DRV8870 (ESP32) ([gerber](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/Gerber_MotorBoard_ESP32_V1_DRV8870.zip),[bom](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/BOM_MotorBoard_ESP32_V1_DRV8870.csv),[centroid](https://github.com/isl-org/OpenBot/blob/thias15/rtr/body/rtr/pcb/PickAndPlace_MotorBoard_ESP32_V1_DRV8870.csv)) + +## Siguiente + +Flashea el [Firmware de Arduino](../../firmware/README.es-ES.md) \ No newline at end of file diff --git a/body/rtr/README.fr-FR.md b/body/rtr/README.fr-FR.md index 9cf8f14d0..a3ae4572e 100644 --- a/body/rtr/README.fr-FR.md +++ b/body/rtr/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Les versions prêtes-à-l'emploi (RTR) du véhicule OpenBot sont destinées à un public qui n'a pas la volonté ou le temps de construire son propre robot. Les véhicules RTR sont livrés avec des composants électroniques entièrement intégrés, sont déjà pris en charge au niveau du firmware et ont été rigoureusement testés tant du point de vue logiciel que matériel. Les véhicules RTR sont disponibles en deux versions différentes, appelées "RTR_TT" et "RTR_520". Les deux véhicules sont construits autour de la même coque en ABS étanche, mais sont destinés à des usages différents. Alors que le RTR_TT est principalement destiné à une utilisation en intérieur, le RTR_520 est équipé d'un processeur plus puissant, de meilleurs moteurs, de boîtes de vitesses en métal plus robustes et dispose également d'un ensemble de roues tout-terrain permettant une utilisation à la fois en intérieur et en extérieur. diff --git a/body/rtr/README.md b/body/rtr/README.md index 5f6f09e8f..4aea5c62c 100644 --- a/body/rtr/README.md +++ b/body/rtr/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

The ready-to-run (RTR) versions of the OpenBot vehicle are targetting an audience which does not have the will or time to build its own robot. The RTR vehicles come with fully integrated electronics, are already supported at the firmware level and have been thoroughly tested both from a software and hardware perspective. The RTR vehicles are available in two different flavours, referred to as "RTR_TT" and "RTR_520". Both vehicles are built around the same splash-proof ABS shell, but are intended for different purposes. While the RTR_TT is primarily intended for indoor use, the RTR_520 comes with a more powerful processor, better motors, stronger metal gearboxes and also has a set of all-terrain wheels supporting both indoor and outdoor use. diff --git a/body/rtr/README.zh-CN.md b/body/rtr/README.zh-CN.md index a107a6a93..7191aedfd 100644 --- a/body/rtr/README.zh-CN.md +++ b/body/rtr/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

即插即用 (RTR) 版本的 OpenBot 车辆是面向那些没有意愿或时间自己组装机器人的用户。RTR 车辆配备了完全集成的电子设备,已经在固件层面得到了支持,并且从软件和硬件角度都经过了彻底测试。RTR 车辆有两种不同的版本,分别称为 "RTR_TT" 和 "RTR_520"。两种车辆都基于相同的防溅 ABS 外壳,但用途不同。RTR_TT 主要用于室内,而 RTR_520 配备了更强大的处理器、更好的电机、更坚固的金属齿轮箱,并且还配有一套全地形轮胎,支持室内和室外使用。 diff --git a/controller/README.de-DE.md b/controller/README.de-DE.md index 766bb0bd6..113998756 100644 --- a/controller/README.de-DE.md +++ b/controller/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Es gibt mehrere Möglichkeiten, den OpenBot-Roboter zu steuern. diff --git a/controller/README.es-ES.md b/controller/README.es-ES.md new file mode 100644 index 000000000..dd72773dd --- /dev/null +++ b/controller/README.es-ES.md @@ -0,0 +1,27 @@ +# Controladores de OpenBot + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +Hay varias formas de controlar el robot OpenBot. + +## Controlador Bluetooth + +La forma más fácil de controlar el robot es conectar un mando de juego vía bluetooth. La mayoría de los mandos BT deberían funcionar. Hemos probado el [mando de PS4](https://www.amazon.de/-/en/Sony-Dualshock-Gamepad-Playstation-Black/dp/B01LYWPQUN), el [mando de XBox](https://www.amazon.de/-/en/QAT-00002/dp/B07SDFLVKD) y varios mandos de terceros como el [X3](https://www.amazon.com/Controller-Wireless-Joystick-Bluetooth-Android/dp/B08H5MM64P). + +## [Controlador Node.js](node-js) + +Este controlador requiere que tu teléfono y una computadora (por ejemplo, laptop, Raspberry PI) estén conectados a la misma red WiFi. Después de una conexión exitosa, obtienes una transmisión de video en vivo de baja latencia y puedes usar tu teclado para controlar el robot desde el navegador. + +Agradecimientos especiales a Ivo Zivkov [izivkov@gmail.com](mailto:izivkov@gmail.com) por el desarrollo. + +## [Controlador Python](python) + +Este controlador requiere que tu teléfono y una computadora (por ejemplo, laptop, Raspberry PI) estén conectados a la misma red WiFi. Después de una conexión exitosa, obtienes una transmisión de video RTSP en vivo y puedes usar tu teclado para controlar el robot desde la terminal. Puedes usar el script de Python como plantilla para desarrollar tu propio controlador. + +Agradecimientos especiales a Ivo Zivkov [izivkov@gmail.com](mailto:izivkov@gmail.com) por el desarrollo. \ No newline at end of file diff --git a/controller/README.fr-FR.md b/controller/README.fr-FR.md index bdea59922..092cf7709 100644 --- a/controller/README.fr-FR.md +++ b/controller/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Il existe plusieurs façons de contrôler le robot OpenBot. diff --git a/controller/README.md b/controller/README.md index 75243dba8..57a3e016c 100644 --- a/controller/README.md +++ b/controller/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

There are several ways for controlling the OpenBot robot. diff --git a/controller/README.zh-CN.md b/controller/README.zh-CN.md index 875da2f01..f188152cd 100644 --- a/controller/README.zh-CN.md +++ b/controller/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

有几种方法可以控制 OpenBot 机器人。 diff --git a/controller/flutter/README.de-DE.md b/controller/flutter/README.de-DE.md index 9089017aa..e99648431 100644 --- a/controller/flutter/README.de-DE.md +++ b/controller/flutter/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Diese Controller-App dient als `Fernbedienung` für das [OpenBot](https://www.openbot.org) Fahrzeug, ähnlich wie ein BT-Controller (z.B. PS3/4 oder Xbox). Sie läuft auf einem anderen Android/iOS-Gerät und unterstützt neben der Steuerung auch Live-Video-/Audio-Streaming. diff --git a/controller/flutter/README.es-ES.md b/controller/flutter/README.es-ES.md new file mode 100644 index 000000000..c8c422af4 --- /dev/null +++ b/controller/flutter/README.es-ES.md @@ -0,0 +1,113 @@ +# Flutter Controller App + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +Esta aplicación de control sirve como un `control remoto` para el vehículo [OpenBot](https://www.openbot.org) similar a un controlador BT (por ejemplo, PS3/4 o Xbox). Se ejecuta en otro dispositivo Android/iOS y admite transmisión de video/audio en vivo además del control. + +## Comenzando +Comienza instalando [Flutter](https://flutter.dev/) en tu sistema. Elige la descarga adecuada para tu sistema operativo, que incluye opciones para Windows, macOS, Linux y ChromeOS. Sigue la guía oficial de instalación de Flutter para obtener instrucciones detalladas: [Guía de Instalación de Flutter](https://docs.flutter.dev/get-started/install) + +### Usando Terminal +- Una vez que Flutter esté instalado correctamente, abre tu **terminal** o **símbolo del sistema**. +- Cambia tu directorio actual a la ubicación donde se almacena el proyecto OpenBot y luego navega a `OpenBot/controller/flutter`. +- Usa los siguientes comandos para ejecutar la aplicación Flutter desde la terminal. + + #### Instalar Dependencias: + ```bash + flutter pub get + ``` + Ejecutar el proyecto: + ```bash + flutter run + ``` + Si encuentras algún problema, ejecuta el siguiente comando: + ```bash + flutter doctor + ``` +### Usando Editor +- Sigue la guía oficial de Flutter para configurar un editor: [Configurar un editor](https://docs.flutter.dev/tools/android-studio) +- Asegúrate de que tu editor esté configurado para el desarrollo con Flutter. Instala los plugins o extensiones necesarios, siguiendo las instrucciones específicas del editor en la documentación de Flutter para la mejor experiencia de desarrollo. + +- Una vez que abras tu proyecto en el editor después de la configuración, aparecerá como se muestra en la siguiente imagen. + +

+ +

+ +- Sigue las instrucciones similares a las mencionadas anteriormente para ejecutar Flutter en la terminal y ejecuta directamente usando el botón ``run`` para repeticiones futuras. + +

+ +

+ +## Conexión + +Cuando se inicia la aplicación de control, intenta conectarse inmediatamente al robot y muestra la siguiente pantalla: + +

+ +

+ +Para conectar el controlador al robot, configura el modo de control del robot en **Phone**. +Por ejemplo, en el `FreeRoamFragment` el modo teléfono se activa así: + +

+ +

+ +Una vez conectado, la aplicación de control se verá así: + +

+ +

+ +Aquí puedes seleccionar conducir el robot inclinando el teléfono o usando los controles en pantalla. + +***Nota:*** Esto debería ser suficiente para conectar, pero si la conexión no se puede establecer después de 30 segundos, alterna +la configuración de `Control` en la aplicación del robot a `Gamepad` y luego a `Phone` nuevamente para reiniciar la conexión. Si eso +falla, cierra la aplicación de control y vuelve a iniciarla. Alterna el modo de control nuevamente en la aplicación del robot. + +## Operación + +### Controles en pantalla + +Este modo permite al usuario controlar el coche robot a través de dos deslizadores en modo `Dual Drive`. Puedes girar a la izquierda/derecha moviendo el pulgar del deslizador hacia arriba y hacia abajo en cada lado. Las ruedas de cada lado giran hacia adelante/atrás cuando se mueve el pulgar por encima/debajo del centro del deslizador. + +

+ +

+ +- ``Indicadores``: También puedes configurar los indicadores de giro a la izquierda/derecha haciendo clic en las flechas en la parte superior izquierda de la pantalla. + +- ``Cambiar Cámara``: cambiar entre los modos de cámara frontal y trasera. +- ``Silenciar``: habilitar/deshabilitar la transmisión de audio. +- ``Vista en espejo``: espejar la transmisión de video. + +### Inclinar para conducir + +El controlador también puede usar su sensor de movimiento acelerómetro para conducir el robot. Si seleccionas esta opción, el +controlador entrará en un modo de pantalla completa (Zen) con solo el video mostrando y los pedales de `freno` y `acelerador`. Para +salir de este modo, toca dos veces en la pantalla. + +Aquí hay una imagen de la pantalla del `modo inclinación`: + +

+ +

+ +Usa los botones de `acelerador` y `freno` para moverte hacia adelante/atrás. + +- Presionar el `acelerador` acelerará el robot a toda velocidad en 2 segundos. Cuando sueltes el botón, el + robot se desacelerará hasta detenerse (la velocidad de parada se establece en 0% de la velocidad máxima, se puede ajustar). +- Presionar el botón de `freno` detendrá inmediatamente el robot. Si mantenemos el freno durante otro segundo, el robot + comenzará a moverse hacia atrás hasta alcanzar la velocidad máxima en reversa en un segundo. Cuando soltemos el freno, el + robot se detendrá. +- El robot se dirige inclinando el teléfono controlador hacia la izquierda o la derecha. + +Aquí hay una [Descripción Técnica](../../docs/technical/OpenBotController.pdf) de la aplicación de control. \ No newline at end of file diff --git a/controller/flutter/README.fr-FR.md b/controller/flutter/README.fr-FR.md index fd8f37d88..ee97061b7 100644 --- a/controller/flutter/README.fr-FR.md +++ b/controller/flutter/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Cette application de contrôleur sert de `télécommande` pour le véhicule [OpenBot](https://www.openbot.org), similaire à une manette BT (par exemple, PS3/4 ou Xbox). Elle fonctionne sur un autre appareil Android/iOS et prend en charge la diffusion en direct de vidéo/audio en plus du contrôle. diff --git a/controller/flutter/README.md b/controller/flutter/README.md index d2a366bc0..74f9c3e7c 100644 --- a/controller/flutter/README.md +++ b/controller/flutter/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

This Controller app serves as a `remote controller` for the [OpenBot](https://www.openbot.org) vehicle similar as a BT controller (e.g. PS3/4 or Xbox). It runs on another Android/iOS device and supports live video/audio streaming in addition to control. diff --git a/controller/flutter/README.zh-CN.md b/controller/flutter/README.zh-CN.md index 59df41375..af805f805 100644 --- a/controller/flutter/README.zh-CN.md +++ b/controller/flutter/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

这个控制器应用程序作为 [OpenBot](https://www.openbot.org) 车辆的 `远程控制器`,类似于 BT 控制器(例如 PS3/4 或 Xbox)。它运行在另一台 Android/iOS 设备上,除了控制功能外,还支持实时视频/音频流。 diff --git a/controller/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.de-DE.md b/controller/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.de-DE.md index 17d10b22e..c18dfc09e 100644 --- a/controller/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.de-DE.md +++ b/controller/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.de-DE.md @@ -2,7 +2,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

# Startbildschirm-Assets diff --git a/controller/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.es-ES.md b/controller/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.es-ES.md new file mode 100644 index 000000000..3dfabe62f --- /dev/null +++ b/controller/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.es-ES.md @@ -0,0 +1,13 @@ +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +# Recursos de la Pantalla de Inicio + +Puedes personalizar la pantalla de inicio con tus propios recursos deseados reemplazando los archivos de imagen en este directorio. + +También puedes hacerlo abriendo el proyecto Xcode de tu proyecto Flutter con `open ios/Runner.xcworkspace`, seleccionando `Runner/Assets.xcassets` en el Navegador de Proyectos y arrastrando las imágenes deseadas. \ No newline at end of file diff --git a/controller/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.fr-FR.md b/controller/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.fr-FR.md index ba6793f4b..66b0156a2 100644 --- a/controller/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.fr-FR.md +++ b/controller/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.fr-FR.md @@ -2,7 +2,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

# Actifs de l'écran de lancement diff --git a/controller/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/controller/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md index 1170ee755..e005bfba8 100644 --- a/controller/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md +++ b/controller/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -2,7 +2,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

# Launch Screen Assets diff --git a/controller/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.zh-CN.md b/controller/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.zh-CN.md index 6971f63ed..9c195e5d7 100644 --- a/controller/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.zh-CN.md +++ b/controller/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.zh-CN.md @@ -2,7 +2,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

# 启动屏幕资源 diff --git a/controller/node-js/README.de-DE.md b/controller/node-js/README.de-DE.md index 1536865ea..e0779f63b 100644 --- a/controller/node-js/README.de-DE.md +++ b/controller/node-js/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## Nomenklatur diff --git a/controller/node-js/README.es-ES.md b/controller/node-js/README.es-ES.md new file mode 100644 index 000000000..35c21d1d7 --- /dev/null +++ b/controller/node-js/README.es-ES.md @@ -0,0 +1,94 @@ +# Controlador OpenBot Nodejs + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +## Nomenclatura + +Aquí hay algunos términos que utilizaremos en este documento: + +* ```Robot, bot``` - este es el software de Android que se ejecuta en el teléfono en el vehículo [OpenBot](https://www.openbot.org/). +* ```Servidor``` - el servidor node, la parte del servidor de este proyecto. +* ```Cliente, UI``` - esta es la parte del cliente de este proyecto. Se ejecuta en el navegador. + +## Introducción + +Este es un proyecto basado en [Node.js](https://nodejs.org/) que actúa como controlador para el vehículo [OpenBot](https://www.openbot.org/). El software consta de dos partes: un servidor y un cliente. El servidor es una aplicación Node.js que se ejecuta en una computadora en la misma red que el Robot. La parte del cliente se ejecuta en el navegador. + +Aquí hay una captura de pantalla del navegador: + +![Screenshot](images/Screenshot.png "image_tooltip") + +## Empezando + +Puedes ejecutar este software en una PC, un dispositivo tipo RaspberryPi o incluso en dispositivos [Pi Zero](https://www.raspberrypi.com/products/raspberry-pi-zero/) que soporten el entorno ```Node.js```. Primero asegúrate de haber instalado [Node.js](https://nodejs.org/), versión 10 o más reciente. Verifica la versión: + + node --version + +El software se encuentra en el directorio ```/controller/node-js``` del proyecto OpenBot. Después de clonar el código desde [github](https://github.com/isl-org/OpenBot), cambia a este directorio y ejecuta los siguientes comandos: + + npm install + npm start + +El último comando iniciará el servidor. Si deseas ejecutar el servidor sin una terminal en segundo plano, en ```Linux/MacOS``` puedes ejecutar: + + npm run start-nohup + +o simplemente: + + nohup npm start + +Apunta tu navegador a la dirección IP del servidor en el puerto 8081, por ejemplo [http://localhost:8081](http://localhost:8081), o [http://192.168.1.100:8081](http://192.168.1.100:8081). Ten en cuenta que puedes acceder al servidor desde una computadora diferente, pero el Robot, el servidor y la PC del navegador deben estar en la misma red. En el futuro, podemos agregar la capacidad de acceder al servidor de forma remota. + +Asegúrate de que tu Robot esté conectado a la misma red. En la aplicación Android del Robot, ve al panel ```General``` y selecciona ```Phone``` como el controlador. Esto conectará la aplicación de Android al servidor Node, y un video aparecerá en la UI. + +## Cómo Funciona + +1. El servidor Node crea y publica un servicio DNS de tipo ```openbot.tcp``` y un nombre ```OPEN_BOT_CONTROLLER``` en el puerto 19400. Esto permite que el Robot encuentre automáticamente el servidor sin conocer su dirección IP. El Robot está buscando este servicio y establecerá una conexión Socket cuando se ponga en el modo de controlador ```Phone```. + +2. El servidor Node crea un servidor HTTP en el puerto 8081 y comienza a atender solicitudes del navegador. + +3. Además, el servidor Node crea un servidor WebSocket en el puerto 7071. Esto se utilizará para comunicarse directamente con el navegador. Entonces, para resumir hasta ahora, el servidor ha creado dos conexiones Socket, una para el Robot y otra para el Navegador. + +4. El usuario ingresa comandos de teclado desde el navegador. Estas pulsaciones de teclas se envían al Servidor a través del WebSocket. El servidor convierte estos comandos en comandos que el Robot puede entender, como ```{driveCmd: {r:0.4, l:0.34}}``` (una lista de todos los comandos se puede encontrar en la documentación para el controlador de Android [aquí](https://github.com/isl-org/OpenBot/blob/master/docs/technical/OpenBotController.pdf)). Estos comandos se envían al Robot a través de la conexión Socket. + +5. El Robot envía información de estado de vuelta al servidor en la conexión Socket, y el servidor la reenvía a la UI. La UI puede usar esta información para mejorar su apariencia, como mostrar indicadores parpadeantes, etc., pero actualmente este estado se ignora. + +6. El servidor Node también actúa como un proxy de señalización WebRTC. Reenvía comandos de negociación WebRTC entre el robot y el navegador. Reutiliza las conexiones socket abiertas para ese propósito, por lo que no se requiere una conexión o configuración adicional. + +![drawing](images/HowItWorks.png) + +## Desarrollo + +Este código utiliza [snowpack](https://www.snowpack.dev/) para una herramienta de construcción rápida y ligera. + +Usamos [eslint](https://eslint.org/) para el linting y formateo automático de tu código. Se recomienda que ejecutes lint y corrijas cualquier error antes de comprometer nuevo código. Si estás usando Visual Code, puedes obtener un plugin [aquí](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint). Ejecuta el linter así: + + npm run lint + +## Producción + +Para construir una versión de producción del ```cliente```, ejecuta: + + npm run build + +Esto optimizará el código del cliente en un directorio ```build```, que puede ser desplegado en un servidor. Además, necesitamos configurar un gestor de procesos para reiniciar el servidor, y posiblemente un proxy inverso como [nginx](https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/), lo cual aún no se ha hecho. + +## Solución de Problemas + +* A veces el navegador no mostrará el menú de comandos, solo el título. Esto significa que no se pudo establecer la conexión WebSocket. Esto usualmente ocurre justo después de iniciar el servidor. Si examinas la consola del navegador, puedes encontrar un mensaje sobre no poder conectar, algo como ```WebSocket connection to 'ws://localhost:7071/ws' failed```. Mata todos los procesos node (pkill -9 node) y reinícialo. Recarga la página y la conexión debería establecerse. +* Si no puedes conectar el teléfono a la aplicación, asegúrate de que no haya otra instancia de esta aplicación ejecutándose en esta máquina o en otra máquina en la misma red. + +## Errores Conocidos + +Ninguno. + +## Cosas por hacer/probar + +* Necesitamos investigar si podemos conectarnos al servidor de forma remota y si WebRTC seguirá funcionando. Deberíamos documentar la configuración del firewall para hacer esto posible. +* Necesitamos crear una configuración de ```producción```, posiblemente usando [pm2 process manager](https://www.npmjs.com/package/pm2) y [nginx](https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/). \ No newline at end of file diff --git a/controller/node-js/README.fr-FR.md b/controller/node-js/README.fr-FR.md index 6bd350418..5529af7fb 100644 --- a/controller/node-js/README.fr-FR.md +++ b/controller/node-js/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## Nomenclature diff --git a/controller/node-js/README.md b/controller/node-js/README.md index 6cb5b4f45..c2413bf81 100644 --- a/controller/node-js/README.md +++ b/controller/node-js/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## Nomenclature diff --git a/controller/node-js/README.zh-CN.md b/controller/node-js/README.zh-CN.md index c1c73be68..4d6f8a7fb 100644 --- a/controller/node-js/README.zh-CN.md +++ b/controller/node-js/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## 术语 diff --git a/controller/python/README.de-DE.md b/controller/python/README.de-DE.md index 03ecf7ae7..a38d877f3 100644 --- a/controller/python/README.de-DE.md +++ b/controller/python/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Dieses Python-Programm ermöglicht es Ihnen, den Roboter von einer (drahtlosen) Tastatur aus zu steuern und einen Videostream von der Kamera zu empfangen. Das Programm kann auf jedem Computer ausgeführt werden, der mit demselben Netzwerk wie das Telefon des Roboters verbunden ist. Es wurde auf einem Raspberry Pi 3 und einem MacBook entwickelt und getestet. Bevor Sie die folgenden Schritte ausführen, stellen Sie sicher, dass Sie den [Quellcode](https://github.com/isl-org/OpenBot#get-the-source-code) haben und navigieren Sie zum Ordner `controller`. diff --git a/controller/python/README.es-ES.md b/controller/python/README.es-ES.md new file mode 100644 index 000000000..f43dc1db1 --- /dev/null +++ b/controller/python/README.es-ES.md @@ -0,0 +1,96 @@ +# Controlador de Python + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +Este programa en Python te permite controlar el robot desde un teclado (inalámbrico) y recibir una transmisión de video desde la cámara. El programa puede ejecutarse en cualquier computadora conectada a la misma red que el teléfono del robot. Fue desarrollado y probado en una Raspberry Pi 3 y un MacBook. Antes de seguir los pasos a continuación, asegúrate de tener el [código fuente](https://github.com/isl-org/OpenBot#get-the-source-code) y navega a la carpeta `controller`. + +## Dependencias + +Recomendamos crear un entorno conda para OpenBot (si no se ha hecho ya). Las instrucciones para instalar conda se pueden encontrar [aquí](https://docs.conda.io/projects/conda/en/latest/user-guide/install/). Puedes crear un nuevo entorno con el siguiente comando: + +```bash +conda create -n openbot python=3.7 +``` + +Si no deseas instalar las dependencias globalmente, activa primero tu entorno conda: + +```bash +conda activate openbot +``` + +Asegúrate de estar en la carpeta `controller` dentro de tu repositorio local de OpenBot. Ahora, puedes instalar todas las dependencias con el siguiente comando: + +```bash +pip install -r requirements.txt +``` + +## Controlando el robot + +NOTA: Después de una conexión exitosa, puede que no sea posible conectar de nuevo a menos que la aplicación del robot se reinicie. + +Los scripts en Python esperarán una conexión entrante. En el teléfono con la aplicación del robot, ve al fragmento FreeRoam y cambia el modo de control al ícono del teléfono. El robot ahora intentará conectarse al script de Python (de la misma manera que se conectaría a la aplicación del controlador). Alternativamente, también puedes usar DefaultActivity y seleccionar `Phone` como controlador. + +### Usando Pygame + +Estos scripts te permiten conducir el robot usando el teclado de manera similar a un juego de carreras de autos. + +Ejecuta el controlador sin video: + +`python keyboard-pygame.py` + +Ejecuta el controlador con video: + +`python keyboard-pygame.py --video` + +Aquí está el uso: + +``` + W: Avanzar + S: Retroceder + A: Girar ligeramente a la izquierda (mientras conduces) + D: Girar ligeramente a la derecha (mientras conduces) + Q: Rotar a la izquierda + E: Rotar a la derecha + + M: Modo de conducción + N: Alternar ruido + Left: Indicador izquierdo + Right: Indicador derecho + Up: Cancelar indicadores + Down: Modo de red + SPACE: Alternar registro + ESC: Salir +``` + +### Usando Click + +También hay un script para prototipos que permite configurar el control del robot en incrementos en lugar de controlarlo dinámicamente. Este script usa la biblioteca click y requiere que el terminal permanezca en foco. + +Ejecuta el controlador: + +`python keyboard-click.py` + +Aquí está el uso: + +```bash + W: Aumentar velocidad + S: Disminuir velocidad + A: Girar más a la izquierda + D: Girar más a la derecha + R: Restablecer controles + + M: Modo de conducción + N: Alternar ruido + Left: Indicador izquierdo + Right: Indicador derecho + Up: Cancelar indicadores + Down: Modo de red + SPACE: Alternar registro + ESC: Salir +``` \ No newline at end of file diff --git a/controller/python/README.fr-FR.md b/controller/python/README.fr-FR.md index be3c207d7..82000bb63 100644 --- a/controller/python/README.fr-FR.md +++ b/controller/python/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Ce programme Python vous permet de contrôler le robot à partir d'un clavier (sans fil) et de recevoir un flux vidéo de la caméra. Le programme peut fonctionner sur n'importe quel ordinateur connecté au même réseau que le téléphone du robot. Il a été développé et testé sur un Raspberry Pi 3 et un MacBook. Avant de suivre les étapes ci-dessous, assurez-vous d'avoir le [code source](https://github.com/isl-org/OpenBot#get-the-source-code) et de naviguer vers le dossier `controller`. diff --git a/controller/python/README.md b/controller/python/README.md index 1b9651514..dcd0545d9 100644 --- a/controller/python/README.md +++ b/controller/python/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

This python program allows you to control the robot from a (wireless) keyboard and receive a video stream from the camera. The program can run on any computer connected to the same network as the robot's phone. It was developed and tested on a Raspberry Pi 3 and a MacBook. Before following the steps below, make sure you have the [source code](https://github.com/isl-org/OpenBot#get-the-source-code) and navigate to the `controller` folder. diff --git a/controller/python/README.zh-CN.md b/controller/python/README.zh-CN.md index 21c3e5ee0..580ca03fd 100644 --- a/controller/python/README.zh-CN.md +++ b/controller/python/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

这个 Python 程序允许你通过(无线)键盘控制机器人,并从摄像头接收视频流。该程序可以在任何连接到与机器人手机相同网络的计算机上运行。它在 Raspberry Pi 3 和 MacBook 上开发和测试。在按照以下步骤操作之前,请确保你已经获取了[源代码](https://github.com/isl-org/OpenBot#get-the-source-code)并导航到 `controller` 文件夹。 diff --git a/firmware/README.de-DE.md b/firmware/README.de-DE.md index 81baa2b5a..383a69074 100644 --- a/firmware/README.de-DE.md +++ b/firmware/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Wir verwenden eine Mikrocontroller-Einheit (MCU) als Brücke zwischen dem Roboterkörper und dem Smartphone. Wir stellen unsere [Firmware](openbot_nano/openbot_nano.ino) für den Arduino Nano mit einem ATmega328P-Mikrocontroller sowie für das ESP32-Entwicklungskit zur Verfügung. diff --git a/firmware/README.es-ES.md b/firmware/README.es-ES.md new file mode 100644 index 000000000..a3c247785 --- /dev/null +++ b/firmware/README.es-ES.md @@ -0,0 +1,172 @@ +# Firmware + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +Usamos una unidad de microcontrolador (MCU) para actuar como un puente entre el cuerpo del robot y el smartphone. Proporcionamos nuestro [firmware](openbot_nano/openbot_nano.ino) para el Arduino Nano con un microcontrolador ATmega328P, así como para el kit de desarrollo ESP32. + +## Características + +La tarea principal del MCU es manejar el control de bajo nivel del vehículo y proporcionar lecturas de los sensores montados en el vehículo. El MCU recibe los controles del vehículo y las señales de los indicadores a través de la conexión serial. Convierte los controles en señales PWM para el controlador del motor y activa los LEDs según la señal del indicador. El programa de Arduino también realiza un seguimiento de las rotaciones de las ruedas contando las interrupciones de los sensores ópticos en las ruedas delanteras izquierda y derecha. Calcula el voltaje de la batería mediante un promedio móvil escalado de las mediciones en el circuito divisor de voltaje. También puede medir la distancia a los obstáculos frente al coche con un sensor ultrasónico opcional. Estas mediciones se envían de vuelta a la aplicación de Android a través del enlace serial. + +## Configuración + +Primero debes configurar tu hardware al inicio del código. Si hiciste la construcción DIY (usando el controlador de motor L298N), establece `OPENBOT DIY`. Si usaste la PCB personalizada, verifica la versión y establece `OPENBOT PCB_V1` o `OPENBOT PCB_V2`. Si tienes un kit OpenBot, establece `OPENBOT RTR_TT`. Si has adaptado un camión RC, establece `OPENBOT RC_CAR`. Si usas la versión DIY más pequeña para educación, establece `OPENBOT LITE`. Si usas el kit OpenBot Ready-to-Run con motores 520, establece `OPENBOT RTR_520`. Si construiste el Vehículo Multi Terreno, debes establecer `OPENBOT MTV`. Para ejecutar el `OpenBot DIY` con el ESP32, establece `DIY_ESP32`. + +## Bluetooth + +Puedes ejecutar el OpenBot a través de Bluetooth también, para eso puedes habilitar el Bluetooth estableciendo `BLUETOOTH 1` (deshabilitar: 0). Para que el Bluetooth funcione necesitas OpenBot con placas ESP32 como `(RTR_520, MTV, DIY_ESP32)`. + +## Configuración + +A continuación, necesitas configurar qué características deseas habilitar. Las características deshabilitadas no se compilan para ahorrar memoria y hacer el código más rápido. Si una bandera no está definida, la característica se deshabilitará. Cada modelo tiene algunas configuraciones predeterminadas que puedes necesitar cambiar dependiendo de tu configuración. + +- Habilita el divisor de voltaje estableciendo `HAS_VOLTAGE_DIVIDER 1` (deshabilitar: 0). Si tienes un divisor de voltaje, también debes especificar el `VOLTAGE_DIVIDER_FACTOR` que se calcula como (R1+R2)/R2, `VOLTAGE_MIN` que es el voltaje mínimo para conducir los motores, `VOLTAGE_LOW` que es el voltaje mínimo de la batería y `VOLTAGE_MAX` que es el voltaje máximo de la batería. +- Habilita los LEDs indicadores estableciendo `HAS_INDICATORS 1` (deshabilitar: 0). +- Habilita los sensores de velocidad delanteros/traseros estableciendo `HAS_SPEED_SENSORS_FRONT 1` / `HAS_SPEED_SENSORS_BACK 1` (deshabilitar: 0). +- Habilita el sensor ultrasónico estableciendo `HAS_SONAR 1` (deshabilitar: 0). Habilita el filtro de mediana para las mediciones del sonar estableciendo `USE_MEDIAN 1` (deshabilitar: 0). +- Habilita el sensor de parachoques que se usa para detectar colisiones estableciendo `HAS_BUMPER 1` (deshabilitar: 0). +- Habilita la pantalla OLED estableciendo `HAS_OLED 1` (deshabilitar: 0). +- Habilita los LEDs delanteros/traseros/de estado estableciendo `HAS_LEDS_FRONT 1` / `HAS_LEDS_BACK 1` / `HAS_LEDS_STATUS 1` (deshabilitar: 0). + +### Dependencias + +Si has habilitado los sensores de velocidad o el sensor ultrasónico, necesitas instalar la biblioteca [PinChangeInterrupt](https://github.com/NicoHood/PinChangeInterrupt). El Arduino Nano solo tiene dos pines de interrupción externa (D2 y D3) y D3 es también uno de los seis pines que soportan PWM. Afortunadamente, también tiene tres interrupciones de puerto que cubren todos los pines del Arduino. Esta biblioteca analiza estas interrupciones de puerto permitiendo que todos los pines del Arduino se usen como interrupciones. + +Si has habilitado la OLED, necesitas instalar las bibliotecas [Adafruit_SSD1306](https://github.com/adafruit/Adafruit_SSD1306) y [Adafruit_GFX Library](https://github.com/adafruit/Adafruit-GFX-Library). + +Puedes instalar bibliotecas siguiendo estos pasos: +1. Abre el Administrador de Bibliotecas: `Herramientas` :arrow_right: `Administrar Bibliotecas` +2. Ingresa el nombre de la biblioteca en la barra de búsqueda. +3. Selecciona la última versión y haz clic en instalar. Si ya has instalado la biblioteca, se mostrará y podrás actualizarla. + +

+ + +

+ +### Nano clon chino (por ejemplo, enlace de EE.UU.) + +Es posible que necesites descargar los controladores [WCH340](http://www.wch.cn/product/CH340.html) del fabricante del chip (chino): + +- [Windows](http://www.wch.cn/downloads/CH341SER_EXE.html) +- [Linux](http://www.wch.cn/download/CH341SER_LINUX_ZIP.html) +- [Mac](http://www.wch.cn/download/CH341SER_MAC_ZIP.html) + +### Kit de desarrollo ESP32 + +Para instalar la placa ESP32 en tu IDE de Arduino, sigue estas instrucciones: + +1. En tu IDE de Arduino, ve a **Archivo > Preferencias**: +

+ App GUI +

+ +2. Ingresa *https://dl.espressif.com/dl/package_esp32_index.json* en el campo “*URLs adicionales del gestor de placas*” como se muestra en la figura a continuación. Luego, haz clic en el botón “OK”: +

+ App GUI +

+ +**Nota:** si ya tienes la URL de las placas ESP8266, puedes separar las URLs con una coma de la siguiente manera: + + https://dl.espressif.com/dl/package_esp32_index.json, + http://arduino.esp8266.com/stable/package_esp8266com_index.json + +3. Abre el Gestor de Placas. Ve a **Herramientas > Placa > Gestor de Placas**: +

+ App GUI +

+ +4. Busca ESP32 y presiona el botón de instalar para “ESP32 by Espressif Systems“: +

+ App GUI +

+ +5. Ahora deberías tener todo para flashear con éxito la placa ESP32 de tu OpenBot usando el entorno de desarrollo de Arduino. +

+ App GUI +

+ +6. Para flashear el OpenBot con tu nuevo código, simplemente selecciona **ESP32 Dev Module** en el menú **Herramientas > Placa > ESP32 Arduino**. Ten en cuenta que contenido adicional así como solución de problemas del proceso de flasheo del ESP32 se pueden encontrar en el siguiente [enlace](https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/). + +

+ App GUI +

+ +## Subir + +### Configuración (configuración de Arduino nano) + +- `Herramientas` :arrow_right: `Placa` :arrow_right: `Arduino AVR Boards` :arrow_right: `Arduino Nano` +- `Herramientas` :arrow_right: `Procesador` :arrow_right: `ATmega328P (Old Bootloader)` +- `Herramientas` :arrow_right: `Puerto` :arrow_right: `*Selecciona el puerto USB*` + +:memo: NOTA: Actualmente, la mayoría de las placas Arduino Nano baratas vienen con el *Old Bootloader*. Sin embargo, dependiendo del vendedor, también puedes obtener una con el nuevo bootloader. Así que si no puedes subir el firmware, es probable que necesites cambiar el procesador a *ATmega328P*. + +### Configuración (configuración de ESP32) + +- `Herramientas` :arrow_right: `Placa` :arrow_right: `ESP32 Arduino` :arrow_right: `ESP32 Dev Module` +- `Herramientas` :arrow_right: `Puerto` :arrow_right: `*Selecciona el puerto USB*` + +### Subiendo el firmware + +El firmware ahora se puede subir a través de `Sketch` :arrow_right: `Upload` o presionando el botón de subir (flecha derecha). +![Subir Firmware](../docs/images/firmware_upload.png) + +### Pruebas + +Esta sección explica cómo probar todas las funcionalidades del coche después de que el firmware se haya flasheado con éxito. + +1. Confirma que: + 1. las ruedas no están conectadas al coche + 2. el Arduino está conectado a la computadora + 3. el puerto USB correcto está seleccionado +2. Abre el Monitor Serial: `Herramientas` :arrow_right: `Monitor Serial` + +#### Enviando mensajes al OpenBot + +También puedes enviar mensajes al Arduino escribiendo un comando en el campo de entrada en la parte superior y luego presionando enviar. Los siguientes comandos están disponibles (siempre que las características necesarias sean compatibles con el robot): + +- `c,` donde `` y `` están en el rango [-255,255]. Un valor de `0` detendrá los motores. Un valor de `255` aplica el voltaje máximo conduciendo los motores a la velocidad máxima hacia adelante. Valores más bajos conducen a voltajes y velocidades proporcionalmente más bajos. Valores negativos aplican los voltajes correspondientes en polaridad inversa conduciendo los motores en reversa. +- `i,` donde `` y `` están en el rango [0,1] y corresponden a los LEDs indicadores izquierdo y derecho. Por ejemplo, `i1,0` enciende el indicador izquierdo, `i0,1` el derecho e `i1,1` ambos indicadores. Las luces indicadoras habilitadas parpadearán una vez por segundo. Un valor de `i0,0` apaga los indicadores. Solo es posible un estado a la vez. +- `l,` donde `` y `` están en el rango [0,255] y corresponden al brillo de los LEDs delanteros y traseros. +- `s` donde `` corresponde al tiempo en ms entre mediciones de sonar activadas (predeterminado = 1000). Después de adquirir la lectura del sonar, el mensaje se envía al robot. Si se agota el tiempo, se envía la `MAX_SONAR_DISTANCE` especificada. +- `w` donde `` corresponde al tiempo en ms entre mediciones de odometría de ruedas enviadas al robot (predeterminado = 1000). La velocidad de las ruedas se monitorea continuamente y el rpm se calcula como promedio durante el intervalo de tiempo especificado. +- `v` donde `` corresponde al tiempo en ms entre mediciones de voltaje enviadas al robot (predeterminado = 1000). El voltaje se monitorea continuamente y se filtra a través de un filtro de promedio móvil de tamaño 10. Además de establecer el intervalo de tiempo para las lecturas de voltaje, enviar este comando también activará mensajes que informan el voltaje mínimo para conducir los motores (`vmin:`), el voltaje mínimo de la batería (`vlow:`) y el voltaje máximo de la batería (`vmax:`). +- `h` donde `` corresponde al tiempo en ms después del cual el robot se detendrá si no se recibe un nuevo mensaje de latido (predeterminado = -1). +- `b` donde `` corresponde al tiempo en ms después del cual se restablecerá el disparador del parachoques (predeterminado = 750). +- `n,` donde `` corresponde a un LED de estado (`b` = azul, `g` = verde, `y` = amarillo) y `estado` a su valor (`0` = apagado, `1` = encendido). +- `f` enviará una solicitud al OpenBot para devolver un mensaje con el tipo de robot y sus características, por ejemplo, medición de voltaje (`v`), indicadores (`i`), sonar (`s`), sensores de parachoques (`b`), odometría de ruedas (`wf`, `wb`), LEDs (`lf`, `lb`, `ls`), etc. Por ejemplo, para la versión `RTR_V1` de OpenBot, el mensaje se vería así: `fRTR_V1:v:i:s:b:wf:wb:lf:lb:ls:`. + +#### Recibiendo mensajes del OpenBot + +Dependiendo de tu configuración, puedes ver diferentes mensajes. + +![Monitor Serial](../docs/images/serial_monitor.png) + +- Los mensajes que comienzan con `v` informan el voltaje de la batería. Si conectas la batería al coche (es decir, enciendes el interruptor), debería mostrar el voltaje de la batería. Si desconectas la batería (es decir, apagas el interruptor), debería mostrar un valor pequeño. +- Los mensajes que comienzan con `w` informan las lecturas de los sensores de velocidad medidas en revoluciones por segundo (rpm). Cada agujero en el disco del codificador incrementará un contador en más/menos uno dependiendo de la dirección. Puedes establecer el número de agujeros con el parámetro `DISK_HOLES`. Si estás usando el disco estándar con 20 agujeros, habrá 20 cuentas para cada revolución de la rueda. +- Los mensajes que comienzan con `s` informan el espacio libre estimado frente al sensor ultrasónico en cm. +- Los mensajes que comienzan con `b` informan colisiones. Los códigos `lf` (frontal izquierdo), `rf` (frontal derecho), `cf` (frontal central), `lb` (trasero izquierdo), `rb` (trasero derecho) indican qué sensor activó la colisión. + +#### Procedimiento de prueba + +Antes de continuar, asegúrate de que los neumáticos estén removidos. Necesitarás el Monitor Serial abierto para enviar comandos y verás los mensajes recibidos de tu OpenBot. Si tienes la pantalla OLED instalada, también verás el estado del vehículo allí en un formato más legible. El siguiente procedimiento de prueba se puede usar para probar todas las funcionalidades del coche: + +1. Enciende el coche y observa el voltaje de la batería (el número después de la `v`). Puedes verificar la lectura con un multímetro y ajustar el `VOLTAGE_DIVIDER_FACTOR` si es necesario. +2. Si tienes un sensor ultrasónico instalado: + 1. Sostén tu mano frente al sensor y muévela hacia adelante y hacia atrás. Deberías ver las lecturas (el número después de la `s`) cambiar correspondientemente. + 2. Hemos observado que el sensor ultrasónico es muy sensible a las vibraciones. Por lo tanto, es aconsejable asegurarse de que obtendrás lecturas confiables durante la operación realizando la siguiente prueba: + 1. Coloca el OpenBot con el sensor ultrasónico instalado de manera que haya al menos 200 cm de espacio libre frente a él. Deberías ver una lectura de `200` o más. + 2. Observa las lecturas en el monitor serial durante un tiempo y luego ingresa el comando `c128,128`. + 3. Si las lecturas del sensor cambian significativamente, necesitarás amortiguar las vibraciones transmitidas al sensor ultrasónico desde el chasis (por ejemplo, agregar algo de silicona, ajustar la posición de montaje). +3. Si tienes los sensores de velocidad instalados: + 1. Asegúrate de tener mucho espacio libre frente al sensor ultrasónico. La lectura (el número después de la `s`) debe estar al menos por encima del `STOP_DISTANCE` que es `10` por defecto. + 2. Envía el comando `c128,128`. Los motores comenzarán a girar a *baja velocidad* (50% PWM). Las lecturas del sensor de velocidad (valores después de la `w`) se informan en rpm y deben estar entre 250 y 300 para la versión RTR_TT dependiendo del SOC de la batería. Si estás usando la versión DIY o una batería más débil, los valores pueden ser más bajos. Verifica que todos los motores estén girando hacia adelante y que las lecturas del sensor de velocidad sean positivas. + 3. Intenta enviar diferentes controles y observa las lecturas del sensor de velocidad. Por ejemplo, el comando `c-128,-128` hará que todos los motores giren hacia atrás a *baja velocidad* (50% PWM). El comando `c255,-255` hará que los motores izquierdos giren hacia adelante y los derechos hacia atrás a *alta velocidad* (100% PWM). El comando `c-192,192` hará que los motores izquierdos giren hacia atrás y los derechos hacia adelante a *velocidad normal* (75% PWM). +4. Detén los motores enviando el comando `c0,0` o colocando tu mano \ No newline at end of file diff --git a/firmware/README.fr-FR.md b/firmware/README.fr-FR.md index 9edf5f9fe..1463227a4 100644 --- a/firmware/README.fr-FR.md +++ b/firmware/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Nous utilisons une unité de microcontrôleur (MCU) pour agir comme un pont entre le corps du robot et le smartphone. Nous fournissons notre [firmware](openbot_nano/openbot_nano.ino) pour l'Arduino Nano avec un microcontrôleur ATmega328P ainsi que pour le kit de développement ESP32. diff --git a/firmware/README.md b/firmware/README.md index 2e54efaa1..157609ded 100644 --- a/firmware/README.md +++ b/firmware/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

We use a microcontroller unit (MCU) to act as a bridge between the robot body and the smartphone. We provide our [firmware](openbot_nano/openbot_nano.ino) for the Arduino Nano with an ATmega328P microcontroller as well as for the ESP32 development kit. diff --git a/firmware/README.zh-CN.md b/firmware/README.zh-CN.md index 8b23a2a11..fca73032d 100644 --- a/firmware/README.zh-CN.md +++ b/firmware/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

我们使用微控制器单元(MCU)作为机器人主体和智能手机之间的桥梁。我们为使用ATmega328P微控制器的Arduino Nano以及ESP32开发套件提供了[固件](openbot_nano/openbot_nano.ino)。 diff --git a/ios/OpenBot/README.de-DE.md b/ios/OpenBot/README.de-DE.md index 3741c0cbf..26f6e404e 100644 --- a/ios/OpenBot/README.de-DE.md +++ b/ios/OpenBot/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## HAFTUNGSAUSSCHLÜSSE diff --git a/ios/OpenBot/README.es-ES.md b/ios/OpenBot/README.es-ES.md new file mode 100644 index 000000000..47914d153 --- /dev/null +++ b/ios/OpenBot/README.es-ES.md @@ -0,0 +1,163 @@ +# Robot iOS App - Beta Release + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +## DESCARGOS DE RESPONSABILIDAD + +1. **Seguridad:** Asegúrate siempre de operar en un entorno seguro. Ten en cuenta que tu teléfono podría dañarse en una colisión. Se requiere un cuidado especial al usar el control automatizado (por ejemplo, seguimiento de personas o política de conducción). Asegúrate de tener siempre un controlador de juego conectado y estar familiarizado con la asignación de teclas para poder detener el vehículo en cualquier momento. ¡Usa bajo tu propio riesgo! +2. **Aplicación en desarrollo:** La aplicación está en desarrollo y puede fallar o mostrar un comportamiento inesperado dependiendo del modelo de tu teléfono y la versión del sistema operativo. Asegúrate de probar todas las funcionalidades sin las ruedas conectadas. ¡Usa bajo tu propio riesgo! + +## Pantallas de la Aplicación + +### Menú Principal + +La aplicación comienza con una pantalla de menú que muestra todas las pantallas disponibles. La pantalla de conexión Bluetooth se puede abrir haciendo clic en el ícono de Bluetooth en la parte superior derecha. La pantalla de configuración se puede abrir con un clic en el ícono de configuración justo al lado. Al hacer clic en los otros íconos, el usuario puede acceder a varias pantallas cuyas funcionalidades se explican en las secciones siguientes. + +

+Menú Principal +Bluetooth +Configuración +

+ +#### Conexión Bluetooth + +A diferencia de la aplicación de Android, que permite conectar el smartphone a la placa de control de bajo nivel de un OpenBot a través de un cable USB, la aplicación de iOS se basa únicamente en una conexión inalámbrica Bluetooth de baja energía (BLE). Al abrir la pantalla de conexión Bluetooth en la aplicación de iOS (haciendo clic en el logotipo de Bluetooth desde la pantalla principal o desde cualquier fragmento), se muestra una lista de todos los dispositivos compatibles. La compatibilidad se asegura aquí utilizando una serie de UUID específicos asignados a un vehículo OpenBot tanto a nivel de [aplicación](https://github.com/3dwesupport/OpenBot/blob/090dcb28206195a7ee45a13b8ded968a8d365abe/ios/OpenBot/OpenBot/Utils/Constants.swift#L57) como de [firmware](https://github.com/3dwesupport/OpenBot/blob/090dcb28206195a7ee45a13b8ded968a8d365abe/firmware/openbot_nano/openbot_nano.ino#L115). Debes asegurarte de que estos UUID coincidan. Emparejar un dispositivo iOS con un vehículo OpenBot simplemente requiere seleccionar ese vehículo de la lista y presionar el botón "Conectar". La tasa de baudios predeterminada para la conexión está configurada en 115200 y se puede cambiar a nivel de aplicación y firmware. + +

+Conexión BLE +

+ +### Modo Libre + +El Modo Libre ofrece un control simple del robot con actualizaciones en tiempo real e información sobre la batería, velocidad y distancia de las superficies. También ofrece controles relacionados con el controlador, el modo de conducción y la velocidad. + +

+Texto alternativo +

+ +- **Batería**: El ícono de la batería muestra los niveles de batería en tiempo real del robot conectado. + +- **Modo de Conducción**: Hay 3 modos de conducción mostrados en la vista: + + - D -> Conducir, cuando el robot avanza + + - N -> Neutral, cuando el robot está estacionario + + - R -> Reversa, cuando el robot se mueve hacia atrás + +- **Velocidad**: El velocímetro muestra la velocidad en tiempo real del robot. + +- **Sonar**: La vista del sonar muestra la distancia del robot a un objeto que se aproxima en cm. + +- **Bluetooth**: Muestra el estado de la conexión Bluetooth con el microcontrolador. Al tocar el ícono, el usuario también puede ser redirigido a la pantalla de Bluetooth para ver/modificar la conexión. + +#### Control + +El primer botón es para seleccionar el **modo de control**. Hay dos modos de control diferentes: + +- **Gamepad**: La aplicación recibe controles de un controlador BT conectado. +- **Teléfono (Próximamente)**: El robot puede ser controlado a través de otro smartphone con la aplicación de controlador instalada o mediante un script de Python que se ejecuta en una computadora conectada a la misma red. + +El segundo botón es para seleccionar el **modo de conducción**. Hay tres modos de conducción diferentes al usar un controlador de juego (por ejemplo, PS4): + +- **Juego**: Usa los gatillos de los hombros derecho e izquierdo (R2, L2) para el acelerador hacia adelante y hacia atrás y cualquier joystick para la dirección. Este modo imita el modo de control de los videojuegos de carreras de autos. +- **Joystick**: Usa cualquiera de los joysticks para controlar el robot. +- **Dual**: Usa el joystick izquierdo y derecho para controlar el lado izquierdo y derecho del coche. Esto es dirección diferencial cruda. + +El tercer botón es para seleccionar el **modo de velocidad**. Hay tres modos de velocidad diferentes: + +- **Lento**: El voltaje aplicado a los motores está limitado al 50% del voltaje de entrada (~6V). +- **Normal**: El voltaje aplicado a los motores está limitado al 75% del voltaje de entrada (~9V). +- **Rápido**: No hay límite. El voltaje de entrada completo se aplicará a los motores a máxima aceleración (~12V). *Esta es la configuración predeterminada para ejecutar las redes neuronales.* + +Conducir a velocidades más altas reducirá la vida útil de los motores, pero es más divertido. Los controles que se envían al robot se muestran en el lado derecho. Al usar el controlador de juego, el modo de velocidad se puede aumentar presionando hacia abajo el joystick derecho (R3) y disminuir presionando hacia abajo el joystick izquierdo (L3). + +### Recolección de Datos + +Interfaz de usuario simple para la recolección de conjuntos de datos. + +

+ +Recolección de Datos + +

+ +- **Resolución de Vista Previa**: Se utiliza para cambiar entre resoluciones de vista previa de la cámara. Hay 3 configuraciones: + + - ***ALTA*** (1920x1080p) + + - ***MEDIA*** (1280x720p) + + - ***BAJA*** (640x360) + +- **Resolución del Modelo**: Se utiliza para cambiar entre resoluciones de imágenes guardadas para entrenar diferentes modelos. + +- **Registrar Datos Recogidos**: el proceso de recolección de datos se puede controlar desde la pantalla o de forma remota, por ejemplo, desde un controlador Bluetooth. Al usar un controlador Bluetooth, puedes: + + - presionar el **botón A** para **iniciar** el proceso de recolección de datos + + - presionar el **botón A nuevamente** para **detener** la recolección de datos y guardar los datos recogidos en un archivo .zip + + - alternativamente, presionar el **botón R1** para **detener** la recolección de datos **sin guardar** los datos recogidos (por ejemplo, debido a una colisión inesperada con el entorno) + + - recuerda usar el fragmento de asignación de controladores para asegurarte de que estás usando los botones correctos. + +- **Estado del Vehículo**: El campo **Batería** muestra el voltaje de la batería medido por el microcontrolador a través del divisor de voltaje. El campo **Velocidad (l,r)** informa la velocidad izquierda y derecha de las ruedas (delanteras) en rpm. Es medido por el microcontrolador a través de los sensores ópticos de velocidad de las ruedas. El campo **Sonar** muestra el espacio libre frente al coche en centímetros. Es medido por el microcontrolador a través del sensor ultrasónico. Ten en cuenta que solo recibirás valores unos segundos después de que se haya establecido la conexión USB. + +- **Sensores**: Informa las mediciones de los sensores del vehículo. Actualmente, registramos lecturas de los siguientes sensores: cámara, giroscopio, acelerómetro, magnetómetro, sensor de luz ambiental y barómetro. Usando la API de iOS, podemos obtener las siguientes lecturas de sensores: imágenes RGB, velocidad angular, aceleración lineal, gravedad, intensidad del campo magnético, intensidad de la luz, presión atmosférica, latitud, longitud, altitud, rumbo y velocidad. Además de los sensores del teléfono, registramos lecturas de sensores del cuerpo (odometría de las ruedas, distancia de obstáculos y voltaje de la batería), que se transmiten a través del enlace serie. También registramos y marcamos con tiempo las señales de control recibidas de un controlador conectado, si está presente. Por último, integramos varias redes neuronales para el seguimiento de personas y la navegación autónoma. + +### Asignación de Controladores + +Interfaz de usuario simple para verificar la asignación de botones y joysticks de un controlador BT conectado. + +

+Asignación de Controladores +

+ +### Información del Robot + +Interfaz de usuario simple para obtener información del robot y probar la funcionalidad básica. El **Tipo de Robot** configurado en el firmware se muestra como texto y animación. Las marcas de verificación en las secciones **Sensores**, **Odometría de Ruedas** y **LEDs** muestran qué características son compatibles con el robot conectado. La sección **Lecturas** proporciona las mediciones de sensores más importantes. En la sección **Enviar Comandos**, los usuarios pueden enviar comandos básicos de motor presionando los botones correspondientes y controlar los LEDs delanteros y traseros con un deslizador. + +

+Información del Robot +

+ +### Piloto Automático + +Interfaz de usuario simple para ejecutar modelos de piloto automático. + +

+ +Piloto Automático + +

+ +### Seguimiento de Objetos + +Interfaz de usuario simple para rastrear objetos de 80 clases diferentes. Una breve descripción de los diferentes modelos de IA para el seguimiento de objetos y los puntos de referencia de rendimiento se pueden encontrar en [Gestión de Modelos](#model-management). + +

+Seguimiento de Objetos +

+ +### Gestión de Modelos + +Todos los modelos están cuantizados para un mejor rendimiento en dispositivos integrados. Ten en cuenta que los modelos con mayor resolución de entrada pueden ser mejores para objetos más pequeños a pesar de un mAP más bajo. + +

+Gestión de Modelos +

+ +## Estructura del Código + +El [TensorFlow Lite Object Detection iOS Demo](https://github.com/tensorflow/examples/tree/master/lite/examples/object_detection/ios) se utilizó como punto de partida para integrar modelos TFLite y obtener la transmisión de la cámara. La carpeta [tflite](OpenBot/tflite) contiene las definiciones de los modelos para las redes de [Piloto Automático](OpenBot/tflite/Autopilot.swift) y [Detector](OpenBot/tflite/Detector.swift). + +## Siguiente (opcional) + +Entrena tu propia [Política de Conducción](../../policy/README.es-ES.md) \ No newline at end of file diff --git a/ios/OpenBot/README.fr-FR.md b/ios/OpenBot/README.fr-FR.md index e8619c6c5..688c21d3e 100644 --- a/ios/OpenBot/README.fr-FR.md +++ b/ios/OpenBot/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## AVERTISSEMENTS diff --git a/ios/OpenBot/README.md b/ios/OpenBot/README.md index 492377d96..4d5259e8a 100644 --- a/ios/OpenBot/README.md +++ b/ios/OpenBot/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## DISCLAIMERS diff --git a/ios/OpenBot/README.zh-CN.md b/ios/OpenBot/README.zh-CN.md index 3b732f735..452ab2cda 100644 --- a/ios/OpenBot/README.zh-CN.md +++ b/ios/OpenBot/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## 免责声明 diff --git a/ios/README.de-DE.md b/ios/README.de-DE.md index 0efd3c876..2af95bebf 100644 --- a/ios/README.de-DE.md +++ b/ios/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## Funktionen diff --git a/ios/README.es-ES.md b/ios/README.es-ES.md new file mode 100644 index 000000000..f675053b7 --- /dev/null +++ b/ios/README.es-ES.md @@ -0,0 +1,42 @@ +# Aplicaciones iOS - Versión Beta + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +## Características + +Haz clic en los enlaces a continuación para leer sobre las características de las aplicaciones. + +- [Aplicación Robot](OpenBot/README.es-ES.md) +- Aplicación Controladora (Próximamente) + +## Instalar las aplicaciones +Actualmente, la única forma de ejecutar las aplicaciones iOS en tus teléfonos es a través de las versiones de desarrollador, como se describe en la sección a continuación. + +## Construir las aplicaciones + +### Requisitos previos + +- [Xcode iOS 13 o posterior](https://developer.apple.com/xcode/) para construir e instalar las aplicaciones. +- [Cocoapods](https://cocoapods.org/) instalado en tu sistema. +- Actualmente, estamos utilizando la versión 15.5 del objetivo de despliegue de iOS. +- El proyecto está configurado como "Gestionar la firma automáticamente", por lo que puedes configurar tu propia cuenta independiente para construir la aplicación - + Aplicación iOS +- Para configurar tu propio equipo, agrega tu cuenta de iCloud a través de XCode > Configuración > Cuentas o directamente desde el menú Equipo arriba. +- Dispositivo iOS con iOS 13 o posterior como mínimo. [Lista de dispositivos compatibles](https://support.apple.com/en-in/guide/iphone/iphe3fa5df43/ios). +- [Modo desarrollador](https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device) activado en tu dispositivo iOS. +- La cuenta de iCloud agregada debe ser [confiable por tu dispositivo iOS](https://developer.apple.com/forums/thread/685271). + +### Proceso de construcción + +1. Abre XCODE y selecciona *abrir un proyecto o archivo*. +2. Para instalar la [aplicación OpenBot](OpenBot/README.es-ES.md) asegúrate de seleccionar la configuración *OpenBot*. + Aplicación iOS +3. Selecciona tu dispositivo de la lista de dispositivos disponibles. + Aplicación iOS +4. Ejecuta la aplicación en el dispositivo haciendo clic en el icono ▶️ en la parte superior izquierda de la pantalla de Xcode. \ No newline at end of file diff --git a/ios/README.fr-FR.md b/ios/README.fr-FR.md index fa289522c..406854607 100644 --- a/ios/README.fr-FR.md +++ b/ios/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## Fonctionnalités diff --git a/ios/README.md b/ios/README.md index 8f660a0ab..f36321fa2 100644 --- a/ios/README.md +++ b/ios/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## Features diff --git a/ios/README.zh-CN.md b/ios/README.zh-CN.md index b46b09b39..cb2b2b6d7 100644 --- a/ios/README.zh-CN.md +++ b/ios/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## 功能 diff --git a/policy/README.de-DE.md b/policy/README.de-DE.md index afa2f9a4a..110ed2128 100644 --- a/policy/README.de-DE.md +++ b/policy/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## HAFTUNGSAUSSCHLÜSSE diff --git a/policy/README.es-ES.md b/policy/README.es-ES.md new file mode 100644 index 000000000..99680cc9a --- /dev/null +++ b/policy/README.es-ES.md @@ -0,0 +1,298 @@ +# Política de Conducción (Avanzada) + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +## DESCARGOS DE RESPONSABILIDAD + +1. **Seguridad:** Las políticas de conducción no son perfectas y pueden hacer que el robot choque. ¡Asegúrate siempre de operar en un entorno seguro! Ten en cuenta que tu teléfono podría dañarse en una colisión. Asegúrate de tener siempre un controlador de juego conectado y estar familiarizado con el mapeo de teclas para poder detener el vehículo en cualquier momento. ¡Usa bajo tu propio riesgo! +2. **Hardware de cómputo:** Entrenar una política de conducción requiere muchos recursos y puede ralentizar o incluso congelar tu máquina. Se recomienda usar una laptop de alta gama o una estación de trabajo con gran cantidad de RAM y GPU dedicada, especialmente cuando se entrena con tamaños de lote grandes. La documentación actualmente tampoco es muy detallada. ¡Usa bajo tu propio riesgo! +3. **Paciencia requerida:** Obtener una buena política de conducción para tu conjunto de datos personalizado requerirá algo de paciencia. No es sencillo, implica recolección de datos, ajuste de hiperparámetros, etc. Si nunca has entrenado modelos de aprendizaje automático antes, será un desafío y puede llegar a ser frustrante. + +Primero necesitas configurar tu entorno de entrenamiento. + +## Dependencias + +Recomendamos crear un entorno conda para OpenBot. Las instrucciones para instalar conda se pueden encontrar [aquí](https://docs.conda.io/projects/conda/en/latest/user-guide/install/). La forma más fácil de crear un nuevo entorno con todas las dependencias es usar uno de los archivos de entorno proporcionados. En Windows, también necesitarás instalar [Microsoft C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/). Asegúrate de estar en la carpeta `policy` dentro de tu repositorio local de OpenBot. Según tu sistema operativo, ejecuta el comando correspondiente: + +- **MacOS**: `conda env create -f environment_mac.yml` +- **Windows**: `conda env create -f environment_win.yml` +- **Linux**: `conda env create -f environment_linux.yml` + +Para soporte de GPU, asegúrate de tener también los controladores apropiados instalados. En Mac y Windows, todo debería funcionar de inmediato. En Linux, puedes instalar los controladores con el siguiente comando: +``` +sudo apt-get install nvidia-driver-510 +``` +En Linux, probablemente también necesitarás ejecutar lo siguiente para agregar cuda y cudnn a tu ruta: +``` +echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/' >> ~/.bashrc +source ~/.bashrc +``` + +¡Listo! Estás listo para entrenar tus propios modelos. Si esto no funciona para ti, a continuación se encuentran las instrucciones para configurar dicho entorno manualmente. + +### Configuración manual del entorno + +Primero crea un nuevo entorno conda con el siguiente comando: + +```bash +conda create -n openbot pip python=3.9 -y +``` + +Luego, necesitas activar tu entorno conda: + +```bash +conda activate openbot +``` + +Si esto no funciona (por ejemplo, en Windows), es posible que necesites activar el entorno con `activate openbot` en su lugar. + +Una vez que el entorno esté activo, necesitas instalar tensorflow. Ten en cuenta que el entrenamiento será muy lento en una laptop. Por lo tanto, si tienes acceso a una computadora con GPU dedicada, te recomendamos encarecidamente usarla instalando las bibliotecas necesarias; asegúrate de tener controladores de GPU recientes instalados. A continuación se encuentran los comandos para instalar tensorflow para diferentes sistemas operativos. + +#### **Mac OS** +``` +conda install -c apple tensorflow-deps -y +pip install tensorflow-macos~=2.9.0 +``` +Soporte de GPU +``` +pip install tensorflow-metal~=0.5.0 +``` +[Solución de problemas](https://developer.apple.com/metal/tensorflow-plugin/) + +#### **Linux** +``` +pip install tensorflow~=2.9.0 +``` +Soporte de GPU +``` +sudo apt-get install nvidia-driver-510 +conda install -c conda-forge cudatoolkit=11.2 cudnn=8.1 -y +echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/' >> ~/.bashrc +source ~/.bashrc +``` +[Solución de problemas](https://www.tensorflow.org/install/pip#linux) + +#### **Windows** +``` +pip install tensorflow~=2.9.0 +``` +Soporte de GPU +``` +conda install cudatoolkit=11.3 cudnn=8.2 -y +``` + +#### **Requisitos adicionales** + +Asegúrate de estar en la carpeta `policy` dentro de tu repositorio local de OpenBot. Ahora, puedes instalar todas las dependencias restantes con el siguiente comando: + +```bash +pip install -r requirements.txt +``` + +También puedes instalar pydot (`pip install pydot`) y graphviz ([ver instrucciones](https://graphviz.gitlab.io/download/)) si deseas visualizar la arquitectura de la red. + +Si deseas usar la [WebApp](#web-app) para la recolección de datos y el entrenamiento, necesitas instalar las siguientes dependencias adicionales. (En Mac, el paquete `brotlipy` está actualmente roto en pip, por lo que necesitas instalarlo primero usando conda: `conda install brotlipy=0.7`) + +```bash +pip install -r requirements_web.txt +``` + +### Paquetes esenciales + +Para referencia y solución de problemas, a continuación se muestra una lista de los paquetes esenciales. + +Entrenamiento: + +- [tensorflow](https://pypi.org/project/tensorflow/) +- [jupyter notebook](https://pypi.org/project/notebook/) +- [matplotlib](https://pypi.org/project/matplotlib/) +- [numpy](https://pypi.org/project/numpy/) +- [PIL](https://pypi.org/project/Pillow/) +- [black[jupyter]](https://pypi.org/project/black/) + +Interfaz web: + +- [aiohttp](https://pypi.org/project/aiohttp/) +- [aiozeroconf](https://pypi.org/project/aiozeroconf/) +- [imageio](https://pypi.org/project/imageio/) + +### Notas + +- Recuerda activar el entorno antes de ejecutar comandos en la terminal: `conda activate openbot` +- Si la importación de tensorflow no funciona, intenta instalarlo a través de `pip install tensorflow --user`. (Ver este [problema](https://github.com/intel-isl/OpenBot/issues/98).) + +## Conjunto de Datos + +### Recolección de Datos + +Para entrenar una política de conducción autónoma, primero necesitarás recolectar un conjunto de datos. Cuantos más datos recolectes, mejor será la política de conducción resultante. Para los experimentos en nuestro artículo, recolectamos aproximadamente 30 minutos de datos. Ten en cuenta que la red imitará tu comportamiento de conducción. Cuanto mejor y más consistente conduzcas, mejor aprenderá la red a conducir. + +1. Conecta un controlador de juego bluetooth al teléfono (por ejemplo, controlador PS4: para entrar en modo de emparejamiento, presiona los botones PS y share hasta que el LED parpadee rápidamente). +2. Selecciona el modelo `CIL-Mobile-Cmd` en la aplicación. +3. Ahora conduce el coche a través de un controlador de juego y graba un conjunto de datos. En el controlador PS4, el registro se puede alternar con el botón **X**. + +Ahora encontrarás una carpeta llamada *Documents/OpenBot* en el almacenamiento interno de tu smartphone. Para cada grabación, habrá un archivo zip. El nombre del archivo zip estará en el formato *yyyymmdd_hhmmss.zip* correspondiente a la marca de tiempo de cuando se inició la grabación. + +El cuaderno de Jupyter espera una carpeta llamada `dataset` en la misma carpeta. En esta carpeta, debe haber dos subcarpetas, `train_data` y `test_data`. Los datos de entrenamiento se utilizan para aprender la política de conducción. Los datos de prueba se utilizan para validar la política de conducción aprendida en datos no vistos durante el proceso de entrenamiento. Esto proporciona alguna indicación de qué tan bien funcionará esta política en el robot. Aunque el robot puede conducir por la misma ruta vista durante el entrenamiento, las imágenes exactas observadas serán ligeramente diferentes en cada ejecución. La división común es 80% datos de entrenamiento y 20% datos de prueba. Dentro de las carpetas `train_data` y `test_data`, necesitas crear una carpeta para cada sesión de grabación y darle un nombre como `my_openbot_1`, `my_openbot_2`, etc. La idea aquí es que cada sesión de grabación puede tener diferentes condiciones de iluminación, un robot diferente, una ruta diferente. En el cuaderno de Jupyter, puedes entrenar solo en un subconjunto de estos conjuntos de datos o en todos ellos. Dentro de cada carpeta de sesión de grabación, debes colocar todas las grabaciones de esa sesión de grabación. Cada grabación corresponde a un archivo zip extraído que has transferido desde la carpeta *Openbot* en tu teléfono. Tu carpeta de conjunto de datos debería verse así: + +estructura de carpetas + +En lugar de copiar todos los archivos manualmente desde el teléfono, también puedes subir los registros automáticamente a un [servidor Python](#web-app) en tu computadora. En este caso, los archivos zip se subirán y desempaquetarán en la carpeta `dataset/uploaded`. Aún necesitarás moverlos a la estructura de carpetas para el entrenamiento. Puedes simplemente tratar la carpeta `uploaded` como una sesión de grabación y moverla a `train_data`. Las grabaciones serán entonces reconocidas como datos de entrenamiento por el cuaderno de Jupyter. Si aún no tienes una sesión de grabación en la carpeta `test_data`, también necesitas mover al menos una grabación de `train_data/uploaded` a `test_data/uploaded`. + +### Conversión de Datos (opcional) + +Para un mejor rendimiento de entrenamiento, puedes convertir el conjunto de datos recolectado en un formato especializado. Puedes crear un tfrecord de los conjuntos de datos de entrenamiento y prueba con los siguientes comandos: + +```bash +conda activate openbot +python -m openbot.tfrecord -i dataset/train_data -o dataset/tfrecords -n train.tfrec +python -m openbot.tfrecord -i dataset/test_data -o dataset/tfrecords -n test.tfrec +``` + +Por defecto, esta conversión se realizará automáticamente al inicio del entrenamiento. + +## Entrenamiento de la Política + +Asegúrate de que tu entorno conda para openbot esté activado ejecutando el siguiente comando: + +```bash +conda activate openbot +``` + +### Cuaderno de Jupyter + +Proporcionamos un [Cuaderno de Jupyter](policy_learning.ipynb) que te guía a través de los pasos para entrenar una política de conducción autónoma. Abre el cuaderno con el siguiente comando. + +```bash +jupyter notebook policy_learning.ipynb +``` + +Ahora se abrirá automáticamente una ventana del navegador web y cargará el cuaderno de Jupyter. Sigue los pasos para entrenar un modelo con tus propios datos. + +### Shell + +Este método asume que los datos están en el lugar correcto. Para ajustar los hiperparámetros, puedes pasar los siguientes argumentos. + +```bash +'--no_tf_record', action='store_true', help='no cargar un tfrecord sino un directorio de archivos' +'--create_tf_record', action='store_true', help='crear un nuevo tfrecord' +'--model', type=str, default='pilot_net', choices=['cil_mobile', 'cil_mobile_fast', 'cil', 'pilot_net'], help='arquitectura de red (por defecto: cil_mobile)' +'--batch_size', type=int, default=16, help='número de épocas de entrenamiento (por defecto: 16)' +'--learning_rate', type=float, default=0.0001, help='tasa de aprendizaje (por defecto: 0.0001)' +'--num_epochs', type=int, default=10, help='número de épocas (por defecto: 10)' +'--batch_norm', action='store_true', help='usar normalización por lotes' +'--flip_aug', action='store_true', help='voltear imágenes y controles aleatoriamente para la augmentación' +'--cmd_aug', action='store_true', help='agregar ruido a la entrada de comandos para la augmentación' +'--resume', action='store_true', help='reanudar el entrenamiento anterior' +``` + +Si tu conjunto de datos ya ha sido convertido a un tfrecord, puedes entrenar la política desde la shell con el comando: + +```bash +python -m openbot.train +``` + +Si deseas convertir tu conjunto de datos a un tfrecord antes de entrenar, necesitas agregar la siguiente bandera: + +```bash +python -m openbot.train --create_tf_record +``` + +Si no deseas convertir el conjunto de datos a un tfrecord y entrenar usando los archivos directamente, necesitas agregar la siguiente bandera: + +```bash +python -m openbot.train --no_tf_record +``` + +Para entrenar un modelo para el despliegue final, querrás usar un tamaño de lote grande y un número de épocas. Habilitar la normalización por lotes generalmente mejora el entrenamiento también. El modelo `pilot_net` es más grande que el `cil_mobile` por defecto, pero puede lograr un mejor rendimiento en algunas tareas mientras sigue funcionando en tiempo real en la mayoría de los smartphones. + +```bash +python -m openbot.train --model pilot_net --batch_size 128 --num_epochs 100 --batch_norm +``` + +### Despliegue + +Al final del proceso de entrenamiento, se generan dos archivos tflite: uno corresponde al mejor punto de control según las métricas de validación y el otro al último punto de control. Elige uno de ellos y renómbralo a autopilot_float.tflite. Reemplaza el modelo existente en Android Studio y recompila la aplicación. + +

+ App GUI +

+ +Si estás buscando la carpeta en tu directorio local, la encontrarás en: `app/src/main/assets/networks`. + +## Aplicación Web + +Proporcionamos una aplicación web y un servidor web en Python para facilitar el entrenamiento de políticas. (Beta) + +### Características + +- Carga automática de registros (sesiones) + - ver Solución de problemas para más detalles +- Listar sesiones subidas, con vista previa en GIF +- Listar conjuntos de datos, con información básica +- Mover sesión a un conjunto de datos +- Eliminar sesión +- Listar modelos entrenados y mostrar gráficos sobre el entrenamiento +- Entrenar un modelo con parámetros básicos, mostrar barra de progreso + +### Vista previa + +Vista previa de la aplicación web + +### Inicio rápido + +```bash +conda activate openbot +python -m openbot.server +``` + +Ahora puedes abrir tu navegador para visualizar el conjunto de datos y ver las cargas entrantes yendo a: +[http://localhost:8000/#/uploaded](http://localhost:8000/#/uploaded) + +### Ejecutando el servidor + +Puedes ejecutar el servidor de Python con el comando: + +```bash +python -m openbot.server +``` + +También hay un modo desarrollador: + +```bash +adev runserver openbot/server +``` + +Para el desarrollo del frontend (aplicación react): + +``` +FE_DEV=1 adev runserver openbot/server +``` + +Cuando ejecutes el servidor deberías ver algo como: + +``` +Skip address 127.0.0.1 @ interface lo +Found address 192.168.x.x @ interface wlp2s0 +Registration of a service, press Ctrl-C to exit... +Running frontend: 0.7.0 +Frontend path: /home/USERNAME/miniconda3/envs/openbot/lib/python3.7/site-packages/openbot_frontend +======== Running on http://0.0.0.0:8000 ======== +(Press CTRL+C to quit) +``` + +### Solución de problemas + +Si la carga al servidor no está funcionando, aquí hay algunos consejos para solucionar problemas: + +- Intenta reiniciar el servidor (computadora) y la aplicación OpenBot (smartphone) +- Asegúrate de que el smartphone y tu computadora estén conectados a la misma red WiFi +- Si tu router tiene redes de 2.4 GHz y 5 GHz con el mismo nombre, desactiva la red de 5 GHz +- Mantén el teléfono conectado a Android Studio mientras ejecutas la aplicación. En la pestaña Logcat, selecciona Debug en el menú desplegable. Escribe `NSD` en el campo de filtro para ver los mensajes de depuración relacionados con la conexión del servidor. Escribe `Upload` en el campo de filtro para ver los mensajes de depuración relacionados con la carga del archivo de grabación. +- Si un modelo publicado se descarga continuamente, asegúrate de que la hora en tu teléfono y laptop/estación de trabajo esté configurada correctamente. \ No newline at end of file diff --git a/policy/README.fr-FR.md b/policy/README.fr-FR.md index 95c228ea9..1e2e54e71 100644 --- a/policy/README.fr-FR.md +++ b/policy/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## AVERTISSEMENTS diff --git a/policy/README.md b/policy/README.md index 4bf6b3b06..d54c248d3 100644 --- a/policy/README.md +++ b/policy/README.md @@ -5,7 +5,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## DISCLAIMERS diff --git a/policy/README.zh-CN.md b/policy/README.zh-CN.md index ba4dcef77..a9924f27a 100644 --- a/policy/README.zh-CN.md +++ b/policy/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

## 免责声明 diff --git a/policy/frontend/README.de-DE.md b/policy/frontend/README.de-DE.md index 0457700dd..60985fbe6 100644 --- a/policy/frontend/README.de-DE.md +++ b/policy/frontend/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Dieses Projekt wurde mit [Create React App](https://github.com/facebook/create-react-app) gestartet. diff --git a/policy/frontend/README.es-ES.md b/policy/frontend/README.es-ES.md new file mode 100644 index 000000000..2d6ffb0d4 --- /dev/null +++ b/policy/frontend/README.es-ES.md @@ -0,0 +1,38 @@ +# OpenBot Policy Frontend + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +Este proyecto fue iniciado con [Create React App](https://github.com/facebook/create-react-app). + +## Scripts Disponibles + +En el directorio del proyecto, puedes ejecutar: + +### `yarn start` + +Ejecuta la aplicación en modo de desarrollo.\ +Abre [http://localhost:3000](http://localhost:3000) para verlo en el navegador. + +La página se recargará si haces modificaciones.\ +También verás cualquier error de lint en la consola. + +### `yarn test` + +Lanza el corredor de pruebas en modo interactivo de observación.\ +Consulta la sección sobre [ejecución de pruebas](https://facebook.github.io/create-react-app/docs/running-tests) para más información. + +### `yarn build` + +Construye la aplicación para producción en la carpeta `build`.\ +Agrupa correctamente React en modo de producción y optimiza la construcción para el mejor rendimiento. + +La construcción está minificada y los nombres de archivo incluyen los hashes.\ +¡Tu aplicación está lista para ser desplegada! + +Consulta la sección sobre [despliegue](https://facebook.github.io/create-react-app/docs/deployment) para más información. \ No newline at end of file diff --git a/policy/frontend/README.fr-FR.md b/policy/frontend/README.fr-FR.md index 6b7c8fe74..b0fbccd28 100644 --- a/policy/frontend/README.fr-FR.md +++ b/policy/frontend/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Ce projet a été initialisé avec [Create React App](https://github.com/facebook/create-react-app). diff --git a/policy/frontend/README.md b/policy/frontend/README.md index 831c2551f..ce9b16f81 100644 --- a/policy/frontend/README.md +++ b/policy/frontend/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). diff --git a/policy/frontend/README.zh-CN.md b/policy/frontend/README.zh-CN.md index de299ba5a..5b5e09e62 100644 --- a/policy/frontend/README.zh-CN.md +++ b/policy/frontend/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

这个项目是用 [Create React App](https://github.com/facebook/create-react-app) 引导的。 diff --git a/python/README.de-DE.md b/python/README.de-DE.md index 5915f8913..4c4734e51 100644 --- a/python/README.de-DE.md +++ b/python/README.de-DE.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Dieses Modul ist eine Embedded-Linux-Alternative zur Smartphone-Steuerung eines OpenBot-Fahrzeugs. Geschrieben in Python, kann der OpenBot mit einem Linux-basierten Computer und einer Kamera zur Erkennung gesteuert werden. diff --git a/python/README.es-ES.md b/python/README.es-ES.md new file mode 100644 index 000000000..578a99120 --- /dev/null +++ b/python/README.es-ES.md @@ -0,0 +1,132 @@ +# Python + +

+ English | + 简体中文 | + Deutsch | + Français | + Español +

+ +Este módulo es una alternativa embebida en Linux para el control de un vehículo OpenBot mediante un smartphone. Escrito en Python, el OpenBot puede ser controlado usando una computadora basada en Linux y una cámara para la detección. + +El robot puede ser controlado de dos maneras: a través de la inferencia de una política de Red Neuronal o mediante un joystick. + +``` +├── __init__.py +├── README.md +├── requirements.txt +├── run.py +├── generate_data_for_training.py +├── export_openvino.py +├── infer.py +├── joystick.py +├── realsense.py +└── tests + ├── test_data + │   └── logs1 + │   └── ... + ├── test_models + │   ├── openvino + │   ├── tflite + │   └── tf.zip + ├── test_export_openvino.py + ├── test_infer.py + ├── test_joystick.py + ├── test_motor.py + └── test_realsense.py + +``` +## Ejecutando el Robot + +Para operar el robot, ejecuta `run.py`, que es el script principal de Python. El robot puede ejecutarse en 3 modos: +- Debug: Este modo ejecuta la política fuera de línea. Es decir, en lugar de usar imágenes de cámara reales y comandos de entrada del joystick, utiliza datos (comandos e imágenes) cargados desde un conjunto de datos (ver `tests/test_data/logs1/data`) como entrada para la política. +- Inference: Este modo ejecuta la política en línea. Utiliza imágenes de cámara reales y comandos de entrada del joystick como entrada para la política. Este modo puede cambiarse al modo Joystick presionando la tecla `A` en el joystick. +- Joystick: Este modo opera el robot mediante comandos del joystick en el `control_mode` "Dual" (controlando la rueda izquierda y derecha mediante el joystick izquierdo y derecho) o "Joystick" (controlando la dirección hacia adelante, atrás, izquierda, derecha mediante un solo joystick). La recolección de datos para el entrenamiento se realiza en el modo Joystick. Este modo puede cambiarse al modo Inference presionando la tecla `A` en el joystick. + +El script run.py acepta seis argumentos (para más detalles, ver `run.py`): +``` +--policy_path: Ruta al archivo de la política. +--dataset_path: Ruta al conjunto de datos. Solo se usa para el modo debug. +--log_path: Ruta a la carpeta de logs, donde se guardan las ejecuciones. +--inference_backend: Backend a usar. Considera exportar todos los modelos como modelo openvino para un rendimiento máximo. Opciones: tf, tflite, openvino. +--mode: Modo de ejecución. Opciones: debug, inference, joystick. +--control_mode: Modo de control durante el modo joystick. Opciones: dual, joystick. +``` +## Generando Datos de Entrenamiento +El script `generate_data_for_training.py` genera una carpeta de datos de log que es requerida para entrenar una política mediante el script `OpenBot/policy/openbot/train.py`. La carpeta de datos de log contiene una carpeta `images` y una carpeta `sensor_data` en el formato requerido por `train.py`. + +Ver `tests/test_generate_data.py` para un ejemplo. + +## OpenVino: Optimizando el Rendimiento de la Inferencia de la Política +Para optimizar la velocidad de inferencia en hardware Intel compatible (como la placa [Up Core Plus](https://up-board.org/upcoreplus/specifications/)), el modelo entrenado necesita ser exportado a OpenVino. + +El script `export_openvino.py` exporta un modelo TensorFlow entrenado a un modelo OpenVino. Este modelo OpenVino luego se carga mediante `get_openvino_interpreter()` en `infer.py`. + +Ver `tests/test_export_openvino.py` para un ejemplo. + +## Pruebas y código de ejemplo + +**Nota:** Para probar el código, los datos de prueba y el modelo de prueba llamados `test_data` y `test_model` respectivamente deben estar en `OpenBot/python/tests`. La función `get_data()` en `download_data.py` proporciona la funcionalidad de descarga y se llama al inicio de `test_infer.py`, `test_export_openvino.py`, y `test_generate_data.py`. Alternativamente, por favor ejecuta el script `get_test_data.sh` (solo sistemas Unix) que descarga y descomprime un archivo zip que contiene `test_data` y `test_models` con los datos para el modo debug y modelos para la inferencia respectivamente. + +Ejecuta `pytest` en la carpeta `tests` o ejecuta los archivos `test_*.py` individualmente para probar las funcionalidades de + +- descargar datos de prueba y modelo de prueba desde la nube mediante `test_download_data.py` +- exportar a OpenVino mediante `test_export_openvino.py` +- generar datos de entrenamiento mediante `test_generate_data.py`. +- inferencia en modo debug para OpenVino, Tensorflow, y Tflite mediante `test_infer.py`. + - *Nota*: Los datos de prueba en logs1 se generan usando el script `associate_frames.py` en `OpenBot.policy.openbot`, donde la ruta a las imágenes está codificada en `logs1/data/sensor_data/matched_frame_ctrl_cmd_processed.txt`. + - Por lo tanto, por favor reemplaza `path_to_openbot` con la ruta real al repositorio `OpenBot` en `test_infer.py`. +- conexión del joystick mediante `test_joystick.py` +- conexión del motor desde el puerto serie al Arduino mediante `test_motor.py`. +- transmisión de video a la cámara Realsense mediante `test_realsense.py`. + +# Instalación +El proceso de instalación se detalla a continuación. + +La implementación en Python para controlar OpenBot requiere algunos módulos de Python para inferencia, control del joystick, detección y actuación. +Además, pueden ser necesarios controladores para la cámara o el controlador. + +## Configuración +Actualmente, el código se prueba en: +- Placa: [Up Core Plus](https://up-board.org/upcoreplus/specifications/) +- Cámara: [Realsense D435i](https://www.intelrealsense.com/depth-camera-d435i/) +- Controlador: [Xbox One](https://www.microsoft.com/en-gb/store/collections/xboxcontrollers?source=lp) +- Arduino: [Firmware de OpenBot](https://github.com/isl-org/OpenBot/blob/master/firmware/README.md) + +## Módulos de Python + +El código se prueba con Python 3.9. Usando Anaconda3: +``` +conda create --name openbot python==3.9 +``` + +Primero, instala los requisitos de OpenBot.policy mediante +``` +../policy && pip install -r requirements.txt +``` + +Luego, instala los módulos requeridos mediante +``` +pip install -r requirements.txt +``` + +En particular, +- `pyserial` se comunica con el Arduino y, por lo tanto, con los motores mediante el puerto serie +- `pyrealsense2` y `opencv-python` son necesarios para el procesamiento de imágenes de la cámara. +- `pygame` se usa para el control del joystick y el procesamiento de las entradas del joystick +- `openvino-dev[tensorflow2,extras]` se usa para un rendimiento mejorado en hardware Intel compatible. Para más detalles sobre la inferencia de IA optimizada en hardware Intel, por favor ver [OpenVino](https://docs.openvino.ai/latest/home.html). OpenVino es el backend de inferencia recomendado. Tensorflow y Tflite también son compatibles (ver Pruebas). Para ejecutar módulos PyTorch, por favor considera convertir PyTorch a un backend OpenVino (ver [este Tutorial](https://docs.openvino.ai/latest/openvino_docs_MO_DG_prepare_model_convert_model_Convert_Model_From_PyTorch.html)). + +## Controladores +Si el código se ejecuta en Ubuntu, el dongle USB inalámbrico del controlador Xbox One requiere un controlador, que se puede encontrar en [este enlace](https://github.com/medusalix/xone). + +## Tensorflow para Inferencia +Si se usa TensorFlow para la inferencia, por favor agrega el módulo Python `policy` a `PYTHONPATH` mediante `export PYTHONPATH=$PYTHONPATH:/path/to/OpenBot/policy`. Este truco evita tener que instalar openbot como módulo y encontrar `openbot.utils.load_model()`, que es necesario para cargar el modelo tensorflow. Para más detalles, ver `get_tf_interpreter()` en `infer.py` y el código de prueba `tests/test_infer.py`. + +## Soporte para distribuciones no Linux (MacOS, Windows) + +Por favor, ten en cuenta que el código está destinado a ejecutarse en computadoras basadas en Linux, por ejemplo, Up Core Plus. Algunos módulos de Python pueden no estar disponibles para MacOs o Windows. + +El código puede ejecutarse en MacOS para fines de depuración con los siguientes cambios: +- Usa `pyrealsense2-macosx` en lugar de `pyrealsense2` en requirements.txt +- Para tflite sigue [estas instrucciones](https://github.com/milinddeore/TfLite-Standalone-build-Linux-MacOS) \ No newline at end of file diff --git a/python/README.fr-FR.md b/python/README.fr-FR.md index dac0b09c5..c570d93ae 100644 --- a/python/README.fr-FR.md +++ b/python/README.fr-FR.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

Ce module est une alternative Linux embarqué au contrôle par smartphone d'un véhicule OpenBot. Écrit en Python, l'OpenBot peut être contrôlé à l'aide d'un ordinateur basé sur Linux et d'une caméra pour la détection. diff --git a/python/README.md b/python/README.md index 03a7a444d..b15470049 100644 --- a/python/README.md +++ b/python/README.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

This module is an embedded Linux alternative to the smartphone control of an OpenBot vehicle. Written in Python, the OpenBot can be controlled using a linux-based computer and a camera for sensing. diff --git a/python/README.zh-CN.md b/python/README.zh-CN.md index f213478fb..9cd0b9e3f 100644 --- a/python/README.zh-CN.md +++ b/python/README.zh-CN.md @@ -4,7 +4,8 @@ English | 简体中文 | Deutsch | - Français + Français | + Español

该模块是嵌入式Linux系统中用于控制OpenBot车辆的智能手机控制替代方案。使用Python编写,OpenBot可以通过基于Linux的计算机和摄像头进行感知和控制。