Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 26 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,35 @@
# Software de Control Autónomo de Embarcaciones de la Universidad de San Andrés

## Levantar el projecto
para iniciar el projecto se recomibenda levantarlo de forma local utlizando Node Js Y Ros 2 Humble. Como sistema opertaivo se enfatiza el uso de Linux Ubuntu ya que facilitara su uso o desarrollo
## Levantar el proyecto de forma local
Para iniciar el proyecto se recomienda levantarlo de forma local utlizando [Node Js](https://nodejs.org/en) (IMPORTANTE tiene que ser la versión 20.13.1), [Ros 2 Humble](https://docs.ros.org/en/humble) y [micro-ROS](https://micro.ros.org/).

Node Js: https://nodejs.org/en
Como sistema operativo se enfatiza el uso de Linux Ubuntu 22.04 ya que facilitará su uso y/o desarrollo.

Además, para que quede prestablecido Ros2, en una terminal ejecutar para abrir el archivo de configuración:

Ros 2: https://docs.ros.org/en/humble
```
gedit ~/.bashrc
```

Ir al final y en líneas nuevas insertar y guardar el documento:
```
source /opt/ros/humble/setup.bash
source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash
```

Para más detalles sobre el procedimiento consultar este [tutorial](https://www.youtube.com/watch?v=Gg25GfA456o).

Apesar de esto se esta de desarrollando una alternativa con Docker
Debe Ejecutar los sigueintes comandos:
```
docker build -t Nautilus .
Para correr el proyecto leer el [README](./openmct/README.md) en \openmct.

## Levantar el proyecto desde un contenedor de Docker
Para correr el proyecto desde un contenedor de Docker se debe tener instalado y corriendo el servicio de [Docker](https://docs.docker.com/get-docker/) y ejecutar los siguientes comandos desde la terminal en el path correspondiente a este proyecto:
```
docker build -t Nautilus .
```

Cuando Finalize debe ejecutar:
> *Advertencia*: El build puede tardar varios minutos la primera vez que se corre. Se recomienda tener una buena conexión a internet, la imagen pesa más de 4gb.

Cuando finalice debe ejecutar:
```
docker run -p 8080:8080 Nautilus
```
docker run -p 8080:8080 Nautilus
```
39 changes: 0 additions & 39 deletions dockerfile

This file was deleted.

38 changes: 38 additions & 0 deletions dockerfile.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
FROM ubuntu:22.04

ENV DEBIAN_FRONTEND=noninteractive
RUN apt update -y && \
apt upgrade -y && \
apt install -y curl && \
curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
apt-get install -y nodejs


RUN apt-get install -y locales && locale-gen en_US.UTF-8 && update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
ENV LANG=en_US.UTF-8

RUN apt-get update && apt-get install -y --fix-missing software-properties-common && add-apt-repository universe

RUN apt update -y && apt install -y curl && curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | tee /etc/apt/sources.list.d/ros2.list > /dev/null

RUN apt update -y && apt upgrade -y

RUN apt-get install -y systemd udev

RUN apt update -y && apt install ros-humble-desktop -y


RUN /bin/bash -c "source /opt/ros/humble/setup.bash"

COPY . .

# Change the working directory to 'openmct'
WORKDIR /openmct

RUN /bin/bash -c "source /opt/ros/humble/setup.bash && npm install"
# Expose port 3000
EXPOSE 3000

CMD /bin/bash -c "source /opt/ros/humble/setup.bash && npm start"
68 changes: 68 additions & 0 deletions dockerfile.speaker
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
FROM ubuntu:22.04

ENV DEBIAN_FRONTEND=noninteractive
RUN apt update -y && \
apt upgrade -y && \
apt install -y curl && \
curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
apt-get install -y nodejs


RUN apt-get install -y locales && locale-gen en_US.UTF-8 && update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
ENV LANG=en_US.UTF-8

RUN apt-get update && apt-get install -y --fix-missing software-properties-common && add-apt-repository universe

RUN apt update -y && apt install -y curl && curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | tee /etc/apt/sources.list.d/ros2.list > /dev/null

RUN apt update -y && apt upgrade -y

RUN apt-get install -y systemd udev

RUN apt update -y && apt install ros-humble-desktop -y

ENV ROS_DISTRO=humble

RUN apt-get update && apt-get install -y git

RUN apt-get update && apt-get install -y python3-rosdep

RUN rosdep init

RUN /bin/bash -c "\
source /opt/ros/$ROS_DISTRO/setup.bash && \
mkdir -p microros_ws/src && \
cd microros_ws && \
git clone -b $ROS_DISTRO https://github.com/micro-ROS/micro_ros_setup.git src/micro_ros_setup && \
rosdep update && \
rosdep install --from-paths src --ignore-src -y && \
colcon build && \
. install/local_setup.bash && \
ros2 run micro_ros_setup create_firmware_ws.sh host"

RUN /bin/bash -c "source /opt/ros/$ROS_DISTRO/setup.bash && ros2 run micro_ros_setup create_firmware_ws.sh host"

RUN /bin/bash -c "source /opt/ros/$ROS_DISTRO/setup.bash && ros2 run micro_ros_setup build_firmware.sh && source install/local_setup.bash"

RUN /bin/bash -c "source /opt/ros/$ROS_DISTRO/setup.bash && ros2 run micro_ros_setup create_agent_ws.sh"

RUN /bin/bash -c "source /opt/ros/$ROS_DISTRO/setup.bash && ros2 run micro_ros_setup build_agent.sh && source install/local_setup.bash"

RUN /bin/bash -c "source /opt/ros/$ROS_DISTRO/setup.bash && colcon build"

RUN /bin/bash -c "\
source /opt/ros/$ROS_DISTRO/setup.bash && \
cd install/ && \
source setup.bash && \
source local_setup.bash && \
cd .. && \
ros2 run micro_ros_setup build_firmware.sh && \
ros2 run micro_ros_setup create_agent_ws.sh && \
ros2 run micro_ros_setup build_agent.sh"

# Expose port 3000
EXPOSE 3000

CMD /bin/bash -c "source /opt/ros/$ROS_DISTRO/setup.bash && source install/local_setup.bash && ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/ttyUSB0"
60 changes: 60 additions & 0 deletions dockerfile.subscriber
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
FROM ubuntu:22.04

ENV DEBIAN_FRONTEND=noninteractive
RUN apt update -y && \
apt upgrade -y && \
apt install -y curl && \
curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
apt-get install -y nodejs


RUN apt-get install -y locales && locale-gen en_US.UTF-8 && update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
ENV LANG=en_US.UTF-8

RUN apt-get update && apt-get install -y --fix-missing software-properties-common && add-apt-repository universe

RUN apt update -y && apt install -y curl && curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | tee /etc/apt/sources.list.d/ros2.list > /dev/null

RUN apt update -y && apt upgrade -y

RUN apt-get install -y systemd udev

RUN apt update -y && apt install ros-humble-desktop -y

RUN /bin/bash -c "source /opt/ros/humble/setup.bash"

RUN apt-get update && apt-get install -y git

RUN mkdir -p ~/ros2_humble/src && \
cd ~/ros2_humble && \
apt-get install -y python3-vcstool && \
vcs import --input https://raw.githubusercontent.com/ros2/ros2/humble/ros2.repos src

RUN apt-get update && apt-get install -y python3-rosdep python3-pip && pip3 install asyncio websockets

RUN mkdir -p /ros_ws/src

WORKDIR /ros_ws

ENV ROS_DISTRO=humble

COPY ./my_robot_controller /ros_ws/src/my_robot_controller

RUN apt-get update && apt-get install -y python3-colcon-common-extensions

RUN /bin/bash -c "\
source /opt/ros/$ROS_DISTRO/setup.bash && \
cd /ros_ws && \
rosdep init && \
rosdep update && \
rosdep install --from-paths src --ignore-src -r -y && \
colcon build --cmake-clean-cache && \
colcon build --symlink-install && \
. install/setup.bash"

EXPOSE 3000

ENV NODE_NAME coordenates_subscriber
ENTRYPOINT ["/bin/bash", "-c", "source /ros_ws/install/setup.bash && source /ros_ws/install/local_setup.bash && ros2 run my_robot_controller $NODE_NAME"]
68 changes: 50 additions & 18 deletions openmct/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,33 +3,65 @@
## Introduccion:
En búsqueda de avances punteros en tecnología marítima, la Universidad de San Andrés presenta con orgullo su Software de Control Autónomo de Embarcaciones. Desarrollado por un equipo de investigadores y ingenieros dedicados, este software representa un gran avance en el ámbito de la navegación marítima autónoma.

### Funcionamiento
el Software funciona a traves de varios ejes principlaes, primero utiliza commo base OpenMCT Link: https://nasa.github.io/openmct/ Sumado a esto utiliza distintos nodos de Ros2 HUmble NodeJs para crear servidores en tiempo real e historicos
## Funcionamiento:
El software funciona a través de varios ejes principales, primero utiliza como base [OpenMCT](https://nasa.github.io/openmct/). Sumado a esto usa distintos nodos de Ros2 HUmble y NodeJs para crear servidores en tiempo real e históricos. En este README se da por sentado información que se explica más detalladamente en este [tutorial](https://www.youtube.com/watch?v=Gg25GfA456o).

### Desarrollo:
A la hora de desarrrollar hay algunas cosas que se deben en tener en cuenta de como es funcionamiento dee la aplicacion
#### Distribucion de carpetas
## Desarrollo:
A la hora de desarrrollar hay algunas cosas que se deben tener en cuenta:
### Distribucion de carpetas:
/example-server: En esta carpeta es donde se va todo lo relacionado con el server side, ya sea websocket puerto, etc.

/example-server: En esta carpeta es donde se va todo lo relacionado con el server side, ya sea websocket puerto,etc
/assets: En Assets se guarda todo lo cosmetico para la pagina ya sean sonidos, imágenes, gif o cualquier otro archivo adicional que no tenga otra función que decorativa.

/assets: En Assets se huardo todo lo cosmetico para la pagina ya sean sonidos imagesnes gif o cualquier otro archivo adicional que no tenga otra fucnion que ser decorativo
/plugins: Todos los plugins que se desarrollen de forma externa deben ser guardados en esta carpeta, cada plugin debe tenr una funcion principal útil de importar.

/plugins: Todos los plugins que se desarrollen de forma externa deben ser guardados en esta carpeta, cada plugin debe tenr una funcion principal que va a ser util para importarlo

/styles: Dentro de esta de carpeta se deben guardar todas las clases de den estilos al la visual

#### Levantar el Projecto

Una vez clonado el projecto debemos hacer lo siguiente.
/styles: Dentro de esta de carpeta se guardan todas las clases que den estilos a la visual.

## Correr el servidor de ejemplo:
Una vez clonado el projecto y luego de haber completado los pasos explicados en el [README](../README.md) principal, en el path de openmct ejecutar los comandos:
```
npm install
npm start
```

#### Importar plugin
el plugin se debe importar desde la carpeta /plugins y ejecutar la funcion principal del archivo
## Prueba de conexión por USB al microcontrolador:
Si es la primera ejecución tanto para el speaker como para el subscriber, en el workspace correspondiente de cada uno (aclarado más abajo) se debe ejecutar:
```
colcon build
```
### Correr el nodo speaker:
Dentro de nuestro workspace de Micro ROS (~/microros_ws) creado en el procedimiento explicado en el [README](../README.md) principal ejecutar:
Si es la primera ejecución (además del colcon build):
```
cd install/
source setup.bash
source local_setup.bash
cd ..
ros2 run micro_ros_setup build_firmware.sh
ros2 run micro_ros_setup create_agent_ws.sh
ros2 run micro_ros_setup build_agent.sh
```
Luego siempre:
```
source install/local_setup.bash
ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/ttyUSB0
```
Una forma de ver que anda sin utilizar un nodo subscriber es ejecutar en otra terminal:
```
rqt_graph
```

### Correr el nodo subscriber:
En otra terminal en paralelo, dentro de nuestro workspace de ROS2 (~/ros2_ws) creado en el procedimiento explicado en el [README](../README.md) principal ejecutar:
```
cd install/
source setup.bash
source local_setup.bash
cd ..
ros2 run my_robot_controller subscriber
```

##### Recursos utiles
## Recursos Útiles:
Repositorio OpenMCT: https://github.com/nasa/openmct/blob/master/API.md

Repositorio OpenMCT: https://github.com/nasa/openmct/blob/master/API.md
Tutorial ROS2 Humble: https://www.youtube.com/watch?v=Gg25GfA456o