Almost done

This commit is contained in:
Alex Davies 2024-01-23 15:47:46 -04:00
parent 4652368c8d
commit 69ba51fa20
4 changed files with 81 additions and 72 deletions

View File

@ -21,7 +21,7 @@ RUN apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin d
RUN apt-get install ros-$ROS_DISTRO-gazebo-ros-pkgs ros-$ROS_DISTRO-gazebo-ros-control gazebo11 -y
RUN apt-get install ros-$ROS_DISTRO-mavros -y
RUN apt-get install lxqt-core dbus-x11 udisks2- gvfs-daemons- gvfs-backends- gvfs-fuse- -y #A few things related to FUSE need to be explicityly not installed
RUN apt-get install vim nano htop git mesa-utils rsync -y
RUN apt-get install vim nano htop git mesa-utils rsync iputils-ping -y
RUN apt-get install firefox -y
RUN apt-get remove gnome-shell -y
@ -49,7 +49,7 @@ ARG USER_GID=$USER_UID
RUN groupadd --gid $USER_GID $USERNAME
RUN useradd --uid $USER_UID --gid $USER_GID --create-home --shell /bin/bash $USERNAME
RUN usermod -aG sudo,ssl-cert $USERNAME
RUN usermod -aG sudo,ssl-cert,docker $USERNAME
RUN echo "$USERNAME ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/$USERNAME
RUN chmod 0440 /etc/sudoers.d/$USERNAME
RUN echo "${USERNAME}:spiri-friend" | chpasswd

View File

@ -8,75 +8,11 @@ docker run -p 127.0.0.1:8466:8466 \
git.spirirobotics.com/spiri/spiri-sdk-desktop:master
```
Navigate to http://localhost:8466, and log in using the username `spiri` and the password `spiri-friend`
Navigate to http://localhost:8466, and log in using the username `spiri` and the password `spiri-friend`.
For a complete example try this:
From inside the SDK use the following commands to start gazebo and a virtual drone.
```yaml
version: "3.3"
#Due to a bug in moby's libnetwork DNS resolver single domains like `gazebo`
# don't get resolved properly, even when we have ndots set to 0 like we're
# supposed to. So we need to reference `gazebo.compose-name_network-name`.
# We explicitly set the name variable so that changing folders doesn't break
# the install.
name: "spiri-sdk"
volumes:
user-home:
dockeradmin:
docker-cache:
services:
drone-stack:
#The drone runs docker, so ultimately our drone stack is just a docker-in-docker container.
## This can make it difficult to deal with GPU acceleration, but remember that ROS *is*
## distributed. You don't need to run your GPU-accelerated rosnode on the drone-stack,
## just make sure you can contact the ROS_MASTER.
runtime: sysbox-runc
image: docker:24-dind
command: dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 --tls=false
healthcheck:
test: docker info
start_interval: 1s
ports:
- "127.0.0.1:5760:5760" #Ground control
- "127.0.0.1:4560:4560" # Simulation
- "127.0.0.1:14560:14560" # Simulation
- "127.0.0.1:11311:11311" #Ros master
volumes:
- docker-cache:/var/lib/docker/
#Madness, setting a low ulimit here fixes memory leaks
# https://answers.ros.org/question/336963/rosout-high-memory-usage/
ulimits:
nofile:
soft: 1024
hard: 524288
gazebo:
image: git.spirirobotics.com/spiri/gazebo-classic:main
# command: gzserver --verbose /usr/share/gazebo-11/worlds/empty.world
command: gzserver --verbose /usr/share/gazebo-11/worlds/citadel_hill_world.world
ports:
- "127.0.0.1:11345:11345" #Ros master
desktop:
image: git.spirirobotics.com/spiri/spiri-sdk-desktop:master
runtime: sysbox-runc
tty: true
environment:
DOCKER_HOST: tcp://drone-stack:2375
ROS_MASTER_URI: http://drone-stack:11311
GAZEBO_MASTER_URI: http://gazebo.spiri-sdk_default:11345
ports:
- 127.0.0.1:8466:8466
volumes:
- ./spiri-sdk-home:/home/spiri
depends_on:
drone-stack:
condition: service_healthy
```
cd ~/sdk/
docker compose up
```

View File

@ -4,7 +4,7 @@ version: "3.3"
# don't get resolved properly, even when we have ndots set to 0 like we're
# supposed to. So we need to reference `gazebo.compose-name_network-name`.
# We explicitly set the name variable so that changing folders doesn't break
# the install.
# the install. This only applies when using docker-in-docker
name: "spiri-sdk"
volumes:

View File

@ -0,0 +1,73 @@
version: "3"
name: "spiri-sdk"
services:
gazebo:
image: git.spirirobotics.com/spiri/gazebo-classic:main
# command: gzserver --verbose /usr/share/gazebo-11/worlds/empty.world
command: gzserver --verbose /usr/share/gazebo-11/worlds/citadel_hill_world.world
ports:
- 127.0.0.1:11345:11345
robot-coprocessor-simulation:
image: git.spirirobotics.com/spiri/px4-sim:master
environment:
ROS_MASTER_URI: "http://ros-master:11311"
GAZEBO_MASTER_URI: http://gazebo.spiri-sdk_default:11345
# MAVLINK_REPORT_STATS: "True"
PX4_SYS_AUTOSTART: 4001 #Generic Quadrotor X https://docs.px4.io/main/en/airframes/airframe_reference.html#quadrotor-x
PX4_SIMULATOR: "remote" # If we leave this field blank in the config file, the simulator will be set to 'gz' by default. To override this and use a remote simulator instead, we need to assign any value (in this case, "remote") to this field.
PX4_SIM_HOSTNAME: gazebo.spiri-sdk_default
restart: always
ports:
- "5760:5760" #Ground control
- "4560:4560" # Simulation
- "14560:14560" # Simulation
mavros:
#This service bridges our mavlink-based robot-coprosessor into ROS
#In this example it connects to a simulated coprocessor.
image: radarku/mavros
command: roslaunch mavros px4.launch fcu_url:="udp://:14540@robot-coprocessor-simulation:14541"
environment:
- "ROS_MASTER_URI=http://ros-master:11311"
depends_on:
ros-master:
condition: service_healthy
deploy:
resources:
limits:
# cpus: '0.01'
memory: 200M
ulimits:
nofile:
soft: 1024
hard: 524288
ros-master:
image: ros:noetic-ros-core
#command: roscore
command: stdbuf -o L roscore
environment:
- "ROS_MASTER_URI=http://ros-master:11311"
healthcheck:
test: ["CMD", "/ros_entrypoint.sh", "rostopic", "list"]
retries: 6
restart: always
ports:
- 11311:11311
deploy:
resources:
limits:
# cpus: '0.01'
memory: 1G
# #Madness, setting a low ulimit here fixes memory leaks
# # https://answers.ros.org/question/336963/rosout-high-memory-usage/
ulimits:
nofile:
soft: 1024
hard: 524288