Robot Configurations

Robot Configurations#

Robots are entirely defined as instances of configurations within Isaac Lab. If you examine source/isaaclab_assets/isaaclab_assets/robots, you will see a number of files, each of which contains configurations for the robot in question. The purpose of these individual files is to better define scope for all the different robots, but there is nothing preventing you from adding your own to your project or even to the isaaclab repository! For example, consider the following configuration for the Dofbot

import isaaclab.sim as sim_utils
from isaaclab.actuators import ImplicitActuatorCfg
from isaaclab.assets.articulation import ArticulationCfg
from isaaclab.utils.assets import ISAAC_NUCLEUS_DIR

DOFBOT_CONFIG = ArticulationCfg(
    spawn=sim_utils.UsdFileCfg(
        usd_path=f"{ISAAC_NUCLEUS_DIR}/Robots/Dofbot/dofbot.usd",
        rigid_props=sim_utils.RigidBodyPropertiesCfg(
            disable_gravity=False,
            max_depenetration_velocity=5.0,
        ),
        articulation_props=sim_utils.ArticulationRootPropertiesCfg(
            enabled_self_collisions=True, solver_position_iteration_count=8, solver_velocity_iteration_count=0
        ),
    ),
    init_state=ArticulationCfg.InitialStateCfg(
        joint_pos={
            "joint1": 0.0,
            "joint2": 0.0,
            "joint3": 0.0,
            "joint4": 0.0,
        },
        pos=(0.25, -0.25, 0.0),
    ),
    actuators={
        "front_joints": ImplicitActuatorCfg(
            joint_names_expr=["joint[1-2]"],
            effort_limit_sim=100.0,
            velocity_limit_sim=100.0,
            stiffness=10000.0,
            damping=100.0,
        ),
        "joint3_act": ImplicitActuatorCfg(
            joint_names_expr=["joint3"],
            effort_limit_sim=100.0,
            velocity_limit_sim=100.0,
            stiffness=10000.0,
            damping=100.0,
        ),
        "joint4_act": ImplicitActuatorCfg(
            joint_names_expr=["joint4"],
            effort_limit_sim=100.0,
            velocity_limit_sim=100.0,
            stiffness=10000.0,
            damping=100.0,
        ),
    },
)

This completely defines the dofbot! You could copy this into a .py file and import it as a module and you would be able to use the dofbot in your own lab sims. One common feature you will see in any config defining things with state is the presence of an InitialStateCfg. Remember, the configurations are what informs vectorization, and it’s the InitialStateCfg that describes the state of the joints of our robot when it gets created in each environment. The ImplicitActuatorCfg defines the joints of the robot using the default actuation model determined by the joint type. Not all joints need to be actuated, but you will get warnings if you don’t. If you aren’t planning on using those undefined joints, you can generally ignore these.