Skip to content

Commit c387e05

Browse files
committed
Merge branch 'dev' into beta
2 parents 27e5355 + 2a7585c commit c387e05

File tree

13 files changed

+300
-547
lines changed

13 files changed

+300
-547
lines changed

README.md

Lines changed: 121 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,12 @@
2727
<br>
2828

2929
[//]: # ( ==== Description =========================================== )
30-
**The user side companion of [Dockerized-NorLab (DN)](https://github.com/norlab-ulaval/dockerized-norlab/tree/main).**
30+
**The user side companion of [Dockerized-NorLab (DN)](https://github.com/norlab-ulaval/dockerized-norlab/tree/main) image builder.**
3131

3232
It provide a containerized workflow tailor-made for robotic research.<br>
33-
Dockerized-NorLab project application (DNA) handle the building and instanciation of DN container<br>
34-
with functionality for development, deployment, testing, continuous integration and release publishing.
33+
Dockerized-NorLab project application (DNA) manage Dockerized-NorLab (DN) container lifecycle<br>
34+
providing functionality for robotic software development, deployment, testing,<br>
35+
continuous integration, slurm job experimentation and release publishing.
3536

3637
<br>
3738

@@ -66,74 +67,49 @@ Maintainer <a href="https://redleader962.github.io">Luc Coupal</a>
6667

6768
[//]: # ( ==== Body ================================================== )
6869

69-
## What it does
7070

71-
- **Containerized robotic development environment**: Provides a complete containerized workflow for robotic research, development, deployment, testing, continuous integration, running slurm jobs, and source code release.
72-
- **Multi-platform support**: Runs seamlessly on `l4t/arm64` (Jetson), `darwin/arm64` (Mac OS X), and `linux/x86` without configuration changes.
73-
- **Flexible deployment modes**: Supports both local and remote workflows for personal workstations, remote embedded computers, and servers.
74-
- **ROS2 ready**: Comes with ROS2 support out of the box for robotic applications.
75-
- **GPU acceleration**: Provides GPU support through nvidia-docker for both `l4t/arm64` and `linux/x86` platforms.
76-
- **Transparent configuration**: Makes project configuration easy while keeping [Docker](https://docs.docker.com/) and [Docker Compose](https://docs.docker.com/compose/) logic transparent and accessible.
77-
78-
## Getting started
79-
80-
### Install Dockerized-NorLab Project app `dna`
81-
82-
```shell
83-
# Clone repository on host computer
84-
git clone --recurse-submodule https://github.com/norlab-ulaval/dockerized-norlab-project.git
85-
cd dockerized-norlab-project
71+
![dna_splash.png](visual/dna_splash.png)
8672

87-
# Install DNA on host (Check install option with $ bash install.bash --help)
88-
bash install.bash
8973

90-
# Check available commands
91-
dna
92-
```
74+
[//]: # (## What it does)
9375

94-
![dna_splash.png](visual/dna_splash.png)
76+
<details open>
77+
<summary style="font-weight: bolder;font-size: x-large;">What it does</summary>
9578

96-
### Make a repository ready to use with DNA
79+
- **Containerized robotic development environment**: Provides a complete containerized workflow for robotic research, development, deployment, testing, continuous integration, running slurm jobs, and source code release.
80+
- **Multi-platform support**: Runs seamlessly on `l4t/arm64` (Jetson), `darwin/arm64` (Mac OS X), and `linux/x86` without configuration changes.
81+
- **Flexible deployment modes**: Supports both local and remote workflows for personal workstations, remote embedded computers, and servers.
82+
- **Robotic Software System ([ROS2](https://github.com/ros2)) ready**: Ready to roll, out of the box.
83+
- **GPU acceleration**: Provides GPU support through [nvidia-docker](https://github.com/NVIDIA/nvidia-docker) for both `l4t/arm64` and `linux/x86` platforms.
84+
- **Transparent configuration**: Makes project configuration easy while keeping [Docker](https://docs.docker.com/) and [Docker Compose](https://docs.docker.com/compose/) logic transparent and accessible.
9785

98-
```shell
99-
# To DNA-initialize a project repository (must be git initialized)
100-
cd <path/to/your/project/repository>
101-
dna init
102-
```
86+
</details>
10387

104-
Which add a few directories to your project repository
105-
```markup
106-
your-project-repository/
107-
├── .dockerized_norlab/ <- DNA configuration
108-
├── artifact/ <- Runtime produced data (mounted)
109-
├── external_data/ <- Pre-existing data made available in your container (mounted)
110-
├── src/ <- Your repository source code (mounted/copied)
111-
├── tests/ <- Your repository test code (mounted/copied)
112-
...
113-
├── .dockerignore <- Specify files/dir that won't be copied in container on build
114-
├── .gitignore <- Specify files/dir to keep out of VCS
115-
└── README.md <- Created if it did not already exist
116-
```
117-
Note:
118-
- Any directory or file that already exist will be updated, not overriden.
119-
- Content of the artifact direcotry is persistent. It will remain available even if the container is stoped or removed.
88+
[//]: # (## Why)
12089

121-
### Create, run and stop DN container
90+
<details close>
91+
<summary style="font-weight: bolder;font-size: x-large;">Why</summary>
12292

123-
To spin a DN container and open a terminal in it, run the following command from anywhere in the DNA initialized repository
124-
```shell
125-
dna build develop
126-
dna up
12793

128-
# When your done
129-
dna down
130-
```
94+
Dockerized-NorLab (DN) and the Dockerized-NorLab project application (DNA) solve critical challenges in robotic research and development by providing a standardized, reproducible, and scalable containerized environment.
13195

132-
> **📖 For detailed configuration and command documentation**, see the [Documentation](#documentation) section below.
13396

134-
## Why
97+
<div align="center">
98+
<table>
99+
<tr>
100+
<td><img src="visual/DN_presentation_diagram/dn_techincal_presentation_1.jpg" alt="Key properties reproducibility" width="400"></td>
101+
<td><img src="visual/DN_presentation_diagram/dn_techincal_presentation_2.jpg" alt="Key properties isolation" width="400"></td>
102+
</tr>
103+
<tr>
104+
<td><img src="visual/DN_presentation_diagram/dn_techincal_presentation_3.jpg" alt="Project collaboration" width="400"></td>
105+
<td><img src="visual/DN_presentation_diagram/dn_techincal_presentation_4.jpg" alt="Fast deployment" width="400"></td>
106+
</tr>
107+
<tr>
108+
<td colspan="2" align="center"><img src="visual/DN_presentation_diagram/dn_techincal_presentation_5.jpg" alt="Code quality" width="400"></td>
109+
</tr>
110+
</table>
111+
</div>
135112

136-
Dockerized-NorLab (DN) and the DNA application solve critical challenges in robotic research and development by providing a standardized, reproducible, and scalable containerized environment.
137113

138114
### Key Benefits
139115

@@ -152,46 +128,51 @@ Deploy your robotic applications quickly and reliably across different platforms
152128
**✅ Code Quality**
153129
Maintain high code quality with integrated testing, continuous integration, and standardized development practices built into the containerized workflow.
154130

131+
</details>
132+
133+
[//]: # (## Use Cases)
134+
135+
<details close>
136+
<summary style="font-weight: bolder;font-size: x-large;">Use Cases</summary>
137+
138+
DNA and DN support a wide range of robotic development and deployment scenarios:
139+
155140
<div align="center">
156141
<table>
157142
<tr>
158-
<td><img src="visual/DN_presentation_diagram/dn_techincal_presentation_1.jpg" alt="Key properties reproducibility" width="400"></td>
159-
<td><img src="visual/DN_presentation_diagram/dn_techincal_presentation_2.jpg" alt="Key properties isolation" width="400"></td>
143+
<td><img src="visual/DN_presentation_diagram/dn_techincal_presentation_7.jpg" alt="Local development use case" width="400"></td>
144+
<td><img src="visual/DN_presentation_diagram/dn_techincal_presentation_8.jpg" alt="Remote development use case" width="400"></td>
160145
</tr>
161146
<tr>
162-
<td><img src="visual/DN_presentation_diagram/dn_techincal_presentation_3.jpg" alt="Project collaboration" width="400"></td>
163-
<td><img src="visual/DN_presentation_diagram/dn_techincal_presentation_4.jpg" alt="Fast deployment" width="400"></td>
147+
<td><img src="visual/DN_presentation_diagram/dn_techincal_presentation_6.jpg" alt="Deployment use case" width="400"></td>
148+
<td><img src="visual/DN_presentation_diagram/dn_techincal_presentation_9.jpg" alt="DN Multi-Platform Support" width="400"></td>
164149
</tr>
165150
<tr>
166-
<td colspan="2" align="center"><img src="visual/DN_presentation_diagram/dn_techincal_presentation_5.jpg" alt="Code quality" width="400"></td>
151+
<td colspan="2" align="center"><img src="visual/DN_presentation_diagram/dn_techincal_presentation_10.jpg" alt="CI CD use case" width="400"></td>
167152
</tr>
168153
</table>
169154
</div>
170155

171-
## Use Cases
172-
173-
DNA and DN support a wide range of robotic development and deployment scenarios:
174-
175156
### Development, Deployment and Release Modes
176157

177158
**🛠 Local and Remote Development (Develop Mode)**
178159
Set up consistent development environments on local workstations and remote machines. DNA is installed on both local and remote hosts, enabling seamless development workflows across different locations.
179160

180-
**🚀 Deployment (Deploy Mode)**
161+
**⏯️ Deployment (Deploy Mode)**
181162
Deploy your robotic applications to target hosts with DNA installed. Streamlined deployment process ensures your applications run consistently in production environments.
182163

183164
**📦 Release Mode**
184165
Create and distribute source code release. Released containers can run independently without requiring DNA installation on the target system.
185166

186167
### Specialized Workflows
187168

188-
**🔄 Continuous Integration Testing**
189-
Run automated CI tests in isolated, reproducible environments. Perfect for validating code changes and maintaining code quality across your robotic projects. DNA/DN is CI framework agnostic. CI test can even be run localy.
169+
**🔄 Testing and Continuous Integration (CI)**
170+
Run automated CI tests in isolated, reproducible environments. Perfect for validating code changes and maintaining code quality across your robotic projects. DN/DNA is CI framework agnostic, it can run tests localy or on any CI server.
190171

191-
** SLURM Job Execution**
172+
**🧪 SLURM Job Experiment**
192173
Execute compute-intensive robotic algorithms and simulations on SLURM-managed clusters with consistent containerized environments.
193174

194-
**🌐 Multi-Platform Support**
175+
** Multi-Platform Support**
195176
Work seamlessly across different operating systems and architectures:
196177
- `l4t/arm64` (NVIDIA Jetson platforms)
197178
- `darwin/arm64` (Mac OS X with Apple Silicon)
@@ -200,21 +181,70 @@ Work seamlessly across different operating systems and architectures:
200181
**🎮 GPU Acceleration**
201182
Leverage GPU computing power for robotics applications through nvidia-docker integration, supporting both ARM64 and x86 platforms.
202183

203-
<div align="center">
204-
<table>
205-
<tr>
206-
<td><img src="visual/DN_presentation_diagram/dn_techincal_presentation_7.jpg" alt="Local development use case" width="400"></td>
207-
<td><img src="visual/DN_presentation_diagram/dn_techincal_presentation_8.jpg" alt="Remote development use case" width="400"></td>
208-
</tr>
209-
<tr>
210-
<td><img src="visual/DN_presentation_diagram/dn_techincal_presentation_6.jpg" alt="Deployment use case" width="400"></td>
211-
<td><img src="visual/DN_presentation_diagram/dn_techincal_presentation_9.jpg" alt="DN Multi-Platform Support" width="400"></td>
212-
</tr>
213-
<tr>
214-
<td colspan="2" align="center"><img src="visual/DN_presentation_diagram/dn_techincal_presentation_10.jpg" alt="CI CD use case" width="400"></td>
215-
</tr>
216-
</table>
217-
</div>
184+
</details>
185+
186+
---
187+
188+
## Getting started
189+
190+
[//]: # (<details close>)
191+
[//]: # ( <summary style="font-weight: bolder;font-size: x-large;">Getting started</summary>)
192+
193+
### Install `dna`, the Dockerized-NorLab project app
194+
195+
```shell
196+
# Clone repository on host computer
197+
git clone --recurse-submodule https://github.com/norlab-ulaval/dockerized-norlab-project.git
198+
cd dockerized-norlab-project
199+
200+
# Install DNA on host (Check install option with $ bash install.bash --help)
201+
bash install.bash
202+
203+
# Check available commands
204+
dna
205+
```
206+
207+
### Make a repository ready to use with DNA
208+
209+
```shell
210+
# To DNA-initialize a project repository (must be git initialized)
211+
cd <path/to/your/project/repository>
212+
dna init
213+
```
214+
215+
Which add a few directories to your project repository
216+
```markup
217+
your-project-repository/
218+
├── .dockerized_norlab/ <- DNA configuration
219+
├── artifact/ <- Runtime produced data (mounted)
220+
├── external_data/ <- Pre-existing data made available in your container (mounted)
221+
├── src/ <- Your repository source code (mounted/copied)
222+
├── tests/ <- Your repository test code (mounted/copied)
223+
...
224+
├── .dockerignore <- Specify files/dir that won't be copied in container on build
225+
├── .gitignore <- Specify files/dir to keep out of VCS
226+
└── README.md <- Created if it did not already exist
227+
```
228+
Note:
229+
- Any directory or file that already exist will be updated, not overriden.
230+
- Content of the artifact direcotry is persistent. It will remain available even if the container is stoped or removed.
231+
232+
### Create, run and stop DN container
233+
234+
To spin a DN container and open a terminal in it, run the following command from anywhere in the DNA initialized repository
235+
```shell
236+
dna build develop
237+
dna up
238+
239+
# When your done
240+
dna down
241+
```
242+
243+
> **📖 For detailed configuration and command documentation**, see the [Documentation](#documentation) section below.
244+
245+
[//]: # (</details>)
246+
247+
---
218248

219249
## Documentation
220250

@@ -234,13 +264,15 @@ Leverage GPU computing power for robotics applications through nvidia-docker int
234264
- [dna config](documentation/command/config.md) - Show configuration
235265
- [dna version](documentation/command/version.md) - Show DNA version
236266

237-
### 🛠️ Setup & Configuration
267+
### ️ Setup & Configuration
238268

239269
- **[Installation Guide](documentation/install.md)** - Detailed installation instructions for all supported platforms
240270
- **[Project Initialization & Configuration](documentation/project_initialization_and_configuration.md)** - Complete guide to setting up and configuring DNA projects
241271
- **[IDE Integration](documentation/ide_integration.md)** - Setup instructions for development environments and IDEs
242272

243-
### 🧪 For Beta Testers
273+
---
274+
275+
## 🧪 For Beta Testers
244276

245277
To try DNA in a throwaway project:
246278
```shell

documentation/command/attach.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,8 @@ The `attach` command uses SSH to connect to containers:
115115

116116
### Default SSH Configuration
117117

118-
- **Port**: Configured via `CONTAINER_SSH_PORT` (default: 2222)
119-
- **User**: Configured via `SUPER_PROJECT_USER`
118+
- **Port**: Configured via `DN_SSH_SERVER_PORT` (default: 2222)
119+
- **User**: Configured via `DN_PROJECT_USER`
120120
- **Host**: localhost (for local containers)
121121

122122
### SSH Key Management
@@ -145,7 +145,7 @@ DNA handles SSH key management automatically:
145145

146146
3. **Check port mapping**:
147147
```bash
148-
docker port CONTAINER_NAME
148+
docker port DN_CONTAINER_NAME
149149
```
150150

151151
4. **Restart SSH service**:
@@ -175,8 +175,8 @@ DNA handles SSH key management automatically:
175175
**Solutions**:
176176
1. **Check user configuration**:
177177
```bash
178-
# Verify SUPER_PROJECT_USER in .env
179-
grep SUPER_PROJECT_USER .dockerized_norlab/configuration/.env
178+
# Verify super project DN container user information
179+
dna project dotenv | grep -e DN_PROJECT_USER -e DN_PROJECT_UID -e DN_PROJECT_GID
180180
```
181181

182182
2. **Regenerate SSH keys**:

documentation/command/config.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ services:
182182
- ./artifact:/artifact:rw
183183
ports:
184184
- "2222:22"
185-
- "5901:5901"
185+
- "7777:7777"
186186
```
187187
188188
## Troubleshooting

documentation/command/exec.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ The `exec` command automatically discovers the appropriate service:
174174
dna exec --detach -- python3 long_running_script.py
175175

176176
# Check if process is still running
177-
docker exec CONTAINER_NAME ps aux | grep python3
177+
docker exec DN_CONTAINER_NAME ps aux | grep python3
178178
```
179179

180180
### Process Management
@@ -184,7 +184,7 @@ docker exec CONTAINER_NAME ps aux | grep python3
184184
dna exec --detach -- ros2 launch my_package service.launch.py
185185

186186
# Monitor logs
187-
docker logs -f CONTAINER_NAME
187+
docker logs -f DN_CONTAINER_NAME
188188

189189
# Stop background process (if needed)
190190
dna exec -- pkill -f "ros2 launch"

documentation/command/run.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ dna run slurm ${SLURM_JOB_ID} -- python3 experiment.py \
246246
**Solutions**:
247247
1. **Check user mapping**: Verify user configuration
248248
```bash
249-
grep SUPER_PROJECT_USER .dockerized_norlab/configuration/.env
249+
dna project dotenv | grep DN_PROJECT_USER
250250
```
251251
252252
2. **Use volume mounts carefully**: Ensure proper permissions

documentation/command/up.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ DNA automatically discovers available services:
204204
1. Check if images are built: `dna build develop`
205205
2. Verify docker-compose configuration
206206
3. Check for port conflicts
207-
4. Review container logs: `docker logs CONTAINER_NAME`
207+
4. Review container logs: `docker logs DN_CONTAINER_NAME`
208208

209209
### Cannot Attach to Container
210210

@@ -213,7 +213,7 @@ DNA automatically discovers available services:
213213
**Solutions**:
214214
1. Verify container is running: `docker ps`
215215
2. Check SSH service in container: `dna exec systemctl status ssh`
216-
3. Verify port mappings: `docker port CONTAINER_NAME`
216+
3. Verify port mappings: `docker port DN_CONTAINER_NAME`
217217

218218
### Permission Denied
219219

@@ -222,10 +222,9 @@ DNA automatically discovers available services:
222222
**Solutions**:
223223
1. Check user configuration in `.env`:
224224
```bash
225-
SUPER_PROJECT_USER=$(id -un)
225+
dna project dotenv | grep -e DN_PROJECT_USER -e DN_PROJECT_UID -e DN_PROJECT_GID
226226
```
227227
2. Verify file permissions in mounted volumes
228-
3. Use appropriate user context: `dna exec --user root COMMAND`
229228

230229
### Port Conflicts
231230

@@ -234,8 +233,8 @@ DNA automatically discovers available services:
234233
**Solutions**:
235234
1. Change ports in `.env.local`:
236235
```bash
237-
CONTAINER_SSH_PORT=2223
238-
CONTAINER_VNC_PORT=5902
236+
DN_SSH_SERVER_PORT=2223
237+
DN_GDB_SERVER_PORT=7777
239238
```
240239
2. Stop conflicting containers: `docker ps` and `docker stop`
241240

0 commit comments

Comments
 (0)