Code Structure#

Here we provide an overview of the codebase.

deoxys/
    InstallPackage  # A bash script that install all necessary dependencies
    CMakeLists.txt  # cmake file taht compiles the whole project.
    Makefile        # Makefile that makes cmake compilation easier.
    auto_scripts/   # Automated scripts for constantly running control loop
        auto_arm.sh
        auto_gripper.sh
    
    # Python scripts
    deoxys/
        __init__.py     # define config_root
        franka_interface/
            franka_interface.py # A file that defines the python-end franka interface
        experimental/ # Developmental features
            motion_utils.py  # Simple motor programs
        scripts/
            get_deoxys_info.py # Functions that retrieve basic information about control
        utils/ 
            io_devices/  # Standalone io devices, mainly for teleoperation
                keyboard.py
                spacemouse.py
            config_utils.py     # Utility functions for setting default configs
            log_utils.py        # Deoxys python logger
            transform_utils.py  # Replica of robosuite transform_utils.py
            yaml_config.py      # Abstraction for loading yaml configs

    # C++ implementation
    franka-interface/
        include/
            controllers/   # Header files for controller, structures omitted to avoid repetition in src
            utils/
                control_callbacks/    # Header-only files
                state_estimators/     # Header-only files
                traj_interpolators/   # Header-only files
                common_utils.h
                log_utils.h
                control_utils.h
                shared_memory.h       # Share memory class for global handler
                shared_state.h        # Shared state class that saves robot states
                zmq_utils.h
                robot_utils.h
            
        src/
            franka_control_node.cpp   # Launch arm control
            gripper_control_node.cpp  # Launch gripper control
            controllers/
                base_controller.cpp         # BaseController, a base class for all robot controller
                osc_impedance.cpp           # Operation Space Controller 
                osc_yaw_impedance.cpp       # Operation Space Controller, with only yaw rotation
                osc_position_impedance.cpp  # Operation Space Controller, with only positions
                cartesian_velocity.cpp      # Cartesian Velocity Controller
                joint_impedance.cpp         # Joint Impedance Controller
                joint_position.cpp          # Joint Positional Controller
            utils/
                common_utils.cpp 
                control_utils.cpp
                zmq_utils.cpp
                robot_utils.cpp  

    proto/  # Protobuf messages
        franka-interface/   # Franka-specific protobuf messages
            franka_controller.proto    # Where all controllers are defined for communication
            franka_robot_state.proto   # Where states are defined for communication