diff --git a/config/box_filter.yaml b/config/box_filter.yaml
new file mode 100644
index 0000000..ed930f3
--- /dev/null
+++ b/config/box_filter.yaml
@@ -0,0 +1,27 @@
+scan_to_scan_filter_chain:
+ ros__parameters:
+ filter1:
+ name: box_filter
+ type: laser_filters/LaserScanBoxFilter
+ params:
+ box_frame: laser_frame
+ max_x: 0.80 #was 0.16
+ max_y: 0.18 #was 0.17
+ max_z: 0.1
+ min_x: -0.41 #was -0.41
+ min_y: -0.18 # was -0.17
+ min_z: -0.2
+ invert: false # activate to remove all points outside of the box
+ name: shadows
+ type: laser_filters/ScanShadowsFilter
+ params:
+ min_angle: 10
+ max_angle: 170
+ neighbors: 20
+ window: 1
+ name: dark_shadows
+ type: laser_filters/LaserScanIntensityFilter
+ params:
+ lower_threshold: 100
+ upper_threshold: 10000
+ disp_histogram: 0
\ No newline at end of file
diff --git a/config/caddy/Caddyfile b/config/caddy/Caddyfile
new file mode 100644
index 0000000..78fb41f
--- /dev/null
+++ b/config/caddy/Caddyfile
@@ -0,0 +1,34 @@
+# {
+# debug
+# }
+
+http://loki {
+ root * /usr/share/caddy
+ file_server browse
+
+ handle_path /config* {
+ reverse_proxy http://olivetin:1337
+ }
+
+ handle_path /viz* {
+ reverse_proxy http://foxglove:8080
+ }
+
+ # this is not working right now
+ handle_path /joy* {
+ reverse_proxy http://host.docker.internal:8000
+ }
+}
+
+http://loki.local {
+ root * /usr/share/caddy
+ file_server browse
+
+ handle_path /config {
+ reverse_proxy http://olivetin:1337
+ }
+
+ handle_path /viz* {
+ reverse_proxy http://foxglove:8080
+ }
+}
diff --git a/config/caddy/content/overview/CPS_Logo_White_square_TRANSP.png b/config/caddy/content/overview/CPS_Logo_White_square_TRANSP.png
new file mode 100644
index 0000000..8db20ad
Binary files /dev/null and b/config/caddy/content/overview/CPS_Logo_White_square_TRANSP.png differ
diff --git a/config/caddy/content/overview/blueprint.svg b/config/caddy/content/overview/blueprint.svg
new file mode 100644
index 0000000..1c2d530
--- /dev/null
+++ b/config/caddy/content/overview/blueprint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/config/caddy/content/overview/index.html b/config/caddy/content/overview/index.html
new file mode 100644
index 0000000..66027ed
--- /dev/null
+++ b/config/caddy/content/overview/index.html
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+ CPS Bot Overview
+
+
+
+
+
+
+
+ Loki Overview
+
+
+
+
+
+
+
Teleop:
+
+
+
+
+
+
+
+
+
+
Robot Configuration:
+
+
+
+
+
+
+
+
+
+
+
+
Data View:
+
+
+
+
+
+
+
+
+
+
+
+
Manual:
+
+
+
+
+
+
+
+
+
+
+
+
Connect to Wi-Fi:
+
+
+
+
+
+ SSID: |
+ cps-loki |
+
+
+ Password: |
+ cps-loki |
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/config/caddy/content/overview/joystick.png b/config/caddy/content/overview/joystick.png
new file mode 100644
index 0000000..6c127f3
Binary files /dev/null and b/config/caddy/content/overview/joystick.png differ
diff --git a/config/caddy/content/overview/qr-loki-config.svg b/config/caddy/content/overview/qr-loki-config.svg
new file mode 100644
index 0000000..07fef97
--- /dev/null
+++ b/config/caddy/content/overview/qr-loki-config.svg
@@ -0,0 +1,508 @@
+
+
+
\ No newline at end of file
diff --git a/config/caddy/content/overview/qr-loki-overview.svg b/config/caddy/content/overview/qr-loki-overview.svg
new file mode 100644
index 0000000..fe7b3e1
--- /dev/null
+++ b/config/caddy/content/overview/qr-loki-overview.svg
@@ -0,0 +1,728 @@
+
+
+
\ No newline at end of file
diff --git a/config/caddy/content/overview/qr-loki-viz.svg b/config/caddy/content/overview/qr-loki-viz.svg
new file mode 100644
index 0000000..0269677
--- /dev/null
+++ b/config/caddy/content/overview/qr-loki-viz.svg
@@ -0,0 +1,552 @@
+
+
+
\ No newline at end of file
diff --git a/config/caddy/content/overview/qr-loki.wifi.svg b/config/caddy/content/overview/qr-loki.wifi.svg
new file mode 100644
index 0000000..2b160f6
--- /dev/null
+++ b/config/caddy/content/overview/qr-loki.wifi.svg
@@ -0,0 +1,1043 @@
+
+
+
\ No newline at end of file
diff --git a/config/caddy/content/overview/safety-glasses.svg b/config/caddy/content/overview/safety-glasses.svg
new file mode 100644
index 0000000..8deb128
--- /dev/null
+++ b/config/caddy/content/overview/safety-glasses.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/config/caddy/content/overview/style.css b/config/caddy/content/overview/style.css
new file mode 100644
index 0000000..534a5a6
--- /dev/null
+++ b/config/caddy/content/overview/style.css
@@ -0,0 +1,247 @@
+html
+{
+ background-color: rgb(51, 51, 51);
+ font-family: sans-serif;
+ padding-bottom: 50px;
+}
+
+#HEADLINE
+{
+ font-family:'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
+ text-align: center;
+ color: white;
+ background-color: rgb(1, 115, 126);
+ box-shadow: 0px 15px 0px -5px rgb(1, 89, 97);
+
+ margin-top: 2px;
+}
+
+#LOGO
+{
+ height: 1em;
+ width: auto;
+
+ float: right;
+ margin-top: 2px;
+ padding-left: 12px;
+ padding-right: 12px;
+ background-color: inherit;
+}
+
+.mini-heads
+{
+ color: white;
+ font-weight: 700;
+}
+
+#LEFT
+{
+ float: left;
+ max-width: 49.5%;
+
+ text-align: center;
+}
+
+#RIGHT
+{
+ float: right;
+ max-width: 49.5%;
+ flex-direction: row;
+
+ text-align: center;
+}
+
+.qr
+{
+ max-width: 59.5%;
+ height: auto;
+
+ object-fit: cover;
+
+ border-color: black;
+ border: 3px solid;
+ border-radius: 10%;
+
+}
+
+.qr_2
+{
+ width: 35%;
+ height: auto;
+}
+
+table, td
+{
+ color: white;
+
+ width: 70%;
+ line-height: 190%;
+ border: 1px solid rgb(76, 76, 76);
+ background-color: rgb(34, 34, 34);
+ border-collapse: collapse;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+#SPACE
+{
+ padding: 3px;
+}
+
+#NORM_SET
+{
+ padding-top: 6px;
+}
+
+.link
+{
+ color: white;
+ background-color: rgb(1, 115, 126);
+ padding-left: 10px;
+ padding-right: 10px;
+ border-radius: 3px;
+ text-decoration: none;
+}
+
+.link:hover
+{
+ color: rgb(206, 206, 206);
+}
+
+.link:visited
+{
+ color: rgb(75, 75, 75);
+ background-color: rgb(1, 89, 97);
+}
+
+.info
+{
+ color: white;
+
+ background-color: rgb(34, 34, 34);
+
+ padding-top: 3px;
+ padding-right: 6px;
+ text-indent: 6px;
+
+ position: fixed;
+ bottom: 0px;
+ right: 6px;
+
+ border: 1px solid rgb(76, 76, 76);
+}
+
+.info:hover
+{
+ cursor: pointer;
+}
+
+.info:visited
+{
+ color: rgb(206, 206, 206);
+}
+
+a, a:visited, a:hover, a:active {
+ text-decoration: none;
+ color: inherit;
+}
+
+/* Phone */ /* pract. ab 400% zoom (inludkiert) am pc */
+@media only screen and (max-width : 480px)
+{
+ #LEFT
+ {
+ width: 100%;
+ max-width: none;
+ clear: both;
+ text-align: center;
+ }
+
+ #RIGHT
+ {
+ max-width: none;
+ padding-top: 10px;
+ }
+
+ .qr
+ {
+ max-width: 43.9%;
+ }
+
+ .qr_2
+ {
+ width: 29%;
+ }
+}
+
+/* Tablet / Ipad */ /* pract. ab 200% Zoom (nicht inkludiert) am pc */
+@media only screen and (max-width : 767px) and (min-width: 481px)
+{
+ #LEFT
+ {
+ max-width: none;
+ width: 100%;
+ clear: both;
+ text-align: center;
+ }
+
+ .qr
+ {
+ max-width: 35%;
+ }
+
+ table td
+ {
+ font-size: large;
+ }
+
+ .mini-heads
+ {
+ font-size: x-large;
+ }
+
+ #RIGHT
+ {
+ max-width: none;
+ }
+
+ #SPACE
+ {
+ padding: none;
+ display: none;
+ }
+
+ #BLOCK_ONE
+ {
+ max-width: 49.5%;
+ float: left;
+ }
+
+ #BLOCK_TWO
+ {
+ max-width: 49.5%;
+ float: right;
+ }
+
+ #BLOCK_THREE
+ {
+ max-width: 49.5%;
+ float: right;
+ }
+
+ .qr_2
+ {
+ max-width: 80%;
+ width: 50%;
+ }
+
+ .link
+ {
+ font-size: larger;
+ }
+
+ .info
+ {
+ font-size: larger;
+ }
+}
\ No newline at end of file
diff --git a/config/caddy/content/overview/wrench.svg b/config/caddy/content/overview/wrench.svg
new file mode 100644
index 0000000..6bae290
--- /dev/null
+++ b/config/caddy/content/overview/wrench.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/foxglove/default.json b/config/foxglove/default.json
similarity index 100%
rename from foxglove/default.json
rename to config/foxglove/default.json
diff --git a/foxglove/default.json.bak b/config/foxglove/default.json.bak
similarity index 100%
rename from foxglove/default.json.bak
rename to config/foxglove/default.json.bak
diff --git a/foxglove/default.json.bak2 b/config/foxglove/default.json.bak2
similarity index 100%
rename from foxglove/default.json.bak2
rename to config/foxglove/default.json.bak2
diff --git a/config/olivetin/config.yaml b/config/olivetin/config.yaml
new file mode 100644
index 0000000..6b12a61
--- /dev/null
+++ b/config/olivetin/config.yaml
@@ -0,0 +1,35 @@
+showNavigation: false
+logLevel: "INFO"
+showNewVersions: false
+showFooter: false
+
+actions:
+ - title: "Start Navigation Stack"
+ shell: docker start cps_loki-navigation-1
+ icon: ''
+ - title: "Stop Navigation Stack"
+ shell: docker stop cps_loki-navigation-1
+ icon: ''
+ - title: "Start Mapping"
+ shell: docker start cps_loki-mapping-1
+ icon: ''
+ - title: "Stop Mapping"
+ shell: docker stop cps_loki-mapping-1
+ icon: ''
+ - title: "Restart Teleop"
+ icon: ''
+ shell: docker restart cps_loki-teleop-1
+ - title: Restart or Shutdown System
+ icon: restart
+ shell: systemctl {{ choice }}
+ arguments:
+ - name: choice
+ title: Pick one
+ choices:
+ - value: reboot
+ - value: shutdown
+ # This will SSH into a server an run the command 'service httpd restart'
+ # - title: Restart httpd on Server 1
+ # shell: ssh bjorn@loki.local 'echo "it works"'
+ # icon: ping
+ # timeout: 5
\ No newline at end of file
diff --git a/config/olivetin/icons/gamepad.png b/config/olivetin/icons/gamepad.png
new file mode 100644
index 0000000..6257a12
Binary files /dev/null and b/config/olivetin/icons/gamepad.png differ
diff --git a/config/olivetin/icons/mapping_start.gif b/config/olivetin/icons/mapping_start.gif
new file mode 100644
index 0000000..d16c5e7
Binary files /dev/null and b/config/olivetin/icons/mapping_start.gif differ
diff --git a/config/olivetin/icons/mapping_stop.gif b/config/olivetin/icons/mapping_stop.gif
new file mode 100644
index 0000000..a86cc47
Binary files /dev/null and b/config/olivetin/icons/mapping_stop.gif differ
diff --git a/config/olivetin/icons/nav2_start.png b/config/olivetin/icons/nav2_start.png
new file mode 100644
index 0000000..50ed677
Binary files /dev/null and b/config/olivetin/icons/nav2_start.png differ
diff --git a/config/olivetin/icons/nav2_stop.gif b/config/olivetin/icons/nav2_stop.gif
new file mode 100644
index 0000000..cd7f0c4
Binary files /dev/null and b/config/olivetin/icons/nav2_stop.gif differ
diff --git a/config/olivetin/icons/nav2_stop.png b/config/olivetin/icons/nav2_stop.png
new file mode 100644
index 0000000..4fce2b9
Binary files /dev/null and b/config/olivetin/icons/nav2_stop.png differ
diff --git a/config/olivetin/icons/qr-code.png b/config/olivetin/icons/qr-code.png
new file mode 100644
index 0000000..bc2043d
Binary files /dev/null and b/config/olivetin/icons/qr-code.png differ
diff --git a/config/olivetin/installation-id.txt b/config/olivetin/installation-id.txt
new file mode 100644
index 0000000..70dda62
--- /dev/null
+++ b/config/olivetin/installation-id.txt
@@ -0,0 +1 @@
+ba1fa920-2863-4600-994f-23559acfcab2
\ No newline at end of file
diff --git a/docker-compose.yaml b/docker-compose.yaml
index 336370b..42e7b2a 100644
--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -246,7 +246,7 @@ services:
depends_on:
- foxglove_bridge
volumes:
- - ./foxglove/default.json:/foxglove/default-layout.json
+ - ./config/foxglove/default.json:/foxglove/default-layout.json
# USB Camera Stream
cam:
diff --git a/docker-compose.yaml.bak b/docker-compose.yaml.bak
deleted file mode 100644
index 2a9c58b..0000000
--- a/docker-compose.yaml.bak
+++ /dev/null
@@ -1,460 +0,0 @@
-version: "3.9"
-
-# First network configuration. Change this to the network interface you want to use primarily. (Better configuration for multiple Network interfaces needed).
-networks:
- rmp:
- driver: macvlan
- driver_opts:
- parent: eno1 # robot network interface
- ipam:
- config:
- - subnet: 192.168.0.0/24
- gateway: 192.168.0.1
- ip_range: 192.168.0.200/25
- aux_addresses:
- net-address: 192.168.0.100 #? what is this for --> to exclude addresses from buing used.
-
-services:
- # Base image containing dependencies.
- base:
- image: ghcr.io/bjoernellens1/ros2_rmp/rmp:base
- build:
- context: .
- dockerfile: docker/Dockerfile
- tags:
- - ghcr.io/bjoernellens1/ros2_rmp/rmp:base
- args:
- ROS_DISTRO: humble
- target: base
- x-bake:
- platforms:
- - linux/arm64
- - linux/amd64
-
- # Interactive shell
- stdin_open: true
- tty: true
- # Networking and IPC for ROS 2
- #network_mode: host
- ipc: host
- # Needed to display graphical applications
- #privileged: true
- environment:
- # Allows graphical programs in the container.
- - DISPLAY=${DISPLAY}
- - QT_X11_NO_MITSHM=1
- - NVIDIA_DRIVER_CAPABILITIES=all
- volumes:
- # Allows graphical programs in the container.
- - /tmp/.X11-unix:/tmp/.X11-unix:rw
- - ${XAUTHORITY:-$HOME/.Xauthority}:/root/.Xauthority
-
- networks: # not using bridging anymore, instead try using all services on macvlan? let's see... shoudl word for now. Bridging does definitely not work because multicast is not supported here.
- rmp:
- #ipv4_address: 192.168.0.101 #actually don't need to set ips. they are set automatically by docker-compose. SHould be inherited by all child services.
-
- # Overlay image containing the project specific source code.
- overlay:
- extends: base
- image: ghcr.io/bjoernellens1/ros2_rmp/rmp:overlay
- build:
- context: .
- dockerfile: docker/Dockerfile
- tags:
- - ghcr.io/bjoernellens1/ros2_rmp/rmp:overlay
- target: overlay
- x-bake:
- platforms:
- - linux/arm64
- - linux/amd64
- volumes:
- - .:/repo
- command: >
- /bin/bash
-
- # Additional dependencies for GUI applications
- guis:
- extends: overlay
- image: ghcr.io/bjoernellens1/ros2_rmp/rmp:guis
- build:
- context: .
- dockerfile: docker/Dockerfile
- tags:
- - ghcr.io/bjoernellens1/ros2_rmp/rmp:guis
- target: guis
- x-bake:
- platforms:
- - linux/arm64
- - linux/amd64
- #entrypoint: /bin/bash
- command: >
- /bin/bash
-
- # Robot State Publisher
- rsp:
- extends: overlay
- command: >
- ros2 launch cps_rmp220_support rsp.launch.py
- stdin_open: true
- tty: true
- # Networking and IPC for ROS 2
- #network_mode: host
- ipc: host
- environment:
- - ROS_DOMAIN_ID=5
- - RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
-
- # Controller
- controller:
- extends: base
- command: >
- ros2 run segwayrmp SmartCar --ros-args -r cmd_vel:=cmd_vel_out -p serial_full_name:=/dev/segway
- devices:
- - /dev/segway:/dev/segway
- - /dev/ttyUSB0:/dev/ttyUSB0
- # Interactive shell
- stdin_open: true
- tty: true
- # Networking and IPC for ROS 2
- #network_mode: host
- ipc: host
- # Needed to display graphical applications
- privileged: false
- # depends_on:
- # - robot_state_publisher
- environment:
- - ROS_DOMAIN_ID=5
- - RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
-
- # teleop
- teleop:
- extends: base
- depends_on:
- - controller
- command: >
- ros2 launch rmp220_teleop robot_joystick.launch.py
- devices:
- - /dev/input/js0:/dev/input/js0
- # Interactive shell
- stdin_open: true
- tty: true
- # Networking and IPC for ROS 2
- #network_mode: host
- ipc: host
- # Needed to display graphical applications
- privileged: true
- environment:
- - ROS_DOMAIN_ID=5
- - RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
-
- # lidar
- lidar:
- extends: overlay
- command: >
- ros2 launch cps_rmp220_support robot_lidar.launch.py serial_port:=/dev/rplidarA1
- stdin_open: true
- tty: true
- # Networking and IPC for ROS 2
- #network_mode: host
- ipc: host
- # depends_on:
- # - robot_state_publisher
- environment:
- - ROS_DOMAIN_ID=5
- - RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
- devices:
- - /dev/rplidarA1:/dev/rplidarA1 #udevrules needed for this to work:
-# SUBSYSTEM=="tty", ATTRS{serial}=="0001", SYMLINK+="segway"
-# SUBSYSTEM=="tty", ATTRS{serial}=="3453995662b3af4f81f4a69eba5f3f29", SYMLINK+="rplidarA1"
-
-
- # localiaztion by ekf node
- ekf:
- extends: overlay
- depends_on:
- - controller
- - rsp
- command: >
- ros2 launch cps_rmp220_support robot_localization.launch.py
- # Interactive shell
- stdin_open: true
- tty: true
- # Networking and IPC for ROS 2
- #network_mode: host
- ipc: host
- environment:
- - ROS_DOMAIN_ID=5
- - RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
-
- # mapping
- mapping:
- extends: overlay
- depends_on:
- - ekf
- - rsp
- - lidar
- command: >
- ros2 launch cps_rmp220_support robot_mapping.launch.py
- # Interactive shell
- stdin_open: true
- tty: true
- # Networking and IPC for ROS 2
- #network_mode: host
- ipc: host
- environment:
- - ROS_DOMAIN_ID=5
- - RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
-
- # slam-toolbox-localization
- localization:
- extends: overlay
- depends_on:
- - ekf
- - rsp
- - lidar
- command: >
- ros2 launch cps_rmp220_support robot_mapping_localization.launch.py map_file_name:=/repo/maps/map.yaml
- # Interactive shell
- stdin_open: true
- tty: true
- # Networking and IPC for ROS 2
- #network_mode: host
- ipc: host
- environment:
- - ROS_DOMAIN_ID=5
- - RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
-
- # amcl_localization
- amcl:
- extends: overlay
- depends_on:
- - ekf
- - rsp
- - lidar
- command: >
- ros2 launch cps_rmp220_support robot_amcl.launch.py map:=/repo/maps/map.yaml
- # Interactive shell
- stdin_open: true
- tty: true
- # Networking and IPC for ROS 2
- #network_mode: host
- ipc: host
- environment:
- - ROS_DOMAIN_ID=5
- - RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
-
- # navigation
- navigation:
- extends: overlay
- depends_on:
- - controller
- - teleop
- - rsp
- - lidar
- - ekf
- - oakd
- # command: >
- # ros2 launch cps_rmp220_support robot_navigation.launch.py
- # map_subscribe_transient_local:=true
- command: >
- ros2 launch nav2_bringup bringup_launch.py slam:=True map:=/repo/maps/map_current.sav.yaml use_sim_time:=False use_composition:=True params_file:=/overlay_ws/src/cps_rmp220_support/config/nav2_params.yaml
- stdin_open: true
- tty: true
- # Networking and IPC for ROS 2
- #network_mode: host
- ipc: host
- environment:
- - ROS_DOMAIN_ID=5
- - RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
-
- # bash
- bash:
- extends: overlay
- command: >
- /bin/bash
- stdin_open: true
- tty: true
- # Networking and IPC for ROS 2
- #network_mode: host
- ipc: host
- environment:
- - ROS_DOMAIN_ID=5
- - RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
-
- # rviz2
- rviz2:
- #extends: guis
- image: ghcr.io/bjoernellens1/ros2_rmp/rmp:guis
- # command: >
- # ros2 launch cps_rmp220_support robot_rviz2.launch.py
- command: >
- ros2 launch cps_rmp220_support rviz.launch.py
- # Interactive shell
- stdin_open: true
- tty: true
- # Networking and IPC for ROS 2
- network_mode: host
- ipc: host
- # Needed to display graphical applications
- privileged: true
- environment:
- # Allows graphical programs in the container.
- - DISPLAY=${DISPLAY}
- - QT_X11_NO_MITSHM=1
- - NVIDIA_DRIVER_CAPABILITIES=all
- - ROS_DOMAIN_ID=5
- - RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
- volumes:
- # Allows graphical programs in the container.
- - /tmp/.X11-unix:/tmp/.X11-unix:rw
- - ${XAUTHORITY:-$HOME/.Xauthority}:/root/.Xauthority
-
- # Foxglove Studio Bridge
- foxglove_bridge:
- extends: overlay
- command: >
- ros2 launch foxglove_bridge foxglove_bridge_launch.xml port:=8765
- stdin_open: true
- tty: true
- # Networking and IPC for ROS 2
- #network_mode: host
- ipc: host
- environment:
- - ROS_DOMAIN_ID=5
- - RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
- networks: # not using bridging anymore, instead try using all services on macvlan? let's see... shoudl word for now. Bridging does definitely not work because multicast is not supported here.
- rmp:
- ipv4_address: 192.168.0.201 #actually don't need to set ips. they are set automatically by docker-compose. SHould be inherited by all child services.
-
-
- # Foxglove Studio Webserver
- foxglove_webserver:
- image: ghcr.io/foxglove/studio:latest
- stdin_open: true
- tty: true
- # Networking
- network_mode: bridge
- ports:
- - 8080:8080
- depends_on:
- - foxglove_bridge
- volumes:
- - ./foxglove/default.json:/foxglove/default-layout.json
-
- # USB Camera Stream
- cam:
- extends: overlay
- command: >
- ros2 run ros2_cam_openCV cam_node
- stdin_open: true
- tty: true
- # Networking and IPC for ROS 2
- #network_mode: host
- ipc: host
- environment:
- - ROS_DOMAIN_ID=5
- - RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
- devices:
- - /dev/video0:/dev/video0
-
-
- # ROS2 Frontier exploration
- explorer:
- extends: overlay
- depends_on:
- - controller
- - teleop
- - rsp
- - lidar
- - ekf
- - navigation
- command: >
- ros2 launch cps_rmp220_support robot_exploration.launch.py
- stdin_open: true
- tty: true
- # Networking and IPC for ROS 2
- #network_mode: host
- ipc: host
- environment:
- - ROS_DOMAIN_ID=5
- - RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
-
- ### Images for ROS1 Interactions
- #ROS1 Bridge
- ros1bridge:
- image: ghcr.io/bjoernellens1/ros2_rmp/ros1bridge
- command: >
- ros2 run ros1_bridge dynamic_bridge --bridge-all-2to1-topics
- build:
- context: .
- dockerfile: docker/Dockerfile
- tags:
- - ghcr.io/bjoernellens1/ros2_rmp/ros1bridge
- args:
- ROS_DISTRO: humble
- target: bridge
- x-bake:
- platforms:
- #- linux/arm64
- - linux/amd64
- # Networking and IPC for ROS 2
- #network_mode: host
- ipc: host
- environment:
- - ROS_DOMAIN_ID=5
- - RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
- - ROS_MASTER_URI=http://localhost:11311 # is configured to run roscore on the robot but could change to local ros1 machine here
-
- #ROS1 roscore
- roscore:
- command: >
- roscore
- extends: ros1bridge
- #network_mode: host
- ipc: host
- environment:
- - ROS_DOMAIN_ID=5
- - RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
- - ROS_MASTER_URI=http://localhost:11311 # is configured to run roscore on the robot but could change to local ros1 machine here
-
-
- # ROS2 oak-d-lite camera
- oakd:
- extends: overlay
- command: >
- ros2 launch depthai_examples stereo.launch.py
- stdin_open: true
- tty: true
- # Networking and IPC for ROS 2
- #network_mode: host
- ipc: host
- environment:
- - ROS_DOMAIN_ID=5
- - RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
- #privileged: true
- #devices:
- #- /dev/oakd-lite:/dev/oakd-lite # need corresponding udevrules for this to work:
-# SUBSYSTEM=="usb", ATTRS{idVendor}=="03e7", MODE="0666", SYMLINK+="oakd-lite"
- #- /dev/:/dev/
- device_cgroup_rules:
- - 'c 189:* rmw'
- volumes:
- - /dev/bus/usb:/dev/bus/usb
-
-
- # for testing the oak-d-lite camera -> works now with cgroup rules
- depthai:
- image: luxonis/depthai:latest
- command: >
- python3 /depthai/depthai_demo.py
- stdin_open: true
- tty: true
- device_cgroup_rules:
- - 'c 189:* rmw'
- volumes:
- - /dev/bus/usb:/dev/bus/usb
- environment:
- - DISPLAY=${DISPLAY}
- - QT_X11_NO_MITSHM=1
- - NVIDIA_DRIVER_CAPABILITIES=all
-
\ No newline at end of file
diff --git a/docs/loki_overview.odg b/docs/loki_overview.odg
new file mode 100644
index 0000000..99164e7
Binary files /dev/null and b/docs/loki_overview.odg differ