More info: Saving states to file

How-to

When creating a mujoco handle, one can pass values to the arguments save_data and save_folder, for example:


mujoco_id = "myapp"
robot_segment_id = "robot"
control = pam_mujoco.MujocoRobot.PRESSURE_CONTROL
robot = pam_mujoco.MujocoRobot(robot_segment_id,
                              control=control)
graphics=True
accelerated_time=False
save_data = True      # !
save_folder = "/tmp/" # !
handle = pam_mujoco.MujocoHandle(mujoco_id,
                                 robot1=robot,
                                 graphics=graphics,
                                 accelerated_time=accelerated_time,
				 save_data=save_data,
				 save_folder=save_folder)

Consequently, the related instance of pam_mujoco will run a driver which dumps the robot state in a csv file located in the /tmp folder. The name of the file will also contain the mujoco_id and the time of its creation.

To see an example of the parsing for such a file, see /pam_mujoco/bin/pam_mujoco_compare.py

Limitations

If two robots are running, only the state of one will be saved in the file.

Under the hood

Setting the save_data argument to True will result in an instance of MujocoStatePrinterController being added to pam_mujoco. At each mujoco iteration this controller reads the values of the current mujoco “mjModel” and write the corresponding values to the file. The time stamp correspond to the computer time stamp (not the mujoco simulation time stamp). See /pam_mujoco/include/pam_mujoco/mujoco_state.hpp.