Almost done
This commit is contained in:
parent
4652368c8d
commit
69ba51fa20
|
@ -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-gazebo-ros-pkgs ros-$ROS_DISTRO-gazebo-ros-control gazebo11 -y
|
||||||
RUN apt-get install ros-$ROS_DISTRO-mavros -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 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 install firefox -y
|
||||||
|
|
||||||
RUN apt-get remove gnome-shell -y
|
RUN apt-get remove gnome-shell -y
|
||||||
|
@ -49,7 +49,7 @@ ARG USER_GID=$USER_UID
|
||||||
|
|
||||||
RUN groupadd --gid $USER_GID $USERNAME
|
RUN groupadd --gid $USER_GID $USERNAME
|
||||||
RUN useradd --uid $USER_UID --gid $USER_GID --create-home --shell /bin/bash $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 echo "$USERNAME ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/$USERNAME
|
||||||
RUN chmod 0440 /etc/sudoers.d/$USERNAME
|
RUN chmod 0440 /etc/sudoers.d/$USERNAME
|
||||||
RUN echo "${USERNAME}:spiri-friend" | chpasswd
|
RUN echo "${USERNAME}:spiri-friend" | chpasswd
|
||||||
|
|
74
README.md
74
README.md
|
@ -8,75 +8,11 @@ docker run -p 127.0.0.1:8466:8466 \
|
||||||
git.spirirobotics.com/spiri/spiri-sdk-desktop:master
|
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"
|
cd ~/sdk/
|
||||||
|
docker compose up
|
||||||
#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
|
|
||||||
```
|
```
|
||||||
|
|
|
@ -4,7 +4,7 @@ version: "3.3"
|
||||||
# don't get resolved properly, even when we have ndots set to 0 like we're
|
# 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`.
|
# 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
|
# 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"
|
name: "spiri-sdk"
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue