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 @@ +blueprint \ 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

+
+ + + + + +
+

Connect to Wi-Fi:

+ + +
+ + + + + + + + + +
SSID:cps-loki
Password: cps-loki
+
+
+ +
+ + Check us out! +
+ + + + + + \ 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 @@ +safety-glasses \ 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 @@ +wrench \ 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