2. Overview of the Software System
2. Overview of the Software System
Section titled “2. Overview of the Software System”2.1 Basic Startup Mode
Section titled “2.1 Basic Startup Mode”The robot is equipped with an x86_64 architecture industrial PC and an arm64 architecture AGX Jetson Orin industrial PC, referred to as x86 and orin, respectively. Both are installed with Ubuntu 22.04 and use systemd as the system service manager. Both are configured with agibot_em.service as the entry point for the Agibot software system. This service starts automatically on boot and launches the EM (process startup management) and SM (process status management) modules. The EM and SM then work together to start the remaining module processes. The SM manages the startup and shutdown states of the process list under different system modes (to avoid issues with shared memory resource anomalies caused by process start and stop, since version 1.3, the system mode switching no longer turns processes on and off but instead calls the activate and deactivate interfaces of the processes, which remain active).
The configuration file paths for EM and SM are /agibot/software/v0/entry/bin/cfg/run_agibot.yaml (for x86 & orin) and /agibot/software/v0/entry/bin/cfg/sm.yaml (for orin), respectively. The former lists the default processes to be started, while the latter lists which functional groups of processes are enabled under each system mode.
2.2 Module Function Overview
Section titled “2.2 Module Function Overview”Some modules exist on both orin and X86, with a suffix of 1 for orin and 0 for X86.
| Module Nature | Host Computer | Name | Description/Function | |
|---|---|---|---|---|
| SoC External Devices | AimMaster | Client Software | Used to operate and control the basic functions of the robot | |
| OMP | Agibot Cloud Platform | Responsible for collecting and reporting endpoint-side telemetry data | ||
| VR | Virtual Reality Device | Used for remote operation of the robot | ||
| MCU | Microcontroller | Controls the robot’s motors, receives motor and IMU information, communicates with HAL Ethercat to receive control commands, and uploads motor and IMU information | ||
| Public Services Basic Services | ORIN | MQTT broker (mosquitto) | MQTT Gateway | An MQTT gateway node that interfaces with AimMaster and onboard software |
| data_exporter | Log Export Function | Provides batch and time-segmented log export features | ||
| ORIN & X86 | iox_roudi | iceoryx Shared Memory Central Node | Manages the central scheduling of iceoryx communication and provides storage locations for data | |
| setting | Settings Module | Provides basic settings for the robot’s industrial PC, such as Wi-Fi, Bluetooth, etc. | ||
| recordbag | Bag Recording | Used to continuously record bag files | ||
| reboot | Reboot Command | Reboots the system when called by SM | ||
| poweroff | Shutdown Command | Shuts down the system when called by SM | ||
| Management Modules | ORIN | SM | System State Management Module | Manages system state switching and process list control |
| Function Module | X86 | sota_ota ota_gateway ota_master | OTA Related Function Module | Responsible for downloading OTA packages and executing the OTA process |
| hal_ethercat | Hardware Abstraction Layer Module | Responsible for EtherCAT communication with the MCU, transmitting hardware status information and control instructions | ||
| mc | Motion Control Module | Responsible for the overall motion control of the robot, issuing motion control commands | ||
| motion_streamer | Motion Streamer Module | Specifically used for remote operation, accepting VR motion capture data and mapping it to the robot’s actions | ||
| rc | Remote Control Module | Provides an interface for AimMaster to call basic functions and status of the robot, and records relevant information to the log | ||
| motion_player | Motion Playback Module | Responsible for calculating, mapping, and playing specified motion files | ||
| tf | Coordinate Transformation Module | Provides coordinate transformation services | ||
| fota_slave | Firmware Upgrade Module | Responsible for FOTA upgrade functionality | ||
| health_monitor | Health Monitoring Module | Monitors the health of all business modules and underlying hardware | ||
| legged_odometry | Perception and Localization Module | Responsible for reading the joint angles and IMU data of each leg to obtain the pose in the robot’s coordinate system, and sending it to the navigation or control module | ||
| open_long_server | Long Connection Process Module | Maintains a 24/7 connection channel, allowing external devices to remotely control the robot, issue real-time actions, or pull logs | ||
| ORIN | hal_audio | Audio Playback Module | Provides atomic audio playback capabilities for the agent to call | |
| agent | Voice Agent Module | Executes large language models, cloud interaction logic, and issues language, motion, and expression commands | ||
| task_engine | Task Management Module | Responsible for executing tasks created by AimMaster, etc. | ||
| pnc | Navigation Planning Module | Handles navigation path planning | ||
| slam agivslam | Mapping and Localization Module | Responsible for mapping, localization, and related functions | ||
| mm | Map Management Module | Manages map data loading and parsing, integrates and updates constructed maps | ||
| perception perception_object perception_qr | Perception Module | Collects and processes navigation-related sensor information to provide to the pnc and other operation modules | ||
| hal_dcw2 hal_d415 hal_lidar hal_xinying(T3) tz_camera(P1) | Sensor Driver Module | Loads drivers for various cameras and publishes raw image frames via ros2 topics | ||
| gateway | External Gateway Communication | Forwards external requests to internal modules | ||
| data_proxy | Data Transfer Module | Packs and forwards logs, status, video streams, and files from the robot to the cloud, upper computer, or debugging tools; also distributes incoming upgrade packages, action files, and configuration commands to the corresponding modules. | ||
| colistener coencoder cobridge | Data Loop-Related | Manages data loops between the robot and the cloud, etc. | ||
| embodied_agent | Embodied Operation Scheduling Module | Acts as the intelligent main controller of the robot, responsible for understanding, reasoning, and performing specific tasks assigned by the upper layer. | ||
| manipulator | Embodied Operation Execution Module | Provides low-level capabilities such as grasping and dispatching | ||
| skillpilot | Skill Scheduling Module | Manages, arbitrates, and schedules the robot’s basic skills | ||
| resource_manager | Resource Management Module | Manages on-board resources such as actions, expressions, and broadcast files uniformly |
2.2.1 System Mode
Section titled “2.2.1 System Mode”The modules activated and started in each system mode are different, as shown below (excerpt from sm.yaml).
# System status system_modes: "Startup": next_mode_list: [ "Ready", "OTA", "Poweroff" ] active_FG_list: [ "System", "HAL", "EStop", "Manager", "RC", "MoCap", "Gateway", "Perception", "OTA" ] action_list: - [ DIFF ] - [ activate recordbag0 ] - [ activate recordbag1 ] - [ activate tz_camera ] - [ activate hal_d415 ]
"Poweroff": next_mode_list: [] active_FG_list: [] action_list: - [ open Poweroff ]
"Reboot": next_mode_list: [] active_FG_list: [] action_list: - [ open Reboot ]
# The system's ready state, which starts the business management module and HAL "Ready": next_mode_list: [ "Manual", "EStop", "Poweroff" ] active_FG_list: [ "System", "HAL", "EStop", "Manager", "SLAM", "RC", "MoCap", "Gateway", "Perception", "Motion", "OTA" ] action_list: - [ DIFF ] - [ activate recordbag0 ] - [ activate recordbag1 ] - [ activate tz_camera ] - [ activate hal_d415 ] - [ activate agent ] - [ activate pnc ] - [ activate mc ] - [ activate slam ] - [ activate perception ] - [ deactivate rc ] - [ deactivate task_engine TaskMaster cancel ] - [ activate motion_player ] # post_process: # - level: 34 # action_list: [ [ forbid Manual ] ]
# OTA state, which starts the OTA functional group to complete OTA-related functions "OTA": next_mode_list: [ "Reboot", "Ready", "Poweroff" ] active_FG_list: [ "System", "HAL", "Manager", "SLAM", "RC", "MoCap", "Gateway","Perception", "Motion", "OTA" ] action_list: - [ DIFF ] - [ activate recordbag0 ] - [ activate recordbag1 ] - [ activate tz_camera ] - [ activate hal_d415 ] - [ deactivate agent ] - [ deactivate pnc ] - [ deactivate mc ] - [ deactivate slam ] - [ deactivate perception ] - [ deactivate rc ] - [ deactivate task_engine TaskMaster cancel ] - [ deactivate motion_player ]
# Manual state, which starts the RC and MC functional groups "Manual": next_mode_list: [ "OTA", "Auto", "Reset", "EStop", "Calibration", "Poweroff", "MotionStream", "DataCollection", "FreeExploration", "Mapping", "Manipulator" ] active_FG_list: [ "System", "HAL", "EStop", "Manager", "SLAM", "RC", "MoCap", "Gateway", "Perception", "Motion", "OTA" ] action_list: - [ DIFF ] - [ activate recordbag0 ] - [ activate recordbag1 ] - [ activate tz_camera ] - [ activate hal_d415 ] - [ activate agent ] - [ activate pnc ] - [ activate mc ] - [ activate slam ] - [ activate perception ] - [ activate rc ] - [ deactivate task_engine TaskMaster cancel ] - [ activate motion_player ] child_modes: - mode_name: "Safety" # State entered by calling the enable script under tools extra_next_modes: [ "OTA", "Reset" ] action_list: - [ deactivate rc ] - [ close Motion ] - [ close EStop ] post_process: - level: 47 action_list: [ [ fallback mc ] ]
# Mapping state "Mapping": next_mode_list: [ "Manual" ] active_FG_list: [ "System", "HAL", "EStop", "Manager", "SLAM", "RC", "MoCap", "Gateway", "Perception", "Motion", "OTA" ] action_list: - [ DIFF ] - [ activate recordbag0 ] - [ activate recordbag1 ] - [ activate tz_camera ] - [ activate hal_d415 ] - [ activate agent ] - [ activate pnc ] - [ activate mc ] - [ activate slam ] - [ deactivate perception ] - [ activate rc ] - [ deactivate task_engine TaskMaster cancel ] - [ activate motion_player ]
# Auto state, which starts the task engine and all business functional groups "Auto": next_mode_list: [ "Manual", "EStop", "Poweroff", "FreeExploration" ]``` active_FG_list: [ "System", "HAL", "EStop", "Manager", "SLAM", "RC", "MoCap", "Gateway", "Perception", "Motion", "OTA" ] action_list: - [ DIFF ] - [ activate recordbag0 ] - [ activate recordbag1 ] - [ activate tz_camera ] - [ activate hal_d415 ] - [ activate agent ] - [ activate pnc ] - [ activate mc ] - [ activate slam ] - [ activate perception ] - [ deactivate rc ] - [ activate task_engine ] - [ activate motion_player ] child_modes: - mode_name: "Safety" extra_next_modes: [ "OTA", "Reset" ] action_list: - [ deactivate task_engine ] - [ close Motion ] - [ close EStop ] # post_process: # # - level: 47 # # action_list: [ [ MAID ] ] # # - level: 43 # # action_list: [ [ fallback motion_player ], [ fallback task_engine XXModule B ], [ Move Manual ] ] # # - level: 40 # # action_list: [ [ MAID ] ] # - level: 37 # action_list: [ [ fallback task_engine ], [ move Manual ] ] # - level: 34 # action_list: [ [ fallback task_engine, fallback mc ] ] # # - level: 31 # # action_list: [ [ MAID ] ]
# Embodied Operation Mode "Manipulator": next_mode_list: [ "OTA", "Reset", "EStop", "Poweroff", "FreeExploration", "Manual" ] active_FG_list: [ "System", "HAL", "EStop", "Manager", "SLAM", "RC", "MoCap", "Gateway", "Perception", "Motion", "OTA" ] action_list: - [ DIFF ] - [ activate recordbag0 ] - [ activate recordbag1 ] - [ activate tz_camera ] - [ activate hal_d415 ] - [ activate agent ] - [ activate pnc ] - [ activate mc ] - [ activate slam ] - [ activate perception ] - [ activate rc ] - [ deactivate task_engine TaskMaster cancel ] - [ deactivate motion_player ]
# Free Exploration Mode "FreeExploration": next_mode_list: [ "Manual", "EStop", "Poweroff", "Auto" ] active_FG_list: [ "System", "HAL", "EStop", "Manager", "SLAM", "RC", "MoCap", "Gateway", "Perception", "Motion", "OTA" ] action_list: - [ DIFF ] - [ activate recordbag0 ] - [ activate recordbag1 ] - [ activate tz_camera ] - [ activate hal_d415 ] - [ activate agent ] - [ activate pnc ] - [ activate mc ] - [ activate slam ] - [ activate perception ] - [ deactivate rc ] - [ activate task_engine ] - [ activate motion_player ] child_modes: - mode_name: "Safety" extra_next_modes: [ "OTA", "Reset" ] action_list: - [ deactivate task_engine ] - [ close Motion ] - [ close EStop ]
# Reset State, used for restoring factory settings "Reset": next_mode_list: [ "Reboot", "Poweroff" ] active_FG_list: [ "System", "OTA", "Gateway" ] action_list: - [ DIFF ]
# Emergency Stop State, used for emergency stop "EStop": next_mode_list: [ "Ready", "OTA", "Poweroff" ] active_FG_list: [ "System", "HAL", "EStop", "Manager", "SLAM", "RC", "MoCap", "Gateway", "Perception", "Motion", "OTA" ] action_list: - [ DIFF ] - [ activate recordbag0 ] - [ activate recordbag1 ] - [ activate tz_camera ] - [ activate hal_d415 ] - [ activate agent ] - [ activate pnc ] - [ deactivate mc ] - [ activate slam ] - [ activate perception ] - [ deactivate rc ] - [ deactivate task_engine TaskMaster cancel ] - [ activate motion_player ]
# Safety State, used for safety state # "Safe": # next_mode_list: [ "Manual", "EStop", "Poweroff" ] # active_FG_list: [ "System", "HAL", "EStop", "Manager", "SLAM", "RC", "MoCap", "Gateway", "Perception", "Motion" ] # action_list: # - [ DIFF ] # - [ deactivate mc, deactivate rc ]
# Real-time Remote Operation State, used for real-time remote operation```yaml "MotionStream": next_mode_list: [ "Manual", "EStop", "Poweroff", "RemoteMotionStream", "DataCollection" ] active_FG_list: [ "System", "HAL", "EStop", "Manager", "SLAM", "RC", "MoStream", "Gateway", "Motion", "Perception", "OTA" ] action_list: - [ DIFF ] - [ activate recordbag0 ] - [ activate recordbag1 ] - [ activate tz_camera ] - [ activate hal_d415 ] - [ activate agent ] - [ activate pnc ] - [ deactivate mc ] - [ activate slam ] - [ activate perception ] - [ activate rc ] - [ deactivate task_engine TaskMaster cancel ]
"RemoteMotionStream": next_mode_list: [ "Manual", "EStop", "Poweroff", "MotionStream" ] active_FG_list: [ "System", "HAL", "EStop", "Manager", "SLAM", "RC", "MoStream", "Gateway", "Motion", "Perception", "OTA", "RTC" ] action_list: - [ deactivate tz_camera ] - [ deactivate hal_d415 ] - [ activate recordbag0 ] - [ activate recordbag1 ] - [ DIFF ] - [ activate agent ] - [ activate pnc ] - [ deactivate mc ] - [ activate slam ] - [ activate perception ] - [ activate rc ] - [ deactivate task_engine TaskMaster cancel ]
# Calibration state, used for calibration, enter upon client request for calibration "Calibration": next_mode_list: [ "Ready" ] active_FG_list: [ "System", "HAL", "EStop", "Manager", "SLAM", "RC", "Gateway", "Motion", "Perception", "OTA", "Calibration" ] action_list: - [ DIFF ] - [ activate recordbag0 ] - [ activate recordbag1 ] - [ activate tz_camera ] - [ activate hal_d415 d415 Calibration ] - [ deactivate agent ] - [ deactivate pnc ] - [ deactivate mc ] - [ deactivate slam ] - [ deactivate perception ] - [ deactivate rc ] - [ deactivate task_engine TaskMaster cancel ] # post_process: # # - level: 43 # # action_list: [ [ fallback calibration ] ] # # - level: 37 # # action_list: [ [ fallback calibration ] ] # - level: 34 # action_list: [ [ fallback task_engine, fallback mc ] ]
"DataCollection": next_mode_list: [ "Manual", "EStop", "Poweroff", "MotionStream" ] active_FG_list: [ "System", "HAL", "EStop", "Manager", "SLAM", "RC", "MoStream", "Gateway", "Motion", "Perception", "OTA", "Data_Collector" ] action_list: - [ DIFF ] - [ deactivate recordbag0 ] - [ deactivate recordbag1 ] - [ activate tz_camera tzcamera DataCollection ] - [ activate hal_d415 d415 DataCollection ] - [ activate agent ] - [ activate pnc ] - [ deactivate mc ] - [ activate slam ] - [ deactivate perception ] - [ activate rc ] - [ deactivate task_engine TaskMaster cancel ]2.2.2 Module Disabling Method (Caution)
Section titled “2.2.2 Module Disabling Method (Caution)”Due to the numerous features, ORIN now has a high load. If you need to replace certain functional modules through secondary development, you must configure the system so that the module does not start.
Modules are managed in two ways, depending on whether they are controlled by run_agibot.yaml (x86 & orin) or sm.yaml (orin). Modules managed by the former will start by default at startup and remain resident, unaffected by sm management. Modules managed by the latter will switch between different system modes.
- If you need to disable a module managed by
run_agibot.yaml(i.e., part ofdefault_apps), simply remove it fromdefault_apps. - If you need to disable a module managed by
sm, add a line withdeactivatein the corresponding system mode to specify the module to be disabled.
Taking the motion_play module as an example, follow the steps below to disable it. First, remove the motion_play module from the default_apps list in run_agibot.yaml (x86):
@@ -20,7 +20,6 @@ process_manager: "iox_roudi", "hal_ethercat", "recordbag0",- "motion_player", "ota_gateway", "ota_master", "fota_slave",Then, remove motion_player from the group in SystemManagerModule within sm.yaml (orin), update the MoCap configuration to empty, and remove the activate / deactivate operations for motion_player in all states.
@@ -14,7 +14,7 @@ SystemManagerModule:- group: [ota_master, motion_player, motion_streamer, sota_slave0, mc, tf, dr, rc, hal_ethercat, poweroff0, reboot0, setting0, recordbag0, data_collector, health_monitor0]+ group: [ota_master, motion_streamer, sota_slave0, mc, tf, dr, rc, hal_ethercat, poweroff0, reboot0, setting0, recordbag0, data_collector, health_monitor0] url: "http://${AGIBOT_NEIGHBOR_HOST_IP}:50081"@@ -40,7 +40,7 @@ SystemManagerModule: "RC": [ "rc" ] "MoCap":- [ "motion_player" ]+ [] "MoStream": [ "motion_streamer" ] "Ready":@@ -100,7 +100,6 @@ SystemManagerModule: - [ activate perception ] - [ deactivate rc ] - [ deactivate task_engine TaskMaster cancel ]- - [ activate motion_player ] "OTA":@@ -122,7 +121,6 @@ SystemManagerModule: - [ deactivate perception ] - [ deactivate rc ] - [ deactivate task_engine TaskMaster cancel ]- - [ deactivate motion_player] "Manual":@@ -140,7 +138,6 @@ SystemManagerModule: - [ activate perception ] - [ activate rc ] - [ deactivate task_engine TaskMaster cancel ]- - [ activate motion_player ] "Mapping":@@ -169,7 +166,6 @@ SystemManagerModule: - [ deactivate perception ] - [ activate rc ] - [ deactivate task_engine TaskMaster cancel ]- - [ activate motion_player ] "Auto":@@ -188,7 +184,6 @@ SystemManagerModule: - [ activate perception ] - [ deactivate rc ] - [ activate task_engine ]- - [ activate motion_player ] "Manipulator":@@ -227,7 +222,6 @@ SystemManagerModule: - [ activate perception ] - [ activate rc ] - [ deactivate task_engine TaskMaster cancel ]- - [ deactivate motion_player ] "FreeExploration":@@ -246,7 +240,6 @@ SystemManagerModule: - [ activate perception ] - [ deactivate rc ] - [ activate task_engine ]- - [ activate motion_player ] "EStop":@@ -279,7 +272,6 @@ SystemManagerModule: - [ activate perception ] - [ deactivate rc ] - [ deactivate task_engine TaskMaster cancel ]- - [ activate motion_player ]2.3 Onboard Disk Directories
Section titled “2.3 Onboard Disk Directories”orin

X86
