duckietown / book-opmanual-duckiebot

The Duckiebot operation manual
Other
1 stars 7 forks source link

Issue on page /setup/setup_boot/index.html #52

Closed abadithela closed 2 weeks ago

abadithela commented 1 year ago

I understand that each duckiebot starts its own ros master, which makes the duckiebot able to operate independently of other duckibots and of laptops/workstations.

I want to run a duckiebot with a remote ROS master running on my laptop/workstation.

That is, ideally, this documentation would be organized like this:

# Setup - Booting the Duckiebot (with ROS master running on Duckiebot)
...
# Setup - Booting the Duckiebot (with ROS master running on a remote host)
...

Based on suggestions received on slack, I tried updating the /data/autoboot/duckiebot.yaml Docker compose file like this:

version: '3.2'
services:

  portainer:
    image: portainer/portainer:linux-arm-1.24.1
    container_name: portainer
    command: ["--host=unix:///var/run/docker.sock", "--no-auth"]
    restart: always
    network_mode: host
    volumes:
      - portainer-data:/data
      # docker socket
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      ROS_MASTER_URI: http://kmws.local:11311

  dashboard:
    image: duckietown/dt-device-dashboard:daffy-${ARCH:-arm64v8}
    container_name: dashboard
    restart: unless-stopped
    network_mode: host
    environment:
      HTTP_PORT: 8080
      ROS_MASTER_URI: http://kmws.local:11311
    volumes:
      - /data:/data
      - /secrets:/secrets
      # compose volume
      - compose-data:/user-data/databases
      # avahi socket
      - /var/run/avahi-daemon/socket:/var/run/avahi-daemon/socket

  files-api:
    image: duckietown/dt-files-api:daffy-${ARCH:-arm64v8}
    container_name: files-api
    restart: always
    network_mode: host
    environment:
      ROS_MASTER_URI: http://kmws.local:11311
    volumes:
      - /data:/data
      - /secrets:/secrets
      # avahi socket
      - /var/run/avahi-daemon/socket:/var/run/avahi-daemon/socket

  code-api:
    image: duckietown/dt-code-api:daffy-${ARCH:-arm64v8}
    container_name: code-api
    restart: always
    network_mode: host
    environment:
      ROS_MASTER_URI: http://kmws.local:11311
    volumes:
      - /data:/data
      - /code:/user_code
      # docker socket
      - /var/run/docker.sock:/var/run/docker.sock
      # avahi socket
      - /var/run/avahi-daemon/socket:/var/run/avahi-daemon/socket

  device-proxy:
    image: duckietown/dt-device-proxy:daffy-${ARCH:-arm64v8}
    container_name: device-proxy
    restart: always
    network_mode: host
    environment:
      ROS_MASTER_URI: http://kmws.local:11311
    volumes:
      - /data:/data
      # avahi socket
      - /var/run/avahi-daemon/socket:/var/run/avahi-daemon/socket

  device-health:
    image: duckietown/dt-device-health:daffy-${ARCH:-arm64v8}
    container_name: device-health
    restart: always
    network_mode: host
    privileged: true
    environment:
      ROS_MASTER_URI: http://kmws.local:11311
    volumes:
      - /data:/data
      - /triggers:/triggers
      # avahi socket
      - /var/run/avahi-daemon/socket:/var/run/avahi-daemon/socket

  device-online:
    image: duckietown/dt-device-online:daffy-${ARCH:-arm64v8}
    container_name: device-online
    restart: always
    network_mode: host
    environment:
      ROS_MASTER_URI: http://kmws.local:11311
    volumes:
      - /data:/data
      - /secrets:/secrets
      # docker socket
      - /var/run/docker.sock:/var/run/docker.sock
      # avahi socket
      - /var/run/avahi-daemon/socket:/var/run/avahi-daemon/socket

  ros:
    image: duckietown/dt-ros-commons:daffy-${ARCH:-arm64v8}
    container_name: ros
    restart: unless-stopped
    network_mode: host
    environment:
      ROS_MASTER_URI: http://kmws.local:11311
    volumes:
      - /data:/data
      # avahi socket
      - /var/run/avahi-daemon/socket:/var/run/avahi-daemon/socket

  duckiebot-interface:
    image: duckietown/dt-duckiebot-interface:daffy-${ARCH:-arm64v8}
    container_name: duckiebot-interface
    restart: unless-stopped
    network_mode: host
    privileged: true
    environment:
      ROS_MASTER_URI: http://kmws.local:11311
    volumes:
      - /data:/data
      # avahi socket
      - /var/run/avahi-daemon/socket:/var/run/avahi-daemon/socket
      # nvargus socket
      - /tmp/argus_socket:/tmp/argus_socket

  car-interface:
    image: duckietown/dt-car-interface:daffy-${ARCH:-arm64v8}
    container_name: car-interface
    restart: unless-stopped
    network_mode: host
    environment:
      ROS_MASTER_URI: http://kmws.local:11311
    volumes:
      - /data:/data
      # avahi socket
      - /var/run/avahi-daemon/socket:/var/run/avahi-daemon/socket

  rosbridge-websocket:
    image: duckietown/dt-rosbridge-websocket:daffy-${ARCH:-arm64v8}
    container_name: rosbridge-websocket
    restart: unless-stopped
    network_mode: host
    environment:
      ROS_MASTER_URI: http://kmws.local:11311
    volumes:
      - /data:/data
      # avahi socket
      - /var/run/avahi-daemon/socket:/var/run/avahi-daemon/socket

volumes:
  compose-data:
  portainer-data:

Even after removing/stopping all docker containers and running dts duckiebot update on my laptop/workstation and restarting the duckiebot, adding the ROS_MASTER_URI environment variables did not have an effect:

We've tried to find how the duckiebot software stack and container stack starts; could you please elaborate more on this or point to relevant documentation? In particular, where and what sets the ROS_MASTER_URI on each container that the duckiebot starts? How does duckiebot.yaml inside /data/autoboot/ inform the Docker containers?

@afdaniele @tanij

tanij commented 2 weeks ago

Hi @abadithela,

  1. Best to open tickets on the Duckietown Stack Overflow
  2. Have you checked out the developer's manual? https://docs.duckietown.com/daffy/devmanual-software/intro.html