# TITA_ISAACGYM_DRL **Repository Path**: ddtrobot/TITA_ISAACGYM_DRL ## Basic Information - **Project Name**: TITA_ISAACGYM_DRL - **Description**: TITA Walking Reinforcement learning based on Issacgym - **Primary Language**: Unknown - **License**: BSD-3-Clause - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-16 - **Last Updated**: 2026-06-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TITA(点足)isaac_gym强化学习# **Contact**: 1692931357@qq.com --- ## Prerequisites - **Operating System**: Ubuntu 22.04 - **isaac_gym** - **legged_gym** --- ### Useful Links ### 使用教程: https://leggedrobotics.github.io/legged_gym/ ### Usage ### 1. Train: ```python legged_gym/scripts/train.py --task=tita_pointfoot_rough``` - To run on CPU add following arguments: `--sim_device=cpu`, `--rl_device=cpu` (sim on CPU and rl on GPU is possible). - To run headless (no rendering) add `--headless`. - **Important**: To improve performance, once the training starts press `v` to stop the rendering. You can then enable it later to check the progress. - The trained policy is saved in `logs//_/model_.pt`. Where `` and `` are defined in the train config. - The following command line arguments override the values set in the config files: - --task TASK: Task name. - --resume: Resume training from a checkpoint - --experiment_name EXPERIMENT_NAME: Name of the experiment to run or load. - --run_name RUN_NAME: Name of the run. - --load_run LOAD_RUN: Name of the run to load when resume=True. If -1: will load the last run. - --checkpoint CHECKPOINT: Saved model checkpoint number. If -1: will load the last checkpoint. - --num_envs NUM_ENVS: Number of environments to create. - --seed SEED: Random seed. - --max_iterations MAX_ITERATIONS: Maximum number of training iterations. 2. Play a trained policy: ```python legged_gym/scripts/play.py --task=pointfoot_rough --load_run --checkpoint ``` - By default, the loaded policy is the last model of the last run of the experiment folder. - Other runs/model iteration can be selected by setting `load_run` and `checkpoint` in the train config. 3. Export policy as an ONNX file: ```python legged_gym/scripts/export_policy_as_onnx.py --task=pointfoot_flat``` - By default, the loaded policy is the last model of the last run of the experiment folder. - Other runs/model iteration can be selected by setting `load_run` and `checkpoint` in the train config. - The exported onnx file is saved in `logs//export/policy.pt`. ### Adding a new environment ### The base environment `legged_robot` implements a rough terrain locomotion task. The corresponding cfg does not specify a robot asset (URDF/ MJCF) and has no reward scales. 1. Add a new folder to `envs/` with `'_config.py`, which inherit from an existing environment cfgs 2. If adding a new robot: - Add the corresponding assets to `resources/`. - In `cfg` set the asset path, define body names, default_joint_positions and PD gains. Specify the desired `train_cfg` and the name of the environment (python class). - In `train_cfg` set `experiment_name` and `run_name` 3. (If needed) implement your environment in .py, inherit from an existing environment, overwrite the desired functions and/or add your reward functions. 4. Register your env in `legged_gym/envs/__init__.py`. 5. Modify/Tune other parameters in your `cfg`, `cfg_train` as needed. To remove a reward set its scale to zero. Do not modify parameters of other envs! ### Troubleshooting ### 1. If you get the following error: `ImportError: libpython3.8m.so.1.0: cannot open shared object file: No such file or directory`, do: `sudo apt install libpython3.8`. It is also possible that you need to do `export LD_LIBRARY_PATH=/path/to/libpython/directory` / `export LD_LIBRARY_PATH=/path/to/conda/envs/your_env/lib`(for conda user. Replace /path/to/ to the corresponding path.). ### Known Issues ### 1. The contact forces reported by `net_contact_force_tensor` are unreliable when simulating on GPU with a triangle mesh terrain. A workaround is to use force sensors, but the force are propagated through the sensors of consecutive bodies resulting in an undesirable behaviour. However, for a legged robot it is possible to add sensors to the feet/end effector only and get the expected results. When using the force sensors make sure to exclude gravity from the reported forces with `sensor_options.enable_forward_dynamics_forces`. Example: ``` sensor_pose = gymapi.Transform() for name in feet_names: sensor_options = gymapi.ForceSensorProperties() sensor_options.enable_forward_dynamics_forces = False # for example gravity sensor_options.enable_constraint_solver_forces = True # for example contacts sensor_options.use_world_frame = True # report forces in world frame (easier to get vertical components) index = self.gym.find_asset_rigid_body_index(robot_asset, name) self.gym.create_asset_force_sensor(robot_asset, index, sensor_pose, sensor_options) (...) sensor_tensor = self.gym.acquire_force_sensor_tensor(self.sim) self.gym.refresh_force_sensor_tensor(self.sim) force_sensor_readings = gymtorch.wrap_tensor(sensor_tensor) self.sensor_forces = force_sensor_readings.view(self.num_envs, 4, 6)[..., :3] (...) self.gym.refresh_force_sensor_tensor(self.sim) contact = self.sensor_forces[:, :, 2] > 1. ``` # RobotRos2001