class_docstr: DatasetBuilder for rlu_locomotion dataset.
code: def get_features_dict(self):
      if "humanoid" in self.builder_config.name:
          walker_features = {
              "joints_vel": rlu_common.float_tensor_feature(56),
              "sensors_velocimeter": rlu_common.float_tensor_feature(3),
              "sensors_gyro": rlu_common.float_tensor_feature(3),
              "joints_pos": rlu_common.float_tensor_feature(56),
              "world_zaxis": rlu_common.float_tensor_feature(3),
              "body_height": rlu_common.float_tensor_feature(1),
              "sensors_accelerometer": rlu_common.float_tensor_feature(
                  3
              ),
              "end_effectors_pos": rlu_common.float_tensor_feature(12),
              "egocentric_camera": tfds.features.Image(
                  shape=(64, 64, 3),
                  dtype=np.uint8,
                  encoding_format="png",
              ),
          }
          action_features = tfds.features.Tensor(
              shape=(56,), dtype=np.float32
          )
      else:  # 'rodent' datasets
          walker_features = {
              "joints_pos": rlu_common.float_tensor_feature(30),
              "joints_vel": rlu_common.float_tensor_feature(30),
              "tendons_pos": rlu_common.float_tensor_feature(8),
              "tendons_vel": rlu_common.float_tensor_feature(8),
              "appendages_pos": rlu_common.float_tensor_feature(15),
              "world_zaxis": rlu_common.float_tensor_feature(3),
              "sensors_accelerometer": rlu_common.float_tensor_feature(
                  3
              ),
              "sensors_velocimeter": rlu_common.float_tensor_feature(3),
              "sensors_gyro": rlu_common.float_tensor_feature(3),
              "sensors_touch": rlu_common.float_tensor_feature(4),
              "egocentric_camera": tfds.features.Image(
                  shape=(64, 64, 3),
                  dtype=np.uint8,
                  encoding_format="png",
              ),
          }
          action_features = tfds.features.Tensor(
              shape=(38,), dtype=np.float32
          )
  
      return tfds.features.FeaturesDict(
          {
              "steps": tfds.features.Dataset(
                  {
                      "observation": {
                          "walker": walker_features,
                      },
                      "action": action_features,
                      "reward": np.float32,
                      "is_terminal": np.bool_,
                      "is_first": np.bool_,
                      "is_last": np.bool_,
                      "discount": np.float32,
                  }
              ),
              "episode_id": np.int64,
              "timestamp": np.int64,
          }
      )
  
file_path: datasets/tensorflow_datasets/rl_unplugged/rlu_locomotion/rlu_locomotion.py
imports: from __future__ import annotations
  from typing import Any, Dict, Optional
  import numpy
  from tensorflow_datasets.core.utils.lazy_imports_utils import tensorflow
  import tensorflow_datasets.public_api
  from tensorflow_datasets.rl_unplugged import rlu_common
label_desc: Use image node_id 1 for calling the RluLocomotion obj's underlying member method code with example usage: obj.get_features_dict() and returns: tfds