Skip to content
Merged
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
21 changes: 4 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,26 +77,13 @@ Add the following to your `~/.bashrc` (adjust the variables for your setup):
```
export ROS_DOMAIN_ID=73 # any free domain id
export ROS_DISTRO=jazzy # {jazzy, humble}
export MOVENSYS_ROS_VERSION=isaac-ros_4.1 # {isaac-ros_4.1, isaac-ros_3.2, general}
export CPU_ARCH=amd64 # {amd64, arm64}
export NAVIGATION_MODEL=diffbot # {diffbot}

export HOST_USER_UID=$(id -u)
export HOST_USER_GID=$(id -g)
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp

export MOVENSYS_NAVIGATION_PACKAGES=~/workspaces/movensys_ws/src/movensys-navigation
export ISAAC_ROS_WS=~/workspaces/isaac_ros-dev
export MOVENSYS_ROS_VERSION=isaac-ros_4.1 # {general, isaac-ros_4.1, isaac-ros_3.2}
export NAVIGATION_MODEL=diffbot # {diffbot}

nros() {
if [ $# -eq 0 ]; then
docker exec -it -u admin movensys_navigation_container \
bash -lc 'source /opt/ros/${ROS_DISTRO}/setup.bash && source /home/admin/workspaces/movensys_ws/install/setup.bash && exec bash -i'
else
docker exec -it -u admin movensys_navigation_container \
bash -lc "source /opt/ros/\${ROS_DISTRO}/setup.bash && source /home/admin/workspaces/movensys_ws/install/setup.bash && $*"
fi
}
source ~/workspaces/movensys_ws/src/movensys-navigation/docker/nros.bash
```

```
Expand Down Expand Up @@ -128,7 +115,7 @@ git clone https://github.com/movensys/movensys-navigation.git
### 4. Build and start the container

```
cd ${MOVENSYS_NAVIGATION_PACKAGES}/docker
cd ~/workspaces/movensys_ws/src/movensys-navigation/docker
docker compose -f ${MOVENSYS_ROS_VERSION}.yaml -f movensys_navigation.${CPU_ARCH}.yaml down
docker compose -f ${MOVENSYS_ROS_VERSION}.yaml -f movensys_navigation.${CPU_ARCH}.yaml build
docker compose -f ${MOVENSYS_ROS_VERSION}.yaml -f movensys_navigation.${CPU_ARCH}.yaml up -d
Expand Down
24 changes: 5 additions & 19 deletions doc/1_setup.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,16 @@
# Host Environment Setup

## 1. Bashrc Configuration
- Add the following environment variables to your `~/.bashrc`:
## 1. Bashrc Configuration [~/.bashrc]
```
export ROS_DOMAIN_ID=73 #use any number
export ROS_DISTRO=jazzy #support {jazzy, humble}
export MOVENSYS_ROS_VERSION=isaac-ros_4.1 #support {isaac-ros_4.1, isaac-ros_3.2, general}
export CPU_ARCH=amd64 #support {amd64, arm64}
export NAVIGATION_MODEL=diffbot #support {diffbot}

export HOST_USER_UID=$(id -u)
export HOST_USER_GID=$(id -g)
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp

export MOVENSYS_NAVIGATION_PACKAGES=~/workspaces/movensys_ws/src/movensys-navigation
export ISAAC_ROS_WS=~/workspaces/isaac_ros-dev
export MOVENSYS_ROS_VERSION=isaac-ros_4.1 #support {general, isaac-ros_4.1, isaac-ros_3.2}
export NAVIGATION_MODEL=diffbot #support {diffbot}

nros() {
if [ $# -eq 0 ]; then
docker exec -it -u admin movensys_navigation_container \
bash -lc 'source /opt/ros/${ROS_DISTRO}/setup.bash && source /home/admin/workspaces/movensys_ws/install/setup.bash && exec bash -i'
else
docker exec -it -u admin movensys_navigation_container \
bash -lc "source /opt/ros/\${ROS_DISTRO}/setup.bash && source /home/admin/workspaces/movensys_ws/install/setup.bash && $*"
fi
}
source ~/workspaces/movensys_ws/src/movensys-navigation/docker/nros.bash
```
```
xhost +local:docker
Expand All @@ -44,7 +30,7 @@ sudo sysctl -p /etc/sysctl.d/99-network-buffers.conf
sysctl net.core.rmem_max net.core.rmem_default net.core.wmem_max net.core.wmem_default
```

## 4. Clone Repository
## 3. Clone Repository
```
mkdir -p ~/workspaces/movensys_ws/src
cd ~/workspaces/movensys_ws/src
Expand Down
4 changes: 2 additions & 2 deletions doc/2_docker.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ please follow this isaac-ros setup first:

# 2. Docker setup
```
cd ${MOVENSYS_NAVIGATION_PACKAGES}/docker
cd ~/workspaces/movensys_ws/src/movensys-navigation/docker
docker compose -f ${MOVENSYS_ROS_VERSION}.yaml -f movensys_navigation.${CPU_ARCH}.yaml down
docker compose -f ${MOVENSYS_ROS_VERSION}.yaml -f movensys_navigation.${CPU_ARCH}.yaml build
docker compose -f ${MOVENSYS_ROS_VERSION}.yaml -f movensys_navigation.${CPU_ARCH}.yaml up -d
docker compose -f ${MOVENSYS_ROS_VERSION}.yaml -f movensys_navigation.${CPU_ARCH}.yaml up -d
```

# 3. Checking Docker
Expand Down
6 changes: 4 additions & 2 deletions docker/.env
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
CONTAINER_NAME=movensys_navigation_container
IMAGE_NAME=movensys_navigation_image
CYCLONEDDS_DIR=${MOVENSYS_NAVIGATION_PACKAGES}/docker/cyclonedds.xml
USER=admin

MOVENSYS_NAVIGATION_PACKAGES=..
ISAAC_ROS_WS=../../../../isaac_ros-dev
CYCLONEDDS_DIR=./cyclonedds.xml
26 changes: 20 additions & 6 deletions docker/general.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
name: movensys_navigation

services:
movensys_navigation:
restart: unless-stopped
Expand All @@ -7,8 +9,6 @@ services:
network: host
args:
- ROS_DISTRO=${ROS_DISTRO:-humble}
- HOST_USER_UID=${HOST_USER_UID:-1000}
- HOST_USER_GID=${HOST_USER_GID:-1000}
image: ${IMAGE_NAME}
container_name: ${CONTAINER_NAME}
privileged: true
Expand All @@ -20,9 +20,7 @@ services:
tty: true
environment:
- ROS_DOMAIN_ID=${ROS_DOMAIN_ID}
- HOST_USER_UID=${HOST_USER_UID}
- HOST_USER_GID=${HOST_USER_GID}
- USER=${USER}
- USER=admin
- RMW_IMPLEMENTATION=${RMW_IMPLEMENTATION}
- CYCLONEDDS_URI=file:///home/admin/workspaces/cyclonedds.xml
- DISPLAY
Expand All @@ -38,7 +36,23 @@ services:
devices:
- /dev/dri
command: ["/bin/bash","-lc",
"sudo chown -R admin:admin /home/admin/workspaces/movensys_ws && \
"SRC=/home/admin/workspaces/movensys_ws/src/movensys-navigation && \
DDS=/home/admin/workspaces/cyclonedds.xml && \
HOST_UID=$$(stat -c %u $$SRC) && HOST_GID=$$(stat -c %g $$SRC) && \
if [ \"$$HOST_UID\" = 0 ]; then \
echo \"WARN: $$SRC is root-owned, keeping admin $$(id -u admin):$$(id -g admin)\"; \
HOST_UID=$$(id -u admin); HOST_GID=$$(id -g admin); fi && \
echo ====== Map admin to host $$HOST_UID:$$HOST_GID ======= && \
if [ \"$$HOST_GID\" != \"$$(id -g admin)\" ]; then \
sudo groupmod -g $$HOST_GID admin \
|| echo \"NOTE: groupmod reported an error, continuing\"; fi && \
if [ \"$$HOST_UID\" != \"$$(id -u admin)\" ]; then \
sudo usermod -u $$HOST_UID admin \
|| echo \"NOTE: usermod home chown skipped (read-only mounts)\"; fi && \
sudo find /home/admin -xdev \
-path $$SRC -prune -o -path $$DDS -prune -o \
! -user admin -exec chown -h admin:admin {} + \
|| echo \"WARN: ownership fixup under /home/admin incomplete\" && \
source /opt/ros/${ROS_DISTRO}/setup.bash && \

cd /home/admin/workspaces/movensys_ws/src && \
Expand Down
37 changes: 32 additions & 5 deletions docker/isaac-ros_3.2.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
name: movensys_navigation

services:
movensys_navigation:
restart: unless-stopped
Expand All @@ -14,14 +16,22 @@ services:
ipc: host
runtime: nvidia
working_dir: /home/admin/workspaces/movensys_ws
entrypoint: ["/usr/local/bin/scripts/workspace-entrypoint.sh"]
entrypoint:
- /bin/bash
- -c
- |
SRC=/home/admin/workspaces/movensys_ws/src/movensys-navigation
HOST_USER_UID=$$(stat -c %u $$SRC 2>/dev/null || echo 1000)
HOST_USER_GID=$$(stat -c %g $$SRC 2>/dev/null || echo 1000)
if [ "$$HOST_USER_UID" = 0 ]; then HOST_USER_UID=1000; HOST_USER_GID=1000; fi
export HOST_USER_UID HOST_USER_GID
exec /usr/local/bin/scripts/workspace-entrypoint.sh "$$@"
- --
stdin_open: true
tty: true
environment:
- ROS_DOMAIN_ID=${ROS_DOMAIN_ID}
- HOST_USER_UID=${HOST_USER_UID}
- HOST_USER_GID=${HOST_USER_GID}
- USER=${USER}
- USER=admin
- RMW_IMPLEMENTATION=${RMW_IMPLEMENTATION}
- ISAAC_ROS_WS=/home/admin/workspaces/isaac_ros-dev
- CYCLONEDDS_URI=file:///home/admin/workspaces/cyclonedds.xml
Expand All @@ -47,7 +57,24 @@ services:
- |
set -e
[ -f ~/.bashrc ] && source ~/.bashrc || true
sudo chown -R admin:admin /home/admin/workspaces/movensys_ws
SRC=/home/admin/workspaces/movensys_ws/src/movensys-navigation
DDS=/home/admin/workspaces/cyclonedds.xml
HOST_UID=$$(stat -c %u $$SRC); HOST_GID=$$(stat -c %g $$SRC)
if [ "$$HOST_UID" = 0 ]; then
echo "WARN: $$SRC is root-owned, keeping admin $$(id -u admin):$$(id -g admin)"
HOST_UID=$$(id -u admin); HOST_GID=$$(id -g admin)
fi
echo ====== Map admin to host $$HOST_UID:$$HOST_GID =======
if [ "$$HOST_GID" != "$$(id -g admin)" ]; then
sudo groupmod -g $$HOST_GID admin || echo "NOTE: groupmod reported an error, continuing"
fi
if [ "$$HOST_UID" != "$$(id -u admin)" ]; then
sudo usermod -u $$HOST_UID admin || echo "NOTE: usermod home chown skipped (read-only mounts)"
fi
sudo find /home/admin -xdev \
-path $$SRC -prune -o -path $$DDS -prune -o \
! -user admin -exec chown -h admin:admin {} + \
|| echo "WARN: ownership fixup under /home/admin incomplete"
source /opt/ros/humble/setup.bash

echo "ISAAC_ROS_WS=$$ISAAC_ROS_WS"
Expand Down
36 changes: 31 additions & 5 deletions docker/isaac-ros_4.1.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
name: movensys_navigation

services:
movensys_navigation:
restart: unless-stopped
Expand All @@ -14,14 +16,22 @@ services:
ipc: host
runtime: nvidia
working_dir: /home/admin/workspaces/movensys_ws
entrypoint: ["/usr/local/bin/scripts/workspace-entrypoint.sh"]
entrypoint:
- /bin/bash
- -c
- |
SRC=/home/admin/workspaces/movensys_ws/src/movensys-navigation
HOST_USER_UID=$$(stat -c %u $$SRC 2>/dev/null || echo 1000)
HOST_USER_GID=$$(stat -c %g $$SRC 2>/dev/null || echo 1000)
if [ "$$HOST_USER_UID" = 0 ]; then HOST_USER_UID=1000; HOST_USER_GID=1000; fi
export HOST_USER_UID HOST_USER_GID
exec /usr/local/bin/scripts/workspace-entrypoint.sh "$$@"
- --
stdin_open: true
tty: true
environment:
- ROS_DOMAIN_ID=${ROS_DOMAIN_ID}
- HOST_USER_UID=${HOST_USER_UID}
- HOST_USER_GID=${HOST_USER_GID}
- USER=${USER}
- USER=admin
- RMW_IMPLEMENTATION=${RMW_IMPLEMENTATION}
- ISAAC_ROS_WS=/home/admin/workspaces/isaac_ros-dev
- CYCLONEDDS_URI=file:///home/admin/workspaces/cyclonedds.xml
Expand All @@ -42,7 +52,23 @@ services:
devices:
- /dev/dri
command: ["/bin/bash","-lc",
"sudo chown -R admin:admin /home/admin/workspaces/movensys_ws && \
"SRC=/home/admin/workspaces/movensys_ws/src/movensys-navigation && \
DDS=/home/admin/workspaces/cyclonedds.xml && \
HOST_UID=$$(stat -c %u $$SRC) && HOST_GID=$$(stat -c %g $$SRC) && \
if [ \"$$HOST_UID\" = 0 ]; then \
echo \"WARN: $$SRC is root-owned, keeping admin $$(id -u admin):$$(id -g admin)\"; \
HOST_UID=$$(id -u admin); HOST_GID=$$(id -g admin); fi && \
echo ====== Map admin to host $$HOST_UID:$$HOST_GID ======= && \
if [ \"$$HOST_GID\" != \"$$(id -g admin)\" ]; then \
sudo groupmod -g $$HOST_GID admin \
|| echo \"NOTE: groupmod reported an error, continuing\"; fi && \
if [ \"$$HOST_UID\" != \"$$(id -u admin)\" ]; then \
sudo usermod -u $$HOST_UID admin \
|| echo \"NOTE: usermod home chown skipped (read-only mounts)\"; fi && \
sudo find /home/admin -xdev \
-path $$SRC -prune -o -path $$DDS -prune -o \
! -user admin -exec chown -h admin:admin {} + \
|| echo \"WARN: ownership fixup under /home/admin incomplete\" && \
source /opt/ros/jazzy/setup.bash && \

cd /home/admin/workspaces/movensys_ws/src && \
Expand Down
18 changes: 18 additions & 0 deletions docker/nros.bash
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
MOVENSYS_NAVIGATION_CONTAINER="${MOVENSYS_NAVIGATION_CONTAINER:-movensys_navigation_container}"
MOVENSYS_NAVIGATION_WORKSPACE="${MOVENSYS_NAVIGATION_WORKSPACE:-/home/admin/workspaces/movensys_ws}"

nros() {
local flags=(-i)
[ -t 0 ] && flags=(-it)

local setup='source /opt/ros/${ROS_DISTRO}/setup.bash'
setup="${setup} && source ${MOVENSYS_NAVIGATION_WORKSPACE}/install/setup.bash"

if [ $# -eq 0 ]; then
docker exec "${flags[@]}" -u admin "${MOVENSYS_NAVIGATION_CONTAINER}" \
bash -lc "${setup} && exec bash -i"
else
docker exec "${flags[@]}" -u admin "${MOVENSYS_NAVIGATION_CONTAINER}" \
bash -lc "${setup} && \"\$@\"" nros "$@"
fi
}
Loading