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/
|
WORKDIR /opt/spiri-sdk/PX4-Autopilot/
|
||||||
RUN DONT_RUN=1 make px4_sitl gazebo-classic
|
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
|
#This should be the first real user created and the `users` group on most linux distros
|
||||||
RUN chown -R 1000:100 /opt/spiri-sdk
|
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
|
```bash
|
||||||
distrobox create --image git.spirirobotics.com/spiri/spiri-sdk-desktop:main
|
distrobox create --image git.spirirobotics.com/spiri/spiri-sdk-desktop:main
|
||||||
distrobox enter 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/
|
cd /opt/spiri-sdk/PX4-Autopilot/
|
||||||
make px4_sitl gazebo-classic #Start the simulator
|
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.
|
# We mount the current working directory in the docker container as part of this script.
|
||||||
./virtualize.sh build ./ -s 100gb -o sdk.vdi
|
./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