micro-ROS / micro-ROS/micro-ROS-demos

Dockerfile can't be build if I add personal micro-ros subscriber to micro-ROS-demos

Abierto
#74 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
C
Estrellas
101
Forks
35
Merge medio
4 d 16 h
PR fusionados (30 d)
3

Descripción

## Issue template

- Hardware description: Ubuntu 22.04
- RTOS:
- Installation type: micro_ros_setup
- Version or commit hash: humble

#### Steps to reproduce the issue
Hey, my goal is to create a Docker container where everything is set up, and I can directly execute my own subscriber from a docker compose file and don't have to run commands in the terminal.
My plan was to copy my publisher after I ran `ros2 run micro_ros_setup create_firmware_ws.sh host` into the workspace but afterwords when I run `ros2 run micro_ros_setup build_firmware.sh` it throws an error because micro_ros_setup can no longer be found ( I think this is because they are in different layers of the image and not have access to each other).

Any ideas how I can solve my issues?

```
# Download base image ubuntu 22.04
FROM ubuntu:22.04

# LABEL about the custom image
LABEL maintainer="cornelius.welling@gmail.com"
LABEL version="1.0"
LABEL description="This is a ROS2_pub_sub Docker Image"

# Define build arguments
ARG TIME_ZONE
ARG DEBIAN_FRONTEND=noninteractive
ARG ROS_DISTRO=humble
#ARG DEBIAN_FRONTEND=noninteractive -> no user input needed when building

# Install dependencies
RUN apt-get update && \
apt-get install -y locales\
curl\
locales\
python3-pip\
&& rm -rf /var/lib/apt/lists/*

# Generate and set locales
RUN locale-gen en_US en_US.UTF-8 && \
update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

# Set environment variables
ENV TZ=Europe/Berlin
ENV LANG=en_US.UTF-8
ENV LC_ALL=en_US.UTF-8
ENV ROS_VERSION=2
ENV ROS_DISTRO=humble
ENV ROS_PYTHON_VERSION=3
ENV RCUTILS_CONSOLE_OUTPUT_FORMAT="[{severity} {time}]: {message}"

# Add, install and source ROS2 humble
RUN apt-get update && apt-get install -y software-properties-common curl && \
add-apt-repository universe

RUN curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg && \
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/ros2.list > /dev/null

# Install bootstrap tools
RUN apt-get update && apt-get install --no-install-recommends -y \
nano \
iputils-ping \
wget \
python3-colcon-common-extensions \
python3-colcon-mixin \
python3-rosdep \
python3-vcstool \
git \
&& rm -rf /var/lib/apt/lists/*

RUN apt-get update && apt-get upgrade -y &&\
apt-get install -y ros-humble-desktop\
&& rm -rf /var/lib/apt/lists/*

# Install cyclonedds
RUN apt-get update && apt-get install -y ros-humble-rmw-cyclonedds-cpp && rm -rf /var/lib/apt/lists/*

# Set the RMW_IMPLEMENTATION environment variable
ENV RMW_IMPLEMENTATION=rmw_cyclonedds_cpp

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

RUN mkdir /microros_ws
WORKDIR /microros_ws
RUN git clone -b $ROS_DISTRO https://github.com/micro-ROS/micro_ros_setup.git src/micro_ros_setup

# bootstrap rosdep
RUN rosdep init && \
rosdep update --rosdistro humble
RUN apt update && rosdep update
RUN rosdep install -i --from-path src --rosdistro humble -y

**# After setting up micro-ROS and running the first build:
RUN bash -c "source /opt/ros/humble/setup.bash && \
colcon build && \
source install/local_setup.bash && \
ros2 run micro_ros_setup create_firmware_ws.sh host"

# Add your new application
COPY ./MICROROS_SUBPUB/main.c /microros_ws/src/uros/micro-ROS-demos/rclc/MICROROS_SUBPUB/main.c
COPY ./MICROROS_SUBPUB/CMakeLists.txt /microros_ws/src/uros/micro-ROS-demos/rclc/MICROROS_SUBPUB/CMakeLists.txt

# Update the main CMakeLists.txt to add your new executable
RUN echo 'export_executable(MICROROS_SUBPUB)' >> /microros_ws/src/uros/micro-ROS-demos/rclc/CMakeLists.txt

# Continue with your build
RUN bash -c "source /opt/ros/humble/setup.bash && \
source install/local_setup.bash && \
ros2 run micro_ros_setup build_firmware.sh && \
source install/local_setup.bash && \
ros2 run micro_ros_setup create_agent_ws.sh && \
ros2 run micro_ros_setup build_agent.sh && \
source install/local_setup.bash"**

# Environment setup
#RUN echo 'source /opt/ros/humble/setup.bash' >> ~/.bashrc
RUN echo '#!/usr/bin/env bash' > /ros_entrypoint.sh
RUN echo 'source /opt/ros/humble/setup.bash' >> /ros_entrypoint.sh
RUN echo 'source /microros_ws/install/local_setup.bash' >> /ros_entrypoint.sh

# Finalize entrypoint script
RUN echo 'exec "$@"' >> /ros_entrypoint.sh
RUN chmod +x /ros_entrypoint.sh

ENTRYPOINT ["/ros_entrypoint.sh"]

# Run command
CMD ["bash"]
```
#### Expected behavior

#### Actual behavior

#### Additional information

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza reproduciendo el Dockerfile proporcionado y siguiendo el workspace cargado alrededor de los puntos de entrada create_firmware_ws.sh y build_firmware.sh de micro_ros_setup. Comprueba si la imagen puede conservar y acceder al workspace compilado después de cada paso Docker RUN; se considera terminado cuando la imagen se compila correctamente con el subscriber personalizado y puede ejecutarlo desde la configuración de Docker Compose.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
c, docker
Área
devops, embedded-iot
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.