System Architecture - RoBorregos/smart-factory GitHub Wiki

System Architecture

Overview

The system architecture focused on the implementation of interactions between the factory robots and humans through the Factory Task Manager using ROS's action servers, topics, and services.

Actual state

A complete modular architecture was implemented, defining data flow, message types, contextualization, and interactions.

Agents in the Factory

Different types of agents inside the factory’s process were categorized according to their functionality:

  • Factory Task Manager (FTM): Receives tasks from static robots and delegate them to transport robots according to the type.
  • Mobile robots: Robots that can move from one place to another and transport goods
  • Static robots: Robots that perform specific tasks over materials, have input and output points.
  • Humans: Bring initial raw materials to storages

Multirobot interaction

Process execution

  1. Tasks get triggered by static robots
  2. FTM Outputs action command to transport robot
  3. Transport robot reaches the destination and tells FTM
  4. FTM sends start_process to static robot
  5. Static robot starts the process
  6. Static robot triggers output ready

Each robot resides in an individual namespace, where it interacts according to its type.

Agent Interaction type
FTM robot action servers: action servers of each individual robot connected to the system.
Static robots static_robot_requests: topic where i/o requests are published (ready to receive input, ready for output retrieval).
Mobile robots mobile_robot_requests: topic where mobile robots publish if they've retrieved or delivered material succesfully.

Robot state machines

All state machines were defined inside the Factory Robot's folder, inside dashgo_ws/src as action servers.

System contextualization

For contextualization the system must have information about:

Mobile robots Static robots Process list
  • string ID: states robot ID.
  • string type: states the robot type (dashgo, omron)
  • geometry_msgs/Pose base_position: initial position and orientation.
  • string ID: states robot ID.
  • geometry_msgs/Pose position: position and orientation in space.
  • geometry_msgs/Pose[] inputs: list of input poses
  • geometry_msgs/Pose[] output: list of output poses
    • Relationship graph of I/O IDs (Output point, input point, and type of transport robot to do the transport process.)

    Additional modifications and improvements

    The next steps would be integrating this simulated system to the real-world robots, including:

    • Define the communication and network system
    • Adding the corresponding actions as services and calling them through the action servers for each robot type.
    • Connecting the robots to the FTM.
    • Design and develop HRI security and privacy systems
    ⚠️ **GitHub.com Fallback** ⚠️