Tidied permissions, installed docker daemon in VM
This commit is contained in:
parent
b1e8ab2f1b
commit
3345b0ba07
26
Dockerfile
26
Dockerfile
|
@ -15,14 +15,24 @@ RUN git clone --depth 1 -b v1.15.0-beta1 https://github.com/PX4/PX4-Autopilot.gi
|
|||
WORKDIR /opt/spiri-sdk/PX4-Autopilot/
|
||||
RUN DONT_RUN=1 make px4_sitl gazebo-classic
|
||||
|
||||
RUN apt-get install --yes virtualbox-guest-dkms virtualbox-guest-utils
|
||||
RUN apt-get install --yes virtualbox-guest-dkms virtualbox-guest-utils spice-vdagent qemu-guest-agent
|
||||
RUN apt-get install --yes docker-compose-v2 firefox
|
||||
#Install our desktop environment last
|
||||
RUN apt-get install --yes --no-install-recommends lubuntu-desktop sddm
|
||||
|
||||
COPY ./skel/ /opt/spiri-sdk/user-home-skeleton/
|
||||
RUN cp -r /opt/spiri-sdk/user-home-skeleton/* /etc/skel/
|
||||
|
||||
RUN useradd -m -s /bin/bash spiri && echo 'spiri:spiri-friend' | chpasswd
|
||||
RUN usermod -aG sudo,docker spiri
|
||||
RUN userdel user
|
||||
|
||||
|
||||
#Install vscodium, a vscode fork with no telemetry and a worse package store
|
||||
# RUN sh -c "curl -fSsL https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg | sudo gpg --dearmor | sudo tee /usr/share/keyrings/vscodium.gpg > /dev/null"
|
||||
# RUN "echo deb [signed-by=/usr/share/keyrings/vscodium.gpg] https://download.vscodium.com/debs vscodium main | sudo tee /etc/apt/sources.list.d/vscodium.list"
|
||||
# RUN apt update
|
||||
# RUN apt install codium --yes
|
||||
|
||||
#This should be the first real user created and the `users` group on most linux distros
|
||||
RUN chown -R 1000:100 /opt/spiri-sdk
|
||||
#Install our desktop environment last
|
||||
RUN apt-get install --yes --no-install-recommends lxqt
|
||||
|
||||
RUN useradd -m -s /bin/bash spiri && echo 'spiri:spiri-friend' | chpasswd
|
||||
|
||||
# Optional: Add spiri to sudo group if needed
|
||||
RUN usermod -aG sudo spiri
|
||||
|
|
|
@ -14,6 +14,8 @@ integrate it with their existing linux workflows.
|
|||
```bash
|
||||
distrobox create --image git.spirirobotics.com/spiri/spiri-sdk-desktop:main
|
||||
distrobox enter spiri-sdk-desktop-main
|
||||
#You can optionally copy the standard SDK setup from /opt/spiri-sdk/user-home-skeleton/
|
||||
# cp -r /opt/spiri-sdk/user-home-skeleton/* ~/
|
||||
cd /opt/spiri-sdk/PX4-Autopilot/
|
||||
make px4_sitl gazebo-classic #Start the simulator
|
||||
```
|
||||
|
@ -25,3 +27,10 @@ make px4_sitl gazebo-classic #Start the simulator
|
|||
# We mount the current working directory in the docker container as part of this script.
|
||||
./virtualize.sh build ./ -s 100gb -o sdk.vdi
|
||||
```
|
||||
|
||||
For testing the VM, I use the following
|
||||
|
||||
```bash
|
||||
./virtualize.sh build ./ -s 100gb -o sdk.qcow2
|
||||
qemu-system-x87_64 -display default,show-cursor=on -enable-kvm -device virtio-gpu -m 4g -smp 4 -hda sdk.qcow2
|
||||
```
|
||||
|
|
|
@ -1,74 +0,0 @@
|
|||
system:
|
||||
name: spiri-sdk
|
||||
type: vmx-17
|
||||
os_vmw: other4xLinux64Guest
|
||||
firmware: efi
|
||||
secure_boot: false
|
||||
|
||||
networks:
|
||||
vm_network:
|
||||
name: "VM Network"
|
||||
description: "The VM Network network"
|
||||
|
||||
hardware:
|
||||
cpus: 2
|
||||
memory: 2048
|
||||
# sata1:
|
||||
# type: sata_controller
|
||||
scsi1:
|
||||
type: scsi_controller
|
||||
# cdrom1:
|
||||
# type: cd_drive
|
||||
# parent: sata1
|
||||
rootdisk:
|
||||
type: hard_disk
|
||||
parent: scsi1
|
||||
#Set automatically as part of our pipeline, do not change
|
||||
disk_image: output.vmdk
|
||||
usb1:
|
||||
type: usb_controller
|
||||
# ethernet1:
|
||||
# type: ethernet
|
||||
# subtype: VmxNet3
|
||||
# network: vm_network
|
||||
# videocard1:
|
||||
# type: video_card
|
||||
# vmci1:
|
||||
# type: vmci
|
||||
|
||||
# configurations:
|
||||
# tall:
|
||||
# label: Tall
|
||||
# description: too little for the money
|
||||
# grande:
|
||||
# label: Grande
|
||||
# description: just right
|
||||
# venti:
|
||||
# label: Venti
|
||||
# description: too much
|
||||
|
||||
# environment:
|
||||
# transports:
|
||||
# - com.vmware.guestInfo
|
||||
# - iso
|
||||
# categories:
|
||||
# email: Email Settings
|
||||
# properties:
|
||||
# guestinfo.admin.email:
|
||||
# value: admin@company.org
|
||||
# user_configurable: true
|
||||
# type: string
|
||||
# description: "The Admin's email address"
|
||||
# label: "Email Address"
|
||||
# category: email
|
||||
|
||||
# extra_configs:
|
||||
# feature.enabled:
|
||||
# required: false
|
||||
# value: true
|
||||
# log.rotateSize:
|
||||
# value: 2048000
|
||||
|
||||
product:
|
||||
product: Spiri SDK desktop
|
||||
vendor: Spiri Robotics
|
|
@ -0,0 +1,109 @@
|
|||
version: "3.8"
|
||||
|
||||
services:
|
||||
|
||||
gscam:
|
||||
image: git.spirirobotics.com/spiri/services-ros1-gscam_all_in_one:main
|
||||
runtime: nvidia
|
||||
environment:
|
||||
ROS_MASTER_URI: http://localhost:11311
|
||||
ROS_LOG_LEVEL: DEBUG
|
||||
PORT_GSCAM_CONFIG: >
|
||||
nvarguscamerasrc sensor-id=0 aelock=true awblock=true ! video/x-raw(memory:NVMM), width=(int)$(arg width), height=(int)$(arg height), format=(string)NV12, framerate=(fraction)$(arg fps)/1 ! nvvidconv flip-method=0 ! video/x-raw, format=(string)BGRx ! videoconvert ! video/x-raw, format=(string)BGR
|
||||
STARBOARD_GSCAM_CONFIG: >
|
||||
nvarguscamerasrc sensor-id=1 aelock=true awblock=true ! video/x-raw(memory:NVMM), width=(int)$(arg width), height=(int)$(arg height), format=(string)NV12, framerate=(fraction)$(arg fps)/1 ! nvvidconv flip-method=0 ! video/x-raw, format=(string)BGRx ! videoconvert ! video/x-raw, format=(string)BGR
|
||||
volumes:
|
||||
- /tmp/argus_socket:/tmp/argus_socket
|
||||
|
||||
udp-stream:
|
||||
image: git.spirirobotics.com/spiri/services-ros1-gscam_all_in_one:main
|
||||
privileged: true
|
||||
runtime: nvidia
|
||||
network_mode: host
|
||||
environment:
|
||||
DISPLAY: ":0"
|
||||
volumes:
|
||||
- /tmp/argus_socket:/tmp/argus_socket
|
||||
- /tmp/.X11-unix:/tmp/.X11-unix
|
||||
- /var/run/xauth/:/var/run/xauth/
|
||||
command: >
|
||||
gst-launch-1.0
|
||||
nvarguscamerasrc sensor-id=0
|
||||
! 'video/x-raw(memory:NVMM), width=(int)1280, height=(int)720, format=(string)NV12, framerate=(fraction)60/1'
|
||||
! tee name=raw
|
||||
raw. ! queue
|
||||
! nvegltransform ! nveglglessink sync=false async=false
|
||||
raw. ! queue
|
||||
! videorate max-rate=30 drop-only=true
|
||||
! queue max-size-buffers=3 leaky=downstream
|
||||
! nvv4l2h265enc
|
||||
bitrate=2000000
|
||||
iframeinterval=300
|
||||
vbv-size=33333
|
||||
insert-sps-pps=true
|
||||
control-rate=constant_bitrate
|
||||
profile=Main
|
||||
num-B-Frames=0
|
||||
ratecontrol-enable=true
|
||||
preset-level=UltraFastPreset
|
||||
EnableTwopassCBR=false
|
||||
maxperf-enable=true
|
||||
! rtph265pay name=pay0 pt=96 config-interval=-1 mtu=1400
|
||||
! udpsink host=192.168.1.100 auto-multicast=false port=5600 sync=false async=false
|
||||
|
||||
mavproxy:
|
||||
image: git.spirirobotics.com/spiri/services-mavproxy:main
|
||||
command: >
|
||||
mavproxy.py --non-interactive
|
||||
--out=udpin:0.0.0.0:14551
|
||||
--out=udpin:0.0.0.0:14550
|
||||
--out=tcpin:0.0.0.0:5760
|
||||
--master=/dev/ttyTHS2 --baudrate 921600
|
||||
restart: always
|
||||
devices:
|
||||
- "/dev/ttyTHS2:/dev/ttyTHS2"
|
||||
ports:
|
||||
- "14550:14550/udp"
|
||||
- "5760:5760/tcp"
|
||||
|
||||
mavros:
|
||||
#This service bridges our mavlink-based robot-coprosessor into ROS
|
||||
#In this example it connects to a simulated coprocessor.
|
||||
image: git.spirirobotics.com/spiri/services-ros1-mavros:master
|
||||
command: roslaunch mavros px4.launch fcu_url:="udp://:14555@mavproxy:14550"
|
||||
environment:
|
||||
- "ROS_MASTER_URI=http://ros-master:11311"
|
||||
depends_on:
|
||||
ros-master:
|
||||
condition: service_healthy
|
||||
mavproxy:
|
||||
condition: service_started
|
||||
restart: always
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
# cpus: '0.01'
|
||||
memory: 200M
|
||||
ulimits:
|
||||
nofile:
|
||||
soft: 1024
|
||||
hard: 524288
|
||||
|
||||
ros-master:
|
||||
image: git.spirirobotics.com/spiri/services-ros1-core:main
|
||||
command: stdbuf -o L roscore
|
||||
environment:
|
||||
- "ROS_MASTER_URI=http://ros-master:11311"
|
||||
restart: always
|
||||
ports:
|
||||
- "0.0.0.0:11311:11311"
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
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