Code Examples#

Workflow Example#

import os
import sys

# sys.settrace

import numpy as np

np.set_printoptions(precision=4)

from br2.environment import Environment

import argparse


def main():
    # Argument Parser
    parser = argparse.ArgumentParser()
    parser.add_argument("--tag", type=str, required=True)
    args = parser.parse_args()

    # Action Configuration
    psi2Nm2 = 6895

    # Actuation Profile
    action = {"action1": 30 * psi2Nm2, "action2": 30 * psi2Nm2}

    # Prepare environment
    env = Environment(run_tag=args.tag)
    env.reset(
        rod_database_path="sample_database/sample_rod_library.json",
        assembly_config_path="sample_assembly/single_br2_v1.json",
        gravity=True
    )

    # Simulation
    status = env.run(action=action, duration=1.0, check_nan=True, check_steady_state=True)
    print(status)

    # Post Processing
    env.render_video(
        # The following parameters are optional
        x_limits=(-0.13, 0.13),  # Set bounds on x-axis
        y_limits=(-0.00, 0.5),  # Set bounds on y-axis
        z_limits=(-0.13, 0.13),  # Set bounds on z-axis
        dpi=100,  # Set the quality of the image
        vis3D=True,  # Turn on 3D visualization
        vis2D=True,  # Turn on projected (2D) visualization
        vis3D_director=False,
        vis2D_director_lastelement=False,
    )
    env.save_data()

    # Terminate
    env.close()


if __name__ == "__main__":
    main()