├── .gitignore
├── README.md
├── _config.yml
├── index.html
├── index.md
├── requirements.txt
├── rpl_environments
├── rpl_environments
│ ├── __init__.py
│ └── envs
│ │ ├── PusherEnv_database_500samples.npy
│ │ ├── __init__.py
│ │ ├── assets
│ │ ├── fetch_complex_objects
│ │ │ ├── LICENSE.md
│ │ │ ├── fetch
│ │ │ │ ├── pick_and_place.xml
│ │ │ │ ├── push.xml
│ │ │ │ ├── reach.xml
│ │ │ │ ├── robot.xml
│ │ │ │ ├── shared.xml
│ │ │ │ ├── slide.xml
│ │ │ │ ├── train_scene_hook_0.xml
│ │ │ │ ├── train_scene_hook_1.xml
│ │ │ │ ├── train_scene_hook_10.xml
│ │ │ │ ├── train_scene_hook_100.xml
│ │ │ │ ├── train_scene_hook_1000.xml
│ │ │ │ ├── train_scene_hook_1001.xml
│ │ │ │ ├── train_scene_hook_1002.xml
│ │ │ │ ├── train_scene_hook_101.xml
│ │ │ │ ├── train_scene_hook_102.xml
│ │ │ │ ├── train_scene_hook_103.xml
│ │ │ │ ├── train_scene_hook_104.xml
│ │ │ │ ├── train_scene_hook_105.xml
│ │ │ │ ├── train_scene_hook_106.xml
│ │ │ │ ├── train_scene_hook_107.xml
│ │ │ │ ├── train_scene_hook_108.xml
│ │ │ │ ├── train_scene_hook_109.xml
│ │ │ │ ├── train_scene_hook_11.xml
│ │ │ │ ├── train_scene_hook_110.xml
│ │ │ │ ├── train_scene_hook_111.xml
│ │ │ │ ├── train_scene_hook_112.xml
│ │ │ │ ├── train_scene_hook_113.xml
│ │ │ │ ├── train_scene_hook_114.xml
│ │ │ │ ├── train_scene_hook_115.xml
│ │ │ │ ├── train_scene_hook_116.xml
│ │ │ │ ├── train_scene_hook_117.xml
│ │ │ │ ├── train_scene_hook_118.xml
│ │ │ │ ├── train_scene_hook_119.xml
│ │ │ │ ├── train_scene_hook_12.xml
│ │ │ │ ├── train_scene_hook_120.xml
│ │ │ │ ├── train_scene_hook_121.xml
│ │ │ │ ├── train_scene_hook_122.xml
│ │ │ │ ├── train_scene_hook_123.xml
│ │ │ │ ├── train_scene_hook_124.xml
│ │ │ │ ├── train_scene_hook_125.xml
│ │ │ │ ├── train_scene_hook_126.xml
│ │ │ │ ├── train_scene_hook_127.xml
│ │ │ │ ├── train_scene_hook_128.xml
│ │ │ │ ├── train_scene_hook_129.xml
│ │ │ │ ├── train_scene_hook_13.xml
│ │ │ │ ├── train_scene_hook_130.xml
│ │ │ │ ├── train_scene_hook_131.xml
│ │ │ │ ├── train_scene_hook_132.xml
│ │ │ │ ├── train_scene_hook_133.xml
│ │ │ │ ├── train_scene_hook_134.xml
│ │ │ │ ├── train_scene_hook_135.xml
│ │ │ │ ├── train_scene_hook_136.xml
│ │ │ │ ├── train_scene_hook_137.xml
│ │ │ │ ├── train_scene_hook_138.xml
│ │ │ │ ├── train_scene_hook_139.xml
│ │ │ │ ├── train_scene_hook_14.xml
│ │ │ │ ├── train_scene_hook_140.xml
│ │ │ │ ├── train_scene_hook_141.xml
│ │ │ │ ├── train_scene_hook_142.xml
│ │ │ │ ├── train_scene_hook_143.xml
│ │ │ │ ├── train_scene_hook_144.xml
│ │ │ │ ├── train_scene_hook_145.xml
│ │ │ │ ├── train_scene_hook_146.xml
│ │ │ │ ├── train_scene_hook_147.xml
│ │ │ │ ├── train_scene_hook_148.xml
│ │ │ │ ├── train_scene_hook_149.xml
│ │ │ │ ├── train_scene_hook_15.xml
│ │ │ │ ├── train_scene_hook_150.xml
│ │ │ │ ├── train_scene_hook_151.xml
│ │ │ │ ├── train_scene_hook_152.xml
│ │ │ │ ├── train_scene_hook_153.xml
│ │ │ │ ├── train_scene_hook_154.xml
│ │ │ │ ├── train_scene_hook_155.xml
│ │ │ │ ├── train_scene_hook_156.xml
│ │ │ │ ├── train_scene_hook_157.xml
│ │ │ │ ├── train_scene_hook_158.xml
│ │ │ │ ├── train_scene_hook_159.xml
│ │ │ │ ├── train_scene_hook_16.xml
│ │ │ │ ├── train_scene_hook_160.xml
│ │ │ │ ├── train_scene_hook_161.xml
│ │ │ │ ├── train_scene_hook_162.xml
│ │ │ │ ├── train_scene_hook_163.xml
│ │ │ │ ├── train_scene_hook_164.xml
│ │ │ │ ├── train_scene_hook_165.xml
│ │ │ │ ├── train_scene_hook_166.xml
│ │ │ │ ├── train_scene_hook_167.xml
│ │ │ │ ├── train_scene_hook_168.xml
│ │ │ │ ├── train_scene_hook_169.xml
│ │ │ │ ├── train_scene_hook_17.xml
│ │ │ │ ├── train_scene_hook_170.xml
│ │ │ │ ├── train_scene_hook_171.xml
│ │ │ │ ├── train_scene_hook_172.xml
│ │ │ │ ├── train_scene_hook_173.xml
│ │ │ │ ├── train_scene_hook_174.xml
│ │ │ │ ├── train_scene_hook_175.xml
│ │ │ │ ├── train_scene_hook_176.xml
│ │ │ │ ├── train_scene_hook_177.xml
│ │ │ │ ├── train_scene_hook_178.xml
│ │ │ │ ├── train_scene_hook_179.xml
│ │ │ │ ├── train_scene_hook_18.xml
│ │ │ │ ├── train_scene_hook_180.xml
│ │ │ │ ├── train_scene_hook_181.xml
│ │ │ │ ├── train_scene_hook_182.xml
│ │ │ │ ├── train_scene_hook_183.xml
│ │ │ │ ├── train_scene_hook_184.xml
│ │ │ │ ├── train_scene_hook_185.xml
│ │ │ │ ├── train_scene_hook_186.xml
│ │ │ │ ├── train_scene_hook_187.xml
│ │ │ │ ├── train_scene_hook_188.xml
│ │ │ │ ├── train_scene_hook_189.xml
│ │ │ │ ├── train_scene_hook_19.xml
│ │ │ │ ├── train_scene_hook_190.xml
│ │ │ │ ├── train_scene_hook_191.xml
│ │ │ │ ├── train_scene_hook_192.xml
│ │ │ │ ├── train_scene_hook_193.xml
│ │ │ │ ├── train_scene_hook_194.xml
│ │ │ │ ├── train_scene_hook_195.xml
│ │ │ │ ├── train_scene_hook_196.xml
│ │ │ │ ├── train_scene_hook_197.xml
│ │ │ │ ├── train_scene_hook_198.xml
│ │ │ │ ├── train_scene_hook_199.xml
│ │ │ │ ├── train_scene_hook_2.xml
│ │ │ │ ├── train_scene_hook_20.xml
│ │ │ │ ├── train_scene_hook_200.xml
│ │ │ │ ├── train_scene_hook_201.xml
│ │ │ │ ├── train_scene_hook_202.xml
│ │ │ │ ├── train_scene_hook_203.xml
│ │ │ │ ├── train_scene_hook_204.xml
│ │ │ │ ├── train_scene_hook_205.xml
│ │ │ │ ├── train_scene_hook_206.xml
│ │ │ │ ├── train_scene_hook_207.xml
│ │ │ │ ├── train_scene_hook_208.xml
│ │ │ │ ├── train_scene_hook_209.xml
│ │ │ │ ├── train_scene_hook_21.xml
│ │ │ │ ├── train_scene_hook_210.xml
│ │ │ │ ├── train_scene_hook_211.xml
│ │ │ │ ├── train_scene_hook_212.xml
│ │ │ │ ├── train_scene_hook_213.xml
│ │ │ │ ├── train_scene_hook_214.xml
│ │ │ │ ├── train_scene_hook_215.xml
│ │ │ │ ├── train_scene_hook_216.xml
│ │ │ │ ├── train_scene_hook_217.xml
│ │ │ │ ├── train_scene_hook_218.xml
│ │ │ │ ├── train_scene_hook_219.xml
│ │ │ │ ├── train_scene_hook_22.xml
│ │ │ │ ├── train_scene_hook_220.xml
│ │ │ │ ├── train_scene_hook_221.xml
│ │ │ │ ├── train_scene_hook_222.xml
│ │ │ │ ├── train_scene_hook_223.xml
│ │ │ │ ├── train_scene_hook_224.xml
│ │ │ │ ├── train_scene_hook_225.xml
│ │ │ │ ├── train_scene_hook_226.xml
│ │ │ │ ├── train_scene_hook_227.xml
│ │ │ │ ├── train_scene_hook_228.xml
│ │ │ │ ├── train_scene_hook_229.xml
│ │ │ │ ├── train_scene_hook_23.xml
│ │ │ │ ├── train_scene_hook_230.xml
│ │ │ │ ├── train_scene_hook_231.xml
│ │ │ │ ├── train_scene_hook_232.xml
│ │ │ │ ├── train_scene_hook_233.xml
│ │ │ │ ├── train_scene_hook_234.xml
│ │ │ │ ├── train_scene_hook_235.xml
│ │ │ │ ├── train_scene_hook_236.xml
│ │ │ │ ├── train_scene_hook_237.xml
│ │ │ │ ├── train_scene_hook_238.xml
│ │ │ │ ├── train_scene_hook_239.xml
│ │ │ │ ├── train_scene_hook_24.xml
│ │ │ │ ├── train_scene_hook_240.xml
│ │ │ │ ├── train_scene_hook_241.xml
│ │ │ │ ├── train_scene_hook_242.xml
│ │ │ │ ├── train_scene_hook_243.xml
│ │ │ │ ├── train_scene_hook_244.xml
│ │ │ │ ├── train_scene_hook_245.xml
│ │ │ │ ├── train_scene_hook_246.xml
│ │ │ │ ├── train_scene_hook_247.xml
│ │ │ │ ├── train_scene_hook_248.xml
│ │ │ │ ├── train_scene_hook_249.xml
│ │ │ │ ├── train_scene_hook_25.xml
│ │ │ │ ├── train_scene_hook_250.xml
│ │ │ │ ├── train_scene_hook_251.xml
│ │ │ │ ├── train_scene_hook_252.xml
│ │ │ │ ├── train_scene_hook_253.xml
│ │ │ │ ├── train_scene_hook_254.xml
│ │ │ │ ├── train_scene_hook_255.xml
│ │ │ │ ├── train_scene_hook_256.xml
│ │ │ │ ├── train_scene_hook_257.xml
│ │ │ │ ├── train_scene_hook_258.xml
│ │ │ │ ├── train_scene_hook_259.xml
│ │ │ │ ├── train_scene_hook_26.xml
│ │ │ │ ├── train_scene_hook_260.xml
│ │ │ │ ├── train_scene_hook_261.xml
│ │ │ │ ├── train_scene_hook_262.xml
│ │ │ │ ├── train_scene_hook_263.xml
│ │ │ │ ├── train_scene_hook_264.xml
│ │ │ │ ├── train_scene_hook_265.xml
│ │ │ │ ├── train_scene_hook_266.xml
│ │ │ │ ├── train_scene_hook_267.xml
│ │ │ │ ├── train_scene_hook_268.xml
│ │ │ │ ├── train_scene_hook_269.xml
│ │ │ │ ├── train_scene_hook_27.xml
│ │ │ │ ├── train_scene_hook_270.xml
│ │ │ │ ├── train_scene_hook_271.xml
│ │ │ │ ├── train_scene_hook_272.xml
│ │ │ │ ├── train_scene_hook_273.xml
│ │ │ │ ├── train_scene_hook_274.xml
│ │ │ │ ├── train_scene_hook_275.xml
│ │ │ │ ├── train_scene_hook_276.xml
│ │ │ │ ├── train_scene_hook_277.xml
│ │ │ │ ├── train_scene_hook_278.xml
│ │ │ │ ├── train_scene_hook_279.xml
│ │ │ │ ├── train_scene_hook_28.xml
│ │ │ │ ├── train_scene_hook_280.xml
│ │ │ │ ├── train_scene_hook_281.xml
│ │ │ │ ├── train_scene_hook_282.xml
│ │ │ │ ├── train_scene_hook_283.xml
│ │ │ │ ├── train_scene_hook_284.xml
│ │ │ │ ├── train_scene_hook_285.xml
│ │ │ │ ├── train_scene_hook_286.xml
│ │ │ │ ├── train_scene_hook_287.xml
│ │ │ │ ├── train_scene_hook_288.xml
│ │ │ │ ├── train_scene_hook_289.xml
│ │ │ │ ├── train_scene_hook_29.xml
│ │ │ │ ├── train_scene_hook_290.xml
│ │ │ │ ├── train_scene_hook_291.xml
│ │ │ │ ├── train_scene_hook_292.xml
│ │ │ │ ├── train_scene_hook_293.xml
│ │ │ │ ├── train_scene_hook_294.xml
│ │ │ │ ├── train_scene_hook_295.xml
│ │ │ │ ├── train_scene_hook_296.xml
│ │ │ │ ├── train_scene_hook_297.xml
│ │ │ │ ├── train_scene_hook_298.xml
│ │ │ │ ├── train_scene_hook_299.xml
│ │ │ │ ├── train_scene_hook_3.xml
│ │ │ │ ├── train_scene_hook_30.xml
│ │ │ │ ├── train_scene_hook_300.xml
│ │ │ │ ├── train_scene_hook_301.xml
│ │ │ │ ├── train_scene_hook_302.xml
│ │ │ │ ├── train_scene_hook_303.xml
│ │ │ │ ├── train_scene_hook_304.xml
│ │ │ │ ├── train_scene_hook_305.xml
│ │ │ │ ├── train_scene_hook_306.xml
│ │ │ │ ├── train_scene_hook_307.xml
│ │ │ │ ├── train_scene_hook_308.xml
│ │ │ │ ├── train_scene_hook_309.xml
│ │ │ │ ├── train_scene_hook_31.xml
│ │ │ │ ├── train_scene_hook_310.xml
│ │ │ │ ├── train_scene_hook_311.xml
│ │ │ │ ├── train_scene_hook_312.xml
│ │ │ │ ├── train_scene_hook_313.xml
│ │ │ │ ├── train_scene_hook_314.xml
│ │ │ │ ├── train_scene_hook_315.xml
│ │ │ │ ├── train_scene_hook_316.xml
│ │ │ │ ├── train_scene_hook_317.xml
│ │ │ │ ├── train_scene_hook_318.xml
│ │ │ │ ├── train_scene_hook_319.xml
│ │ │ │ ├── train_scene_hook_32.xml
│ │ │ │ ├── train_scene_hook_320.xml
│ │ │ │ ├── train_scene_hook_321.xml
│ │ │ │ ├── train_scene_hook_322.xml
│ │ │ │ ├── train_scene_hook_323.xml
│ │ │ │ ├── train_scene_hook_324.xml
│ │ │ │ ├── train_scene_hook_325.xml
│ │ │ │ ├── train_scene_hook_326.xml
│ │ │ │ ├── train_scene_hook_327.xml
│ │ │ │ ├── train_scene_hook_328.xml
│ │ │ │ ├── train_scene_hook_329.xml
│ │ │ │ ├── train_scene_hook_33.xml
│ │ │ │ ├── train_scene_hook_330.xml
│ │ │ │ ├── train_scene_hook_331.xml
│ │ │ │ ├── train_scene_hook_332.xml
│ │ │ │ ├── train_scene_hook_333.xml
│ │ │ │ ├── train_scene_hook_334.xml
│ │ │ │ ├── train_scene_hook_335.xml
│ │ │ │ ├── train_scene_hook_336.xml
│ │ │ │ ├── train_scene_hook_337.xml
│ │ │ │ ├── train_scene_hook_338.xml
│ │ │ │ ├── train_scene_hook_339.xml
│ │ │ │ ├── train_scene_hook_34.xml
│ │ │ │ ├── train_scene_hook_340.xml
│ │ │ │ ├── train_scene_hook_341.xml
│ │ │ │ ├── train_scene_hook_342.xml
│ │ │ │ ├── train_scene_hook_343.xml
│ │ │ │ ├── train_scene_hook_344.xml
│ │ │ │ ├── train_scene_hook_345.xml
│ │ │ │ ├── train_scene_hook_346.xml
│ │ │ │ ├── train_scene_hook_347.xml
│ │ │ │ ├── train_scene_hook_348.xml
│ │ │ │ ├── train_scene_hook_349.xml
│ │ │ │ ├── train_scene_hook_35.xml
│ │ │ │ ├── train_scene_hook_350.xml
│ │ │ │ ├── train_scene_hook_351.xml
│ │ │ │ ├── train_scene_hook_352.xml
│ │ │ │ ├── train_scene_hook_353.xml
│ │ │ │ ├── train_scene_hook_354.xml
│ │ │ │ ├── train_scene_hook_355.xml
│ │ │ │ ├── train_scene_hook_356.xml
│ │ │ │ ├── train_scene_hook_357.xml
│ │ │ │ ├── train_scene_hook_358.xml
│ │ │ │ ├── train_scene_hook_359.xml
│ │ │ │ ├── train_scene_hook_36.xml
│ │ │ │ ├── train_scene_hook_360.xml
│ │ │ │ ├── train_scene_hook_361.xml
│ │ │ │ ├── train_scene_hook_362.xml
│ │ │ │ ├── train_scene_hook_363.xml
│ │ │ │ ├── train_scene_hook_364.xml
│ │ │ │ ├── train_scene_hook_365.xml
│ │ │ │ ├── train_scene_hook_366.xml
│ │ │ │ ├── train_scene_hook_367.xml
│ │ │ │ ├── train_scene_hook_368.xml
│ │ │ │ ├── train_scene_hook_369.xml
│ │ │ │ ├── train_scene_hook_37.xml
│ │ │ │ ├── train_scene_hook_370.xml
│ │ │ │ ├── train_scene_hook_371.xml
│ │ │ │ ├── train_scene_hook_372.xml
│ │ │ │ ├── train_scene_hook_373.xml
│ │ │ │ ├── train_scene_hook_374.xml
│ │ │ │ ├── train_scene_hook_375.xml
│ │ │ │ ├── train_scene_hook_376.xml
│ │ │ │ ├── train_scene_hook_377.xml
│ │ │ │ ├── train_scene_hook_378.xml
│ │ │ │ ├── train_scene_hook_379.xml
│ │ │ │ ├── train_scene_hook_38.xml
│ │ │ │ ├── train_scene_hook_380.xml
│ │ │ │ ├── train_scene_hook_381.xml
│ │ │ │ ├── train_scene_hook_382.xml
│ │ │ │ ├── train_scene_hook_383.xml
│ │ │ │ ├── train_scene_hook_384.xml
│ │ │ │ ├── train_scene_hook_385.xml
│ │ │ │ ├── train_scene_hook_386.xml
│ │ │ │ ├── train_scene_hook_387.xml
│ │ │ │ ├── train_scene_hook_388.xml
│ │ │ │ ├── train_scene_hook_389.xml
│ │ │ │ ├── train_scene_hook_39.xml
│ │ │ │ ├── train_scene_hook_390.xml
│ │ │ │ ├── train_scene_hook_391.xml
│ │ │ │ ├── train_scene_hook_392.xml
│ │ │ │ ├── train_scene_hook_393.xml
│ │ │ │ ├── train_scene_hook_394.xml
│ │ │ │ ├── train_scene_hook_395.xml
│ │ │ │ ├── train_scene_hook_396.xml
│ │ │ │ ├── train_scene_hook_397.xml
│ │ │ │ ├── train_scene_hook_398.xml
│ │ │ │ ├── train_scene_hook_399.xml
│ │ │ │ ├── train_scene_hook_4.xml
│ │ │ │ ├── train_scene_hook_40.xml
│ │ │ │ ├── train_scene_hook_400.xml
│ │ │ │ ├── train_scene_hook_401.xml
│ │ │ │ ├── train_scene_hook_402.xml
│ │ │ │ ├── train_scene_hook_403.xml
│ │ │ │ ├── train_scene_hook_404.xml
│ │ │ │ ├── train_scene_hook_405.xml
│ │ │ │ ├── train_scene_hook_406.xml
│ │ │ │ ├── train_scene_hook_407.xml
│ │ │ │ ├── train_scene_hook_408.xml
│ │ │ │ ├── train_scene_hook_409.xml
│ │ │ │ ├── train_scene_hook_41.xml
│ │ │ │ ├── train_scene_hook_410.xml
│ │ │ │ ├── train_scene_hook_411.xml
│ │ │ │ ├── train_scene_hook_412.xml
│ │ │ │ ├── train_scene_hook_413.xml
│ │ │ │ ├── train_scene_hook_414.xml
│ │ │ │ ├── train_scene_hook_415.xml
│ │ │ │ ├── train_scene_hook_416.xml
│ │ │ │ ├── train_scene_hook_417.xml
│ │ │ │ ├── train_scene_hook_418.xml
│ │ │ │ ├── train_scene_hook_419.xml
│ │ │ │ ├── train_scene_hook_42.xml
│ │ │ │ ├── train_scene_hook_420.xml
│ │ │ │ ├── train_scene_hook_421.xml
│ │ │ │ ├── train_scene_hook_422.xml
│ │ │ │ ├── train_scene_hook_423.xml
│ │ │ │ ├── train_scene_hook_424.xml
│ │ │ │ ├── train_scene_hook_425.xml
│ │ │ │ ├── train_scene_hook_426.xml
│ │ │ │ ├── train_scene_hook_427.xml
│ │ │ │ ├── train_scene_hook_428.xml
│ │ │ │ ├── train_scene_hook_429.xml
│ │ │ │ ├── train_scene_hook_43.xml
│ │ │ │ ├── train_scene_hook_430.xml
│ │ │ │ ├── train_scene_hook_431.xml
│ │ │ │ ├── train_scene_hook_432.xml
│ │ │ │ ├── train_scene_hook_433.xml
│ │ │ │ ├── train_scene_hook_434.xml
│ │ │ │ ├── train_scene_hook_435.xml
│ │ │ │ ├── train_scene_hook_436.xml
│ │ │ │ ├── train_scene_hook_437.xml
│ │ │ │ ├── train_scene_hook_438.xml
│ │ │ │ ├── train_scene_hook_439.xml
│ │ │ │ ├── train_scene_hook_44.xml
│ │ │ │ ├── train_scene_hook_440.xml
│ │ │ │ ├── train_scene_hook_441.xml
│ │ │ │ ├── train_scene_hook_442.xml
│ │ │ │ ├── train_scene_hook_443.xml
│ │ │ │ ├── train_scene_hook_444.xml
│ │ │ │ ├── train_scene_hook_445.xml
│ │ │ │ ├── train_scene_hook_446.xml
│ │ │ │ ├── train_scene_hook_447.xml
│ │ │ │ ├── train_scene_hook_448.xml
│ │ │ │ ├── train_scene_hook_449.xml
│ │ │ │ ├── train_scene_hook_45.xml
│ │ │ │ ├── train_scene_hook_450.xml
│ │ │ │ ├── train_scene_hook_451.xml
│ │ │ │ ├── train_scene_hook_452.xml
│ │ │ │ ├── train_scene_hook_453.xml
│ │ │ │ ├── train_scene_hook_454.xml
│ │ │ │ ├── train_scene_hook_455.xml
│ │ │ │ ├── train_scene_hook_456.xml
│ │ │ │ ├── train_scene_hook_457.xml
│ │ │ │ ├── train_scene_hook_458.xml
│ │ │ │ ├── train_scene_hook_459.xml
│ │ │ │ ├── train_scene_hook_46.xml
│ │ │ │ ├── train_scene_hook_460.xml
│ │ │ │ ├── train_scene_hook_461.xml
│ │ │ │ ├── train_scene_hook_462.xml
│ │ │ │ ├── train_scene_hook_463.xml
│ │ │ │ ├── train_scene_hook_464.xml
│ │ │ │ ├── train_scene_hook_465.xml
│ │ │ │ ├── train_scene_hook_466.xml
│ │ │ │ ├── train_scene_hook_467.xml
│ │ │ │ ├── train_scene_hook_468.xml
│ │ │ │ ├── train_scene_hook_469.xml
│ │ │ │ ├── train_scene_hook_47.xml
│ │ │ │ ├── train_scene_hook_470.xml
│ │ │ │ ├── train_scene_hook_471.xml
│ │ │ │ ├── train_scene_hook_472.xml
│ │ │ │ ├── train_scene_hook_473.xml
│ │ │ │ ├── train_scene_hook_474.xml
│ │ │ │ ├── train_scene_hook_475.xml
│ │ │ │ ├── train_scene_hook_476.xml
│ │ │ │ ├── train_scene_hook_477.xml
│ │ │ │ ├── train_scene_hook_478.xml
│ │ │ │ ├── train_scene_hook_479.xml
│ │ │ │ ├── train_scene_hook_48.xml
│ │ │ │ ├── train_scene_hook_480.xml
│ │ │ │ ├── train_scene_hook_481.xml
│ │ │ │ ├── train_scene_hook_482.xml
│ │ │ │ ├── train_scene_hook_483.xml
│ │ │ │ ├── train_scene_hook_484.xml
│ │ │ │ ├── train_scene_hook_485.xml
│ │ │ │ ├── train_scene_hook_486.xml
│ │ │ │ ├── train_scene_hook_487.xml
│ │ │ │ ├── train_scene_hook_488.xml
│ │ │ │ ├── train_scene_hook_489.xml
│ │ │ │ ├── train_scene_hook_49.xml
│ │ │ │ ├── train_scene_hook_490.xml
│ │ │ │ ├── train_scene_hook_491.xml
│ │ │ │ ├── train_scene_hook_492.xml
│ │ │ │ ├── train_scene_hook_493.xml
│ │ │ │ ├── train_scene_hook_494.xml
│ │ │ │ ├── train_scene_hook_495.xml
│ │ │ │ ├── train_scene_hook_496.xml
│ │ │ │ ├── train_scene_hook_497.xml
│ │ │ │ ├── train_scene_hook_498.xml
│ │ │ │ ├── train_scene_hook_499.xml
│ │ │ │ ├── train_scene_hook_5.xml
│ │ │ │ ├── train_scene_hook_50.xml
│ │ │ │ ├── train_scene_hook_500.xml
│ │ │ │ ├── train_scene_hook_501.xml
│ │ │ │ ├── train_scene_hook_502.xml
│ │ │ │ ├── train_scene_hook_503.xml
│ │ │ │ ├── train_scene_hook_504.xml
│ │ │ │ ├── train_scene_hook_505.xml
│ │ │ │ ├── train_scene_hook_506.xml
│ │ │ │ ├── train_scene_hook_507.xml
│ │ │ │ ├── train_scene_hook_508.xml
│ │ │ │ ├── train_scene_hook_509.xml
│ │ │ │ ├── train_scene_hook_51.xml
│ │ │ │ ├── train_scene_hook_510.xml
│ │ │ │ ├── train_scene_hook_511.xml
│ │ │ │ ├── train_scene_hook_512.xml
│ │ │ │ ├── train_scene_hook_513.xml
│ │ │ │ ├── train_scene_hook_514.xml
│ │ │ │ ├── train_scene_hook_515.xml
│ │ │ │ ├── train_scene_hook_516.xml
│ │ │ │ ├── train_scene_hook_517.xml
│ │ │ │ ├── train_scene_hook_518.xml
│ │ │ │ ├── train_scene_hook_519.xml
│ │ │ │ ├── train_scene_hook_52.xml
│ │ │ │ ├── train_scene_hook_520.xml
│ │ │ │ ├── train_scene_hook_521.xml
│ │ │ │ ├── train_scene_hook_522.xml
│ │ │ │ ├── train_scene_hook_523.xml
│ │ │ │ ├── train_scene_hook_524.xml
│ │ │ │ ├── train_scene_hook_525.xml
│ │ │ │ ├── train_scene_hook_526.xml
│ │ │ │ ├── train_scene_hook_527.xml
│ │ │ │ ├── train_scene_hook_528.xml
│ │ │ │ ├── train_scene_hook_529.xml
│ │ │ │ ├── train_scene_hook_53.xml
│ │ │ │ ├── train_scene_hook_530.xml
│ │ │ │ ├── train_scene_hook_531.xml
│ │ │ │ ├── train_scene_hook_532.xml
│ │ │ │ ├── train_scene_hook_533.xml
│ │ │ │ ├── train_scene_hook_534.xml
│ │ │ │ ├── train_scene_hook_535.xml
│ │ │ │ ├── train_scene_hook_536.xml
│ │ │ │ ├── train_scene_hook_537.xml
│ │ │ │ ├── train_scene_hook_538.xml
│ │ │ │ ├── train_scene_hook_539.xml
│ │ │ │ ├── train_scene_hook_54.xml
│ │ │ │ ├── train_scene_hook_540.xml
│ │ │ │ ├── train_scene_hook_541.xml
│ │ │ │ ├── train_scene_hook_542.xml
│ │ │ │ ├── train_scene_hook_543.xml
│ │ │ │ ├── train_scene_hook_544.xml
│ │ │ │ ├── train_scene_hook_545.xml
│ │ │ │ ├── train_scene_hook_546.xml
│ │ │ │ ├── train_scene_hook_547.xml
│ │ │ │ ├── train_scene_hook_548.xml
│ │ │ │ ├── train_scene_hook_549.xml
│ │ │ │ ├── train_scene_hook_55.xml
│ │ │ │ ├── train_scene_hook_550.xml
│ │ │ │ ├── train_scene_hook_551.xml
│ │ │ │ ├── train_scene_hook_552.xml
│ │ │ │ ├── train_scene_hook_553.xml
│ │ │ │ ├── train_scene_hook_554.xml
│ │ │ │ ├── train_scene_hook_555.xml
│ │ │ │ ├── train_scene_hook_556.xml
│ │ │ │ ├── train_scene_hook_557.xml
│ │ │ │ ├── train_scene_hook_558.xml
│ │ │ │ ├── train_scene_hook_559.xml
│ │ │ │ ├── train_scene_hook_56.xml
│ │ │ │ ├── train_scene_hook_560.xml
│ │ │ │ ├── train_scene_hook_561.xml
│ │ │ │ ├── train_scene_hook_562.xml
│ │ │ │ ├── train_scene_hook_563.xml
│ │ │ │ ├── train_scene_hook_564.xml
│ │ │ │ ├── train_scene_hook_565.xml
│ │ │ │ ├── train_scene_hook_566.xml
│ │ │ │ ├── train_scene_hook_567.xml
│ │ │ │ ├── train_scene_hook_568.xml
│ │ │ │ ├── train_scene_hook_569.xml
│ │ │ │ ├── train_scene_hook_57.xml
│ │ │ │ ├── train_scene_hook_570.xml
│ │ │ │ ├── train_scene_hook_571.xml
│ │ │ │ ├── train_scene_hook_572.xml
│ │ │ │ ├── train_scene_hook_573.xml
│ │ │ │ ├── train_scene_hook_574.xml
│ │ │ │ ├── train_scene_hook_575.xml
│ │ │ │ ├── train_scene_hook_576.xml
│ │ │ │ ├── train_scene_hook_577.xml
│ │ │ │ ├── train_scene_hook_578.xml
│ │ │ │ ├── train_scene_hook_579.xml
│ │ │ │ ├── train_scene_hook_58.xml
│ │ │ │ ├── train_scene_hook_580.xml
│ │ │ │ ├── train_scene_hook_581.xml
│ │ │ │ ├── train_scene_hook_582.xml
│ │ │ │ ├── train_scene_hook_583.xml
│ │ │ │ ├── train_scene_hook_584.xml
│ │ │ │ ├── train_scene_hook_585.xml
│ │ │ │ ├── train_scene_hook_586.xml
│ │ │ │ ├── train_scene_hook_587.xml
│ │ │ │ ├── train_scene_hook_588.xml
│ │ │ │ ├── train_scene_hook_589.xml
│ │ │ │ ├── train_scene_hook_59.xml
│ │ │ │ ├── train_scene_hook_590.xml
│ │ │ │ ├── train_scene_hook_591.xml
│ │ │ │ ├── train_scene_hook_592.xml
│ │ │ │ ├── train_scene_hook_593.xml
│ │ │ │ ├── train_scene_hook_594.xml
│ │ │ │ ├── train_scene_hook_595.xml
│ │ │ │ ├── train_scene_hook_596.xml
│ │ │ │ ├── train_scene_hook_597.xml
│ │ │ │ ├── train_scene_hook_598.xml
│ │ │ │ ├── train_scene_hook_599.xml
│ │ │ │ ├── train_scene_hook_6.xml
│ │ │ │ ├── train_scene_hook_60.xml
│ │ │ │ ├── train_scene_hook_600.xml
│ │ │ │ ├── train_scene_hook_601.xml
│ │ │ │ ├── train_scene_hook_602.xml
│ │ │ │ ├── train_scene_hook_603.xml
│ │ │ │ ├── train_scene_hook_604.xml
│ │ │ │ ├── train_scene_hook_605.xml
│ │ │ │ ├── train_scene_hook_606.xml
│ │ │ │ ├── train_scene_hook_607.xml
│ │ │ │ ├── train_scene_hook_608.xml
│ │ │ │ ├── train_scene_hook_609.xml
│ │ │ │ ├── train_scene_hook_61.xml
│ │ │ │ ├── train_scene_hook_610.xml
│ │ │ │ ├── train_scene_hook_611.xml
│ │ │ │ ├── train_scene_hook_612.xml
│ │ │ │ ├── train_scene_hook_613.xml
│ │ │ │ ├── train_scene_hook_614.xml
│ │ │ │ ├── train_scene_hook_615.xml
│ │ │ │ ├── train_scene_hook_616.xml
│ │ │ │ ├── train_scene_hook_617.xml
│ │ │ │ ├── train_scene_hook_618.xml
│ │ │ │ ├── train_scene_hook_619.xml
│ │ │ │ ├── train_scene_hook_62.xml
│ │ │ │ ├── train_scene_hook_620.xml
│ │ │ │ ├── train_scene_hook_621.xml
│ │ │ │ ├── train_scene_hook_622.xml
│ │ │ │ ├── train_scene_hook_623.xml
│ │ │ │ ├── train_scene_hook_624.xml
│ │ │ │ ├── train_scene_hook_625.xml
│ │ │ │ ├── train_scene_hook_626.xml
│ │ │ │ ├── train_scene_hook_627.xml
│ │ │ │ ├── train_scene_hook_628.xml
│ │ │ │ ├── train_scene_hook_629.xml
│ │ │ │ ├── train_scene_hook_63.xml
│ │ │ │ ├── train_scene_hook_630.xml
│ │ │ │ ├── train_scene_hook_631.xml
│ │ │ │ ├── train_scene_hook_632.xml
│ │ │ │ ├── train_scene_hook_633.xml
│ │ │ │ ├── train_scene_hook_634.xml
│ │ │ │ ├── train_scene_hook_635.xml
│ │ │ │ ├── train_scene_hook_636.xml
│ │ │ │ ├── train_scene_hook_637.xml
│ │ │ │ ├── train_scene_hook_638.xml
│ │ │ │ ├── train_scene_hook_639.xml
│ │ │ │ ├── train_scene_hook_64.xml
│ │ │ │ ├── train_scene_hook_640.xml
│ │ │ │ ├── train_scene_hook_641.xml
│ │ │ │ ├── train_scene_hook_642.xml
│ │ │ │ ├── train_scene_hook_643.xml
│ │ │ │ ├── train_scene_hook_644.xml
│ │ │ │ ├── train_scene_hook_645.xml
│ │ │ │ ├── train_scene_hook_646.xml
│ │ │ │ ├── train_scene_hook_647.xml
│ │ │ │ ├── train_scene_hook_648.xml
│ │ │ │ ├── train_scene_hook_649.xml
│ │ │ │ ├── train_scene_hook_65.xml
│ │ │ │ ├── train_scene_hook_650.xml
│ │ │ │ ├── train_scene_hook_651.xml
│ │ │ │ ├── train_scene_hook_652.xml
│ │ │ │ ├── train_scene_hook_653.xml
│ │ │ │ ├── train_scene_hook_654.xml
│ │ │ │ ├── train_scene_hook_655.xml
│ │ │ │ ├── train_scene_hook_656.xml
│ │ │ │ ├── train_scene_hook_657.xml
│ │ │ │ ├── train_scene_hook_658.xml
│ │ │ │ ├── train_scene_hook_659.xml
│ │ │ │ ├── train_scene_hook_66.xml
│ │ │ │ ├── train_scene_hook_660.xml
│ │ │ │ ├── train_scene_hook_661.xml
│ │ │ │ ├── train_scene_hook_662.xml
│ │ │ │ ├── train_scene_hook_663.xml
│ │ │ │ ├── train_scene_hook_664.xml
│ │ │ │ ├── train_scene_hook_665.xml
│ │ │ │ ├── train_scene_hook_666.xml
│ │ │ │ ├── train_scene_hook_667.xml
│ │ │ │ ├── train_scene_hook_668.xml
│ │ │ │ ├── train_scene_hook_669.xml
│ │ │ │ ├── train_scene_hook_67.xml
│ │ │ │ ├── train_scene_hook_670.xml
│ │ │ │ ├── train_scene_hook_671.xml
│ │ │ │ ├── train_scene_hook_672.xml
│ │ │ │ ├── train_scene_hook_673.xml
│ │ │ │ ├── train_scene_hook_674.xml
│ │ │ │ ├── train_scene_hook_675.xml
│ │ │ │ ├── train_scene_hook_676.xml
│ │ │ │ ├── train_scene_hook_677.xml
│ │ │ │ ├── train_scene_hook_678.xml
│ │ │ │ ├── train_scene_hook_679.xml
│ │ │ │ ├── train_scene_hook_68.xml
│ │ │ │ ├── train_scene_hook_680.xml
│ │ │ │ ├── train_scene_hook_681.xml
│ │ │ │ ├── train_scene_hook_682.xml
│ │ │ │ ├── train_scene_hook_683.xml
│ │ │ │ ├── train_scene_hook_684.xml
│ │ │ │ ├── train_scene_hook_685.xml
│ │ │ │ ├── train_scene_hook_686.xml
│ │ │ │ ├── train_scene_hook_687.xml
│ │ │ │ ├── train_scene_hook_688.xml
│ │ │ │ ├── train_scene_hook_689.xml
│ │ │ │ ├── train_scene_hook_69.xml
│ │ │ │ ├── train_scene_hook_690.xml
│ │ │ │ ├── train_scene_hook_691.xml
│ │ │ │ ├── train_scene_hook_692.xml
│ │ │ │ ├── train_scene_hook_693.xml
│ │ │ │ ├── train_scene_hook_694.xml
│ │ │ │ ├── train_scene_hook_695.xml
│ │ │ │ ├── train_scene_hook_696.xml
│ │ │ │ ├── train_scene_hook_697.xml
│ │ │ │ ├── train_scene_hook_698.xml
│ │ │ │ ├── train_scene_hook_699.xml
│ │ │ │ ├── train_scene_hook_7.xml
│ │ │ │ ├── train_scene_hook_70.xml
│ │ │ │ ├── train_scene_hook_700.xml
│ │ │ │ ├── train_scene_hook_701.xml
│ │ │ │ ├── train_scene_hook_702.xml
│ │ │ │ ├── train_scene_hook_703.xml
│ │ │ │ ├── train_scene_hook_704.xml
│ │ │ │ ├── train_scene_hook_705.xml
│ │ │ │ ├── train_scene_hook_706.xml
│ │ │ │ ├── train_scene_hook_707.xml
│ │ │ │ ├── train_scene_hook_708.xml
│ │ │ │ ├── train_scene_hook_709.xml
│ │ │ │ ├── train_scene_hook_71.xml
│ │ │ │ ├── train_scene_hook_710.xml
│ │ │ │ ├── train_scene_hook_711.xml
│ │ │ │ ├── train_scene_hook_712.xml
│ │ │ │ ├── train_scene_hook_713.xml
│ │ │ │ ├── train_scene_hook_714.xml
│ │ │ │ ├── train_scene_hook_715.xml
│ │ │ │ ├── train_scene_hook_716.xml
│ │ │ │ ├── train_scene_hook_717.xml
│ │ │ │ ├── train_scene_hook_718.xml
│ │ │ │ ├── train_scene_hook_719.xml
│ │ │ │ ├── train_scene_hook_72.xml
│ │ │ │ ├── train_scene_hook_720.xml
│ │ │ │ ├── train_scene_hook_721.xml
│ │ │ │ ├── train_scene_hook_722.xml
│ │ │ │ ├── train_scene_hook_723.xml
│ │ │ │ ├── train_scene_hook_724.xml
│ │ │ │ ├── train_scene_hook_725.xml
│ │ │ │ ├── train_scene_hook_726.xml
│ │ │ │ ├── train_scene_hook_727.xml
│ │ │ │ ├── train_scene_hook_728.xml
│ │ │ │ ├── train_scene_hook_729.xml
│ │ │ │ ├── train_scene_hook_73.xml
│ │ │ │ ├── train_scene_hook_730.xml
│ │ │ │ ├── train_scene_hook_731.xml
│ │ │ │ ├── train_scene_hook_732.xml
│ │ │ │ ├── train_scene_hook_733.xml
│ │ │ │ ├── train_scene_hook_734.xml
│ │ │ │ ├── train_scene_hook_735.xml
│ │ │ │ ├── train_scene_hook_736.xml
│ │ │ │ ├── train_scene_hook_737.xml
│ │ │ │ ├── train_scene_hook_738.xml
│ │ │ │ ├── train_scene_hook_739.xml
│ │ │ │ ├── train_scene_hook_74.xml
│ │ │ │ ├── train_scene_hook_740.xml
│ │ │ │ ├── train_scene_hook_741.xml
│ │ │ │ ├── train_scene_hook_742.xml
│ │ │ │ ├── train_scene_hook_743.xml
│ │ │ │ ├── train_scene_hook_744.xml
│ │ │ │ ├── train_scene_hook_745.xml
│ │ │ │ ├── train_scene_hook_746.xml
│ │ │ │ ├── train_scene_hook_747.xml
│ │ │ │ ├── train_scene_hook_748.xml
│ │ │ │ ├── train_scene_hook_749.xml
│ │ │ │ ├── train_scene_hook_75.xml
│ │ │ │ ├── train_scene_hook_750.xml
│ │ │ │ ├── train_scene_hook_751.xml
│ │ │ │ ├── train_scene_hook_752.xml
│ │ │ │ ├── train_scene_hook_753.xml
│ │ │ │ ├── train_scene_hook_754.xml
│ │ │ │ ├── train_scene_hook_755.xml
│ │ │ │ ├── train_scene_hook_756.xml
│ │ │ │ ├── train_scene_hook_757.xml
│ │ │ │ ├── train_scene_hook_758.xml
│ │ │ │ ├── train_scene_hook_759.xml
│ │ │ │ ├── train_scene_hook_76.xml
│ │ │ │ ├── train_scene_hook_760.xml
│ │ │ │ ├── train_scene_hook_761.xml
│ │ │ │ ├── train_scene_hook_762.xml
│ │ │ │ ├── train_scene_hook_763.xml
│ │ │ │ ├── train_scene_hook_764.xml
│ │ │ │ ├── train_scene_hook_765.xml
│ │ │ │ ├── train_scene_hook_766.xml
│ │ │ │ ├── train_scene_hook_767.xml
│ │ │ │ ├── train_scene_hook_768.xml
│ │ │ │ ├── train_scene_hook_769.xml
│ │ │ │ ├── train_scene_hook_77.xml
│ │ │ │ ├── train_scene_hook_770.xml
│ │ │ │ ├── train_scene_hook_771.xml
│ │ │ │ ├── train_scene_hook_772.xml
│ │ │ │ ├── train_scene_hook_773.xml
│ │ │ │ ├── train_scene_hook_774.xml
│ │ │ │ ├── train_scene_hook_775.xml
│ │ │ │ ├── train_scene_hook_776.xml
│ │ │ │ ├── train_scene_hook_777.xml
│ │ │ │ ├── train_scene_hook_778.xml
│ │ │ │ ├── train_scene_hook_779.xml
│ │ │ │ ├── train_scene_hook_78.xml
│ │ │ │ ├── train_scene_hook_780.xml
│ │ │ │ ├── train_scene_hook_781.xml
│ │ │ │ ├── train_scene_hook_782.xml
│ │ │ │ ├── train_scene_hook_783.xml
│ │ │ │ ├── train_scene_hook_784.xml
│ │ │ │ ├── train_scene_hook_785.xml
│ │ │ │ ├── train_scene_hook_786.xml
│ │ │ │ ├── train_scene_hook_787.xml
│ │ │ │ ├── train_scene_hook_788.xml
│ │ │ │ ├── train_scene_hook_789.xml
│ │ │ │ ├── train_scene_hook_79.xml
│ │ │ │ ├── train_scene_hook_790.xml
│ │ │ │ ├── train_scene_hook_791.xml
│ │ │ │ ├── train_scene_hook_792.xml
│ │ │ │ ├── train_scene_hook_793.xml
│ │ │ │ ├── train_scene_hook_794.xml
│ │ │ │ ├── train_scene_hook_795.xml
│ │ │ │ ├── train_scene_hook_796.xml
│ │ │ │ ├── train_scene_hook_797.xml
│ │ │ │ ├── train_scene_hook_798.xml
│ │ │ │ ├── train_scene_hook_799.xml
│ │ │ │ ├── train_scene_hook_8.xml
│ │ │ │ ├── train_scene_hook_80.xml
│ │ │ │ ├── train_scene_hook_800.xml
│ │ │ │ ├── train_scene_hook_801.xml
│ │ │ │ ├── train_scene_hook_802.xml
│ │ │ │ ├── train_scene_hook_803.xml
│ │ │ │ ├── train_scene_hook_804.xml
│ │ │ │ ├── train_scene_hook_805.xml
│ │ │ │ ├── train_scene_hook_806.xml
│ │ │ │ ├── train_scene_hook_807.xml
│ │ │ │ ├── train_scene_hook_808.xml
│ │ │ │ ├── train_scene_hook_809.xml
│ │ │ │ ├── train_scene_hook_81.xml
│ │ │ │ ├── train_scene_hook_810.xml
│ │ │ │ ├── train_scene_hook_811.xml
│ │ │ │ ├── train_scene_hook_812.xml
│ │ │ │ ├── train_scene_hook_813.xml
│ │ │ │ ├── train_scene_hook_814.xml
│ │ │ │ ├── train_scene_hook_815.xml
│ │ │ │ ├── train_scene_hook_816.xml
│ │ │ │ ├── train_scene_hook_817.xml
│ │ │ │ ├── train_scene_hook_818.xml
│ │ │ │ ├── train_scene_hook_819.xml
│ │ │ │ ├── train_scene_hook_82.xml
│ │ │ │ ├── train_scene_hook_820.xml
│ │ │ │ ├── train_scene_hook_821.xml
│ │ │ │ ├── train_scene_hook_822.xml
│ │ │ │ ├── train_scene_hook_823.xml
│ │ │ │ ├── train_scene_hook_824.xml
│ │ │ │ ├── train_scene_hook_825.xml
│ │ │ │ ├── train_scene_hook_826.xml
│ │ │ │ ├── train_scene_hook_827.xml
│ │ │ │ ├── train_scene_hook_828.xml
│ │ │ │ ├── train_scene_hook_829.xml
│ │ │ │ ├── train_scene_hook_83.xml
│ │ │ │ ├── train_scene_hook_830.xml
│ │ │ │ ├── train_scene_hook_831.xml
│ │ │ │ ├── train_scene_hook_832.xml
│ │ │ │ ├── train_scene_hook_833.xml
│ │ │ │ ├── train_scene_hook_834.xml
│ │ │ │ ├── train_scene_hook_835.xml
│ │ │ │ ├── train_scene_hook_836.xml
│ │ │ │ ├── train_scene_hook_837.xml
│ │ │ │ ├── train_scene_hook_838.xml
│ │ │ │ ├── train_scene_hook_839.xml
│ │ │ │ ├── train_scene_hook_84.xml
│ │ │ │ ├── train_scene_hook_840.xml
│ │ │ │ ├── train_scene_hook_841.xml
│ │ │ │ ├── train_scene_hook_842.xml
│ │ │ │ ├── train_scene_hook_843.xml
│ │ │ │ ├── train_scene_hook_844.xml
│ │ │ │ ├── train_scene_hook_845.xml
│ │ │ │ ├── train_scene_hook_846.xml
│ │ │ │ ├── train_scene_hook_847.xml
│ │ │ │ ├── train_scene_hook_848.xml
│ │ │ │ ├── train_scene_hook_849.xml
│ │ │ │ ├── train_scene_hook_85.xml
│ │ │ │ ├── train_scene_hook_850.xml
│ │ │ │ ├── train_scene_hook_851.xml
│ │ │ │ ├── train_scene_hook_852.xml
│ │ │ │ ├── train_scene_hook_853.xml
│ │ │ │ ├── train_scene_hook_854.xml
│ │ │ │ ├── train_scene_hook_855.xml
│ │ │ │ ├── train_scene_hook_856.xml
│ │ │ │ ├── train_scene_hook_857.xml
│ │ │ │ ├── train_scene_hook_858.xml
│ │ │ │ ├── train_scene_hook_859.xml
│ │ │ │ ├── train_scene_hook_86.xml
│ │ │ │ ├── train_scene_hook_860.xml
│ │ │ │ ├── train_scene_hook_861.xml
│ │ │ │ ├── train_scene_hook_862.xml
│ │ │ │ ├── train_scene_hook_863.xml
│ │ │ │ ├── train_scene_hook_864.xml
│ │ │ │ ├── train_scene_hook_865.xml
│ │ │ │ ├── train_scene_hook_866.xml
│ │ │ │ ├── train_scene_hook_867.xml
│ │ │ │ ├── train_scene_hook_868.xml
│ │ │ │ ├── train_scene_hook_869.xml
│ │ │ │ ├── train_scene_hook_87.xml
│ │ │ │ ├── train_scene_hook_870.xml
│ │ │ │ ├── train_scene_hook_871.xml
│ │ │ │ ├── train_scene_hook_872.xml
│ │ │ │ ├── train_scene_hook_873.xml
│ │ │ │ ├── train_scene_hook_874.xml
│ │ │ │ ├── train_scene_hook_875.xml
│ │ │ │ ├── train_scene_hook_876.xml
│ │ │ │ ├── train_scene_hook_877.xml
│ │ │ │ ├── train_scene_hook_878.xml
│ │ │ │ ├── train_scene_hook_879.xml
│ │ │ │ ├── train_scene_hook_88.xml
│ │ │ │ ├── train_scene_hook_880.xml
│ │ │ │ ├── train_scene_hook_881.xml
│ │ │ │ ├── train_scene_hook_882.xml
│ │ │ │ ├── train_scene_hook_883.xml
│ │ │ │ ├── train_scene_hook_884.xml
│ │ │ │ ├── train_scene_hook_885.xml
│ │ │ │ ├── train_scene_hook_886.xml
│ │ │ │ ├── train_scene_hook_887.xml
│ │ │ │ ├── train_scene_hook_888.xml
│ │ │ │ ├── train_scene_hook_889.xml
│ │ │ │ ├── train_scene_hook_89.xml
│ │ │ │ ├── train_scene_hook_890.xml
│ │ │ │ ├── train_scene_hook_891.xml
│ │ │ │ ├── train_scene_hook_892.xml
│ │ │ │ ├── train_scene_hook_893.xml
│ │ │ │ ├── train_scene_hook_894.xml
│ │ │ │ ├── train_scene_hook_895.xml
│ │ │ │ ├── train_scene_hook_896.xml
│ │ │ │ ├── train_scene_hook_897.xml
│ │ │ │ ├── train_scene_hook_898.xml
│ │ │ │ ├── train_scene_hook_899.xml
│ │ │ │ ├── train_scene_hook_9.xml
│ │ │ │ ├── train_scene_hook_90.xml
│ │ │ │ ├── train_scene_hook_900.xml
│ │ │ │ ├── train_scene_hook_901.xml
│ │ │ │ ├── train_scene_hook_902.xml
│ │ │ │ ├── train_scene_hook_903.xml
│ │ │ │ ├── train_scene_hook_904.xml
│ │ │ │ ├── train_scene_hook_905.xml
│ │ │ │ ├── train_scene_hook_906.xml
│ │ │ │ ├── train_scene_hook_907.xml
│ │ │ │ ├── train_scene_hook_908.xml
│ │ │ │ ├── train_scene_hook_909.xml
│ │ │ │ ├── train_scene_hook_91.xml
│ │ │ │ ├── train_scene_hook_910.xml
│ │ │ │ ├── train_scene_hook_911.xml
│ │ │ │ ├── train_scene_hook_912.xml
│ │ │ │ ├── train_scene_hook_913.xml
│ │ │ │ ├── train_scene_hook_914.xml
│ │ │ │ ├── train_scene_hook_915.xml
│ │ │ │ ├── train_scene_hook_916.xml
│ │ │ │ ├── train_scene_hook_917.xml
│ │ │ │ ├── train_scene_hook_918.xml
│ │ │ │ ├── train_scene_hook_919.xml
│ │ │ │ ├── train_scene_hook_92.xml
│ │ │ │ ├── train_scene_hook_920.xml
│ │ │ │ ├── train_scene_hook_921.xml
│ │ │ │ ├── train_scene_hook_922.xml
│ │ │ │ ├── train_scene_hook_923.xml
│ │ │ │ ├── train_scene_hook_924.xml
│ │ │ │ ├── train_scene_hook_925.xml
│ │ │ │ ├── train_scene_hook_926.xml
│ │ │ │ ├── train_scene_hook_927.xml
│ │ │ │ ├── train_scene_hook_928.xml
│ │ │ │ ├── train_scene_hook_929.xml
│ │ │ │ ├── train_scene_hook_93.xml
│ │ │ │ ├── train_scene_hook_930.xml
│ │ │ │ ├── train_scene_hook_931.xml
│ │ │ │ ├── train_scene_hook_932.xml
│ │ │ │ ├── train_scene_hook_933.xml
│ │ │ │ ├── train_scene_hook_934.xml
│ │ │ │ ├── train_scene_hook_935.xml
│ │ │ │ ├── train_scene_hook_936.xml
│ │ │ │ ├── train_scene_hook_937.xml
│ │ │ │ ├── train_scene_hook_938.xml
│ │ │ │ ├── train_scene_hook_939.xml
│ │ │ │ ├── train_scene_hook_94.xml
│ │ │ │ ├── train_scene_hook_940.xml
│ │ │ │ ├── train_scene_hook_941.xml
│ │ │ │ ├── train_scene_hook_942.xml
│ │ │ │ ├── train_scene_hook_943.xml
│ │ │ │ ├── train_scene_hook_944.xml
│ │ │ │ ├── train_scene_hook_945.xml
│ │ │ │ ├── train_scene_hook_946.xml
│ │ │ │ ├── train_scene_hook_947.xml
│ │ │ │ ├── train_scene_hook_948.xml
│ │ │ │ ├── train_scene_hook_949.xml
│ │ │ │ ├── train_scene_hook_95.xml
│ │ │ │ ├── train_scene_hook_950.xml
│ │ │ │ ├── train_scene_hook_951.xml
│ │ │ │ ├── train_scene_hook_952.xml
│ │ │ │ ├── train_scene_hook_953.xml
│ │ │ │ ├── train_scene_hook_954.xml
│ │ │ │ ├── train_scene_hook_955.xml
│ │ │ │ ├── train_scene_hook_956.xml
│ │ │ │ ├── train_scene_hook_957.xml
│ │ │ │ ├── train_scene_hook_958.xml
│ │ │ │ ├── train_scene_hook_959.xml
│ │ │ │ ├── train_scene_hook_96.xml
│ │ │ │ ├── train_scene_hook_960.xml
│ │ │ │ ├── train_scene_hook_961.xml
│ │ │ │ ├── train_scene_hook_962.xml
│ │ │ │ ├── train_scene_hook_963.xml
│ │ │ │ ├── train_scene_hook_964.xml
│ │ │ │ ├── train_scene_hook_965.xml
│ │ │ │ ├── train_scene_hook_966.xml
│ │ │ │ ├── train_scene_hook_967.xml
│ │ │ │ ├── train_scene_hook_968.xml
│ │ │ │ ├── train_scene_hook_969.xml
│ │ │ │ ├── train_scene_hook_97.xml
│ │ │ │ ├── train_scene_hook_970.xml
│ │ │ │ ├── train_scene_hook_971.xml
│ │ │ │ ├── train_scene_hook_972.xml
│ │ │ │ ├── train_scene_hook_973.xml
│ │ │ │ ├── train_scene_hook_974.xml
│ │ │ │ ├── train_scene_hook_975.xml
│ │ │ │ ├── train_scene_hook_976.xml
│ │ │ │ ├── train_scene_hook_977.xml
│ │ │ │ ├── train_scene_hook_978.xml
│ │ │ │ ├── train_scene_hook_979.xml
│ │ │ │ ├── train_scene_hook_98.xml
│ │ │ │ ├── train_scene_hook_980.xml
│ │ │ │ ├── train_scene_hook_981.xml
│ │ │ │ ├── train_scene_hook_982.xml
│ │ │ │ ├── train_scene_hook_983.xml
│ │ │ │ ├── train_scene_hook_984.xml
│ │ │ │ ├── train_scene_hook_985.xml
│ │ │ │ ├── train_scene_hook_986.xml
│ │ │ │ ├── train_scene_hook_987.xml
│ │ │ │ ├── train_scene_hook_988.xml
│ │ │ │ ├── train_scene_hook_989.xml
│ │ │ │ ├── train_scene_hook_99.xml
│ │ │ │ ├── train_scene_hook_990.xml
│ │ │ │ ├── train_scene_hook_991.xml
│ │ │ │ ├── train_scene_hook_992.xml
│ │ │ │ ├── train_scene_hook_993.xml
│ │ │ │ ├── train_scene_hook_994.xml
│ │ │ │ ├── train_scene_hook_995.xml
│ │ │ │ ├── train_scene_hook_996.xml
│ │ │ │ ├── train_scene_hook_997.xml
│ │ │ │ ├── train_scene_hook_998.xml
│ │ │ │ └── train_scene_hook_999.xml
│ │ │ ├── hand
│ │ │ │ ├── manipulate_block.xml
│ │ │ │ ├── manipulate_egg.xml
│ │ │ │ ├── manipulate_pen.xml
│ │ │ │ ├── reach.xml
│ │ │ │ ├── robot.xml
│ │ │ │ ├── shared.xml
│ │ │ │ └── shared_asset.xml
│ │ │ └── stls
│ │ │ │ ├── fetch
│ │ │ │ ├── base_link_collision.stl
│ │ │ │ ├── bellows_link_collision.stl
│ │ │ │ ├── elbow_flex_link_collision.stl
│ │ │ │ ├── estop_link.stl
│ │ │ │ ├── forearm_roll_link_collision.stl
│ │ │ │ ├── gripper_link.stl
│ │ │ │ ├── head_pan_link_collision.stl
│ │ │ │ ├── head_tilt_link_collision.stl
│ │ │ │ ├── l_wheel_link_collision.stl
│ │ │ │ ├── laser_link.stl
│ │ │ │ ├── mujoco_models
│ │ │ │ │ ├── 1960_corvette.stl
│ │ │ │ │ ├── A_Ribbon.stl
│ │ │ │ │ ├── Banana_Scale.stl
│ │ │ │ │ ├── Bishop.stl
│ │ │ │ │ ├── Body1.stl
│ │ │ │ │ ├── Cherry_MX_Cap.stl
│ │ │ │ │ ├── Cube_Stand.stl
│ │ │ │ │ ├── DiningTableRound.stl
│ │ │ │ │ ├── Dodecagon_Cup2_3D_Aaron_Berg.stl
│ │ │ │ │ ├── Dodecahedron.stl
│ │ │ │ │ ├── Epic_Crift.stl
│ │ │ │ │ ├── Fadenöler.stl
│ │ │ │ │ ├── Filament_Spool_Leveler.stl
│ │ │ │ │ ├── Filtre_filament.stl
│ │ │ │ │ ├── Furnace_block_MC.stl
│ │ │ │ │ ├── Gengar.stl
│ │ │ │ │ ├── Hendecagonal_prism.stl
│ │ │ │ │ ├── Hot_Tub_Drain_Cover.stl
│ │ │ │ │ ├── Incense_Holder_final.stl
│ │ │ │ │ ├── Keysafe.stl
│ │ │ │ │ ├── King.stl
│ │ │ │ │ ├── Lightbulb_Socket.stl
│ │ │ │ │ ├── LotusBowl01.stl
│ │ │ │ │ ├── Love_Box_1.stl
│ │ │ │ │ ├── LowPolySchildkroete.stl
│ │ │ │ │ ├── Low_Poly_Bowl.stl
│ │ │ │ │ ├── Low_poly_bowl_or_cup.stl
│ │ │ │ │ ├── ModernSlipper.stl
│ │ │ │ │ ├── Octahedron.stl
│ │ │ │ │ ├── Planter_Cauldron.stl
│ │ │ │ │ ├── Queen.stl
│ │ │ │ │ ├── Rabbit_Complete.stl
│ │ │ │ │ ├── Recycle_Bin_For_Cans.stl
│ │ │ │ │ ├── Rook.stl
│ │ │ │ │ ├── SEG-JellyFish.stl
│ │ │ │ │ ├── Salty_Body.stl
│ │ │ │ │ ├── Simple_Filament_Guide.stl
│ │ │ │ │ ├── Simplus_FORMA_NapkinRing_mm.stl
│ │ │ │ │ ├── Sponge_Holder.stl
│ │ │ │ │ ├── Stackable_Square_Container.stl
│ │ │ │ │ ├── Stepped_Pencil_Holder.stl
│ │ │ │ │ ├── Sunglasses.stl
│ │ │ │ │ ├── TD_Mushroom_cap.stl
│ │ │ │ │ ├── Thumb_Screw.stl
│ │ │ │ │ ├── Tree_1_pot.stl
│ │ │ │ │ ├── Tree_1_soil.stl
│ │ │ │ │ ├── Tree_2_pot.stl
│ │ │ │ │ ├── Tree_2_tree.stl
│ │ │ │ │ ├── Tree_3_pot_HD_base.stl
│ │ │ │ │ ├── Tree_4_soil.stl
│ │ │ │ │ ├── Tree_4_tree.stl
│ │ │ │ │ ├── Triforce.stl
│ │ │ │ │ ├── Trophy.stl
│ │ │ │ │ ├── VOLCANO.stl
│ │ │ │ │ ├── Vase_Lamp.stl
│ │ │ │ │ ├── Vase_Mode.stl
│ │ │ │ │ ├── WillTankGrey.stl
│ │ │ │ │ ├── adptador_grifo.stl
│ │ │ │ │ ├── apple_watch_stand_1.stl
│ │ │ │ │ ├── ash_tray_with_design.stl
│ │ │ │ │ ├── ball_holder.stl
│ │ │ │ │ ├── banana_print.stl
│ │ │ │ │ ├── boozefighterbottle_actual_bottle.stl
│ │ │ │ │ ├── brilliant_turing4.stl
│ │ │ │ │ ├── candle_holder.stl
│ │ │ │ │ ├── chair_sds2.stl
│ │ │ │ │ ├── charizard_.stl
│ │ │ │ │ ├── circ-sq-tri.stl
│ │ │ │ │ ├── coin_trap_penny.stl
│ │ │ │ │ ├── dodecagonal_prism.stl
│ │ │ │ │ ├── famicon-port-cover.stl
│ │ │ │ │ ├── fox.stl
│ │ │ │ │ ├── galan_trémolet_.stl
│ │ │ │ │ ├── giraffe.stl
│ │ │ │ │ ├── grendae.stl
│ │ │ │ │ ├── heXS34oh3pk.stl
│ │ │ │ │ ├── hexagonal_prism.stl
│ │ │ │ │ ├── hollow_cylinder_20mm.stl
│ │ │ │ │ ├── hubble_model_kit_1.stl
│ │ │ │ │ ├── hubble_model_kit_2.stl
│ │ │ │ │ ├── hubble_model_kit_3.stl
│ │ │ │ │ ├── hubble_model_kit_5.stl
│ │ │ │ │ ├── hubble_model_kit_6.stl
│ │ │ │ │ ├── hubble_model_kit_7.stl
│ │ │ │ │ ├── joshuaoiltankerwhite.stl
│ │ │ │ │ ├── liberty_grille.stl
│ │ │ │ │ ├── lspike2.stl
│ │ │ │ │ ├── mug.stl
│ │ │ │ │ ├── nidoran_01.stl
│ │ │ │ │ ├── nonagonal_pyramid.stl
│ │ │ │ │ ├── omino_lego_head.stl
│ │ │ │ │ ├── pentagonal_prism.stl
│ │ │ │ │ ├── pikachu_dual_body.stl
│ │ │ │ │ ├── pot_of_gold_handles_rev2.stl
│ │ │ │ │ ├── quilava_with_frills.stl
│ │ │ │ │ ├── stormtrooper_pencil_holder.stl
│ │ │ │ │ ├── strainer.stl
│ │ │ │ │ ├── stunning_jarv-turing.stl
│ │ │ │ │ ├── tesaract.stl
│ │ │ │ │ ├── test_objs
│ │ │ │ │ │ ├── Album_Cube.stl
│ │ │ │ │ │ ├── Elephant.stl
│ │ │ │ │ │ ├── Knight.stl
│ │ │ │ │ │ ├── Low_poly_Teddy_bear.stl
│ │ │ │ │ │ ├── Pawn.stl
│ │ │ │ │ │ ├── PufferFull.stl
│ │ │ │ │ │ ├── Recycle_Soda_Can.stl
│ │ │ │ │ │ ├── boat_2.stl
│ │ │ │ │ │ ├── cupcake.stl
│ │ │ │ │ │ ├── octagonal_prism.stl
│ │ │ │ │ │ └── styrofoam_cup.stl
│ │ │ │ │ ├── toy_boat_xyz_with_guns.stl
│ │ │ │ │ ├── train_obj_license.txt
│ │ │ │ │ ├── triangular_prism.stl
│ │ │ │ │ ├── turtle-dock.stl
│ │ │ │ │ ├── vase1.stl
│ │ │ │ │ ├── vaso_5facce_v2_noforo.stl
│ │ │ │ │ └── wacom_intuos_draw_pen_holder.stl
│ │ │ │ ├── r_wheel_link_collision.stl
│ │ │ │ ├── shoulder_lift_link_collision.stl
│ │ │ │ ├── shoulder_pan_link_collision.stl
│ │ │ │ ├── torso_fixed_link.stl
│ │ │ │ ├── torso_lift_link_collision.stl
│ │ │ │ ├── upperarm_roll_link_collision.stl
│ │ │ │ ├── wrist_flex_link_collision.stl
│ │ │ │ └── wrist_roll_link_collision.stl
│ │ │ │ └── hand
│ │ │ │ ├── F1.stl
│ │ │ │ ├── F2.stl
│ │ │ │ ├── F3.stl
│ │ │ │ ├── TH1_z.stl
│ │ │ │ ├── TH2_z.stl
│ │ │ │ ├── TH3_z.stl
│ │ │ │ ├── forearm_electric.stl
│ │ │ │ ├── forearm_electric_cvx.stl
│ │ │ │ ├── knuckle.stl
│ │ │ │ ├── lfmetacarpal.stl
│ │ │ │ ├── palm.stl
│ │ │ │ └── wrist.stl
│ │ ├── hook.xml
│ │ ├── pusher.xml
│ │ ├── robot.xml
│ │ ├── shared.xml
│ │ ├── stls
│ │ │ ├── base_link_collision.stl
│ │ │ ├── bellows_link_collision.stl
│ │ │ ├── elbow_flex_link_collision.stl
│ │ │ ├── estop_link.stl
│ │ │ ├── forearm_roll_link_collision.stl
│ │ │ ├── gripper_link.stl
│ │ │ ├── head_pan_link_collision.stl
│ │ │ ├── head_tilt_link_collision.stl
│ │ │ ├── l_wheel_link_collision.stl
│ │ │ ├── laser_link.stl
│ │ │ ├── r_wheel_link_collision.stl
│ │ │ ├── shoulder_lift_link_collision.stl
│ │ │ ├── shoulder_pan_link_collision.stl
│ │ │ ├── torso_fixed_link.stl
│ │ │ ├── torso_lift_link_collision.stl
│ │ │ ├── upperarm_roll_link_collision.stl
│ │ │ ├── wrist_flex_link_collision.stl
│ │ │ └── wrist_roll_link_collision.stl
│ │ └── textures
│ │ │ ├── block.png
│ │ │ └── block_hidden.png
│ │ ├── complex_hook_env.py
│ │ ├── fetch_hook_env.py
│ │ ├── hook_controller.py
│ │ ├── miscalibrated_push_controller.py
│ │ ├── mpc_controller.py
│ │ ├── oscillating_pick_and_place_controller.py
│ │ ├── other_push_env.py
│ │ ├── pick_and_place_controller.py
│ │ ├── push_database_controller.py
│ │ ├── residual_fetch_pick_and_place_env.py
│ │ ├── residual_fetch_push_env.py
│ │ └── residual_mpc_push_env.py
└── setup.py
└── tensorflow
├── .DS_Store
├── ._.DS_Store
└── experiment
├── .DS_Store
├── ._.DS_Store
├── ._out.png
├── ._submit_hooks.sbatch
├── __init__.py
├── configs
├── config.py
├── config_copy.py
├── config_expert_mix.py
├── config_expert_mix_hook.py
├── config_expert_mix_push.py
├── config_her.py
├── config_push.py
├── config_residual_base.py
├── config_standard_hook.py
├── config_standard_pickandplace.py
├── config_standard_push.py
├── config_two_frame.py
├── hook.json
├── hook_expert_explore.json
├── pickandplace.json
├── push.json
└── push_expert_explore.json
├── create_plots.py
├── ddpg_controller.py
├── ddpg_controller_residual_base.py
├── models
├── actor_critic_avg.py
├── actor_critic_combined.py
├── actor_critic_copy_policy.py
├── actor_critic_freeze_base.py
├── actor_critic_last_zeros.py
└── utils.py
├── plot_baselines.py
├── rollout_controller.py
├── run_all_experiments.sh
├── submit_all_experiments.sh
├── train_residual_base.py
└── train_staged.py
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | *.png
3 | *.sh
4 | *.zip
5 | __pycache__
6 | gym-residual-fetch/gym_residual_fetch.egg-info
7 | assets/fetch_complex_objects
8 | venv/
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Residual Policy Learning
2 | ## Tom Silver\*, Kelsey Allen\*, Josh Tenenbaum, Leslie Kaelbling
3 |
4 | ## Abstract
5 | We present Residual Policy Learning (RPL): a simple method for improving nondifferentiable policies using model-free deep reinforcement learning. RPL thrives in complex robotic manipulation tasks where good but imperfect controllers are available. In these tasks, reinforcement learning from scratch remains data-inefficient or intractable, but learning a *residual* on top of the initial controller can yield substantial improvements. We study RPL in six challenging MuJoCo tasks involving partial observability, sensor noise, model misspecification, and controller miscalibration. For initial controllers, we consider both hand-designed policies and model-predictive controllers with known or learned transition models. By combining learning with control algorithms, RPL can perform long-horizon, sparse-reward tasks for which reinforcement learning alone fails. Moreover, we find that RPL consistently and substantially improves on the initial controllers. We argue that RPL is a promising approach for combining the complementary strengths of deep reinforcement learning and robotic control, pushing the boundaries of what either can achieve independently.
6 |
7 | ## arXiv
8 | https://arxiv.org/abs/1812.06298
9 |
10 | ## Website
11 | https://k-r-allen.github.io/residual-policy-learning/
12 |
13 | ## System Requirements
14 | We use Python 3.5.6 on Ubuntu 18.04 and macOS High Sierra. Other setups may work but have not been tested.
15 |
16 | ## Using the Environments Only
17 |
18 | ### Installation
19 | First follow [the instructions](https://github.com/openai/mujoco-py) to install MuJoCo (mjpro 150) and mujoco-py.
20 |
21 | We had issues on some machines installing mujoco-py with pip. These issues were resolved by installing from source. To match our version exactly, you can do
22 | ```
23 | pip install -e git+https://github.com/openai/mujoco-py@a9f563cbb81d45f2379c6bcc4a4cd73fac09c4be#egg=mujoco_py
24 | ```
25 |
26 | Next:
27 | ```
28 | cd rpl_environments
29 | pip install -e .
30 | ```
31 |
32 | *Note*: the `ComplexHook` environment requires a large zip file with MuJoCo xml and stl files. To use this environment, please download [fetch_complex_objects.zip](http://web.mit.edu/tslvr/www/fetch_complex_objects.zip) and unzip it in `rpl_environments/rpl_environments/envs/assets` (replacing the existing directory with the same name). The file is about 718 MB. For example:
33 |
34 | ```
35 | cd rpl_environments/rpl_environments/envs/assets
36 | rm -rf fetch_complex_objects
37 | wget http://web.mit.edu/tslvr/www/fetch_complex_objects.zip
38 | unzip fetch_complex_objects.zip
39 | ```
40 |
41 | ### Usage Examples
42 | ```
43 | import gym
44 | import rpl_environments
45 |
46 | for env_name in ["SlipperyPush-v0", "FetchHook-v0", "TwoFrameHookNoisy-v0", "ComplexHook-v0"]:
47 | env = gym.make(env_name)
48 | obs = env.reset()
49 | env.render()
50 | for _ in range(50):
51 | action = env.action_space.sample()
52 | obs, reward, done, debug_info = env.step(action)
53 | env.render()
54 | ```
55 |
56 | ## Reproducing the Experiments
57 |
58 | ### Install
59 | First follow the installation instructions for the RPL environments above.
60 |
61 | Next visit [https://github.com/openai/baselines](https://github.com/openai/baselines) and install their prerequisites. To match our version of baselines exactly, you can do:
62 |
63 | ```
64 | pip install -e git+https://github.com/openai/baselines.git@c28acb22030f594f94d128bf47b489cc704f593e#egg=baselines
65 | ```
66 |
67 | To use the plotting code, you will also need matplotlib, pandas, and seaborn.
68 |
69 | ### Usage Examples
70 |
71 | See `tensorflow/experiments/run_all_experiments.sh`.
72 |
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-cayman
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Residual Policy Learning | residual-policy-learning
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
30 |
31 |
32 | Residual Policy Learning
33 | Tom Silver*, Kelsey Allen*, Josh Tenenbaum, Leslie Kaelbling
34 |
35 | We present Residual Policy Learning (RPL): a simple method for improving nondifferentiable policies using model-free deep reinforcement learning. RPL thrives in complex robotic manipulation tasks where good but imperfect controllers are available. In these tasks, reinforcement learning from scratch remains data-inefficient or intractable, but learning a residual on top of the initial controller can yield substantial improvements. We study RPL in six challenging MuJoCo tasks involving partial observability, sensor noise, model misspecification, and controller miscalibration. For initial controllers, we consider both hand-designed policies and model-predictive controllers with known or learned transition models. By combining learning with control algorithms, RPL can perform long-horizon, sparse-reward tasks for which reinforcement learning alone fails. Moreover, we find that RPL consistently and substantially improves on the initial controllers. We argue that RPL is a promising approach for combining the complementary strengths of deep reinforcement learning and robotic control, pushing the boundaries of what either can achieve independently.
36 |
37 | Link to the arXiv
38 | http://arxiv.org/abs/1812.06298
39 |
40 | Code
41 | https://github.com/k-r-allen/residual-policy-learning
42 |
43 | Residual Policy Learning Video
44 | VIDEO
45 |
46 |
52 |
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | ---
4 |
5 | # Residual Policy Learning
6 | ## Tom Silver\*, Kelsey Allen\*, Josh Tenenbaum, Leslie Kaelbling
7 |
8 | We present Residual Policy Learning (RPL): a simple method for improving nondifferentiable policies using model-free deep reinforcement learning. RPL thrives in complex robotic manipulation tasks where good but imperfect controllers are available. In these tasks, reinforcement learning from scratch remains data-inefficient or intractable, but learning a __residual__ on top of the initial controller can yield substantial improvement. We study RPL in five challenging MuJoCo tasks involving partial observability, sensor noise, model misspecification, and controller miscalibration. By combining learning with control algorithms, RPL can perform long-horizon, sparse-reward tasks for which reinforcement learning alone fails. Moreover, we find that RPL consistently and substantially improves on the initial controllers. We argue that RPL is a promising approach for combining the complementary strengths of deep reinforcement learning and robotic control, pushing the boundaries of what either can achieve independently
9 |
10 | ## Link to the arXiv
11 | [http://arxiv.org/abs/1812.06298](http://arxiv.org/abs/1812.06298)
12 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | -e git+https://github.com/openai/mujoco-py@a9f563cbb81d45f2379c6bcc4a4cd73fac09c4be#egg=mujoco_py
2 | numpy==1.14.5
3 | gym==0.10.9
4 | matplotlib==3.0.0
5 | pandas==0.23.4
6 | seaborn==0.9.0
7 | -e git+https://github.com/openai/baselines.git@c28acb22030f594f94d128bf47b489cc704f593e#egg=baselines
8 | mpi4py==3.0.0
9 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/__init__.py:
--------------------------------------------------------------------------------
1 | from gym.envs.registration import register
2 |
3 |
4 | register(
5 | id='ResidualFetchPickAndPlace-v0',
6 | entry_point='rpl_environments.envs:ResidualFetchPickAndPlaceEnv',
7 | timestep_limit=50,
8 | )
9 |
10 | register(
11 | id='ResidualSlipperyPush-v0',
12 | entry_point='rpl_environments.envs:ResidualSlipperyPushEnv',
13 | timestep_limit=50,
14 | )
15 |
16 | register(
17 | id='SlipperyPush-v0',
18 | entry_point='rpl_environments.envs:SlipperyPushEnv',
19 | timestep_limit=50,
20 | )
21 |
22 | register(
23 | id='FetchHook-v0',
24 | entry_point='rpl_environments.envs:FetchHookEnv',
25 | timestep_limit=100,
26 | )
27 |
28 | register(
29 | id='ResidualFetchHook-v0',
30 | entry_point='rpl_environments.envs:ResidualFetchHookEnv',
31 | timestep_limit=100,
32 | )
33 |
34 | register(
35 | id='TwoFrameResidualHookNoisy-v0',
36 | entry_point='rpl_environments.envs:TwoFrameResidualHookNoisyEnv',
37 | timestep_limit=100,
38 | )
39 |
40 | register(
41 | id='TwoFrameHookNoisy-v0',
42 | entry_point='rpl_environments.envs:TwoFrameHookNoisyEnv',
43 | timestep_limit=100,
44 | )
45 |
46 | register(
47 | id='ResidualMPCPush-v0',
48 | entry_point='rpl_environments.envs:ResidualMPCPushEnv',
49 | timestep_limit=50,
50 | )
51 |
52 | register(
53 | id='MPCPush-v0',
54 | entry_point='rpl_environments.envs:MPCPushEnv',
55 | timestep_limit=50,
56 | )
57 |
58 | register(
59 | id='OtherPusherEnv-v0',
60 | entry_point='rpl_environments.envs:PusherEnv',
61 | timestep_limit=150,
62 | )
63 |
64 | register(
65 | id='ResidualOtherPusherEnv-v0',
66 | entry_point='rpl_environments.envs:ResidualPusherEnv',
67 | timestep_limit=150,
68 | )
69 |
70 | register(
71 | id='ComplexHook-v0',
72 | entry_point='rpl_environments.envs:ComplexHookEnv',
73 | timestep_limit=100,
74 | )
75 |
76 | register(
77 | id='ResidualComplexHook-v0',
78 | entry_point='rpl_environments.envs:ResidualComplexHookEnv',
79 | timestep_limit=100,
80 | )
81 |
82 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/PusherEnv_database_500samples.npy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/PusherEnv_database_500samples.npy
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/__init__.py:
--------------------------------------------------------------------------------
1 | from rpl_environments.envs.residual_fetch_pick_and_place_env import ResidualFetchPickAndPlaceEnv
2 | from rpl_environments.envs.residual_fetch_push_env import SlipperyPushEnv, ResidualSlipperyPushEnv
3 | from rpl_environments.envs.fetch_hook_env import FetchHookEnv, TwoFrameResidualHookNoisyEnv, TwoFrameHookNoisyEnv, NoisyFetchHookEnv
4 | from rpl_environments.envs.residual_mpc_push_env import ResidualMPCPushEnv, MPCPushEnv
5 | from rpl_environments.envs.other_push_env import PusherEnv, ResidualPusherEnv
6 | from rpl_environments.envs.complex_hook_env import ComplexHookEnv, ResidualComplexHookEnv
7 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/fetch/pick_and_place.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/fetch/push.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/fetch/reach.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/fetch/slide.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/fetch/train_scene_hook_111.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/fetch/train_scene_hook_271.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/fetch/train_scene_hook_330.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/fetch/train_scene_hook_370.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/fetch/train_scene_hook_453.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/fetch/train_scene_hook_470.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/fetch/train_scene_hook_628.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/fetch/train_scene_hook_646.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/fetch/train_scene_hook_703.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/fetch/train_scene_hook_787.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/fetch/train_scene_hook_811.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/fetch/train_scene_hook_830.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/fetch/train_scene_hook_838.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/fetch/train_scene_hook_943.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/fetch/train_scene_hook_948.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/fetch/train_scene_hook_98.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/fetch/train_scene_hook_988.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/hand/manipulate_block.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/hand/manipulate_egg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/hand/manipulate_pen.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/hand/reach.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/hand/shared_asset.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/base_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/base_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/bellows_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/bellows_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/elbow_flex_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/elbow_flex_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/estop_link.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/estop_link.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/forearm_roll_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/forearm_roll_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/gripper_link.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/gripper_link.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/head_pan_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/head_pan_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/head_tilt_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/head_tilt_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/l_wheel_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/l_wheel_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/laser_link.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/laser_link.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/1960_corvette.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/1960_corvette.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/A_Ribbon.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/A_Ribbon.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Banana_Scale.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Banana_Scale.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Bishop.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Bishop.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Body1.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Body1.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Cherry_MX_Cap.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Cherry_MX_Cap.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Cube_Stand.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Cube_Stand.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/DiningTableRound.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/DiningTableRound.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Dodecagon_Cup2_3D_Aaron_Berg.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Dodecagon_Cup2_3D_Aaron_Berg.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Dodecahedron.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Dodecahedron.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Epic_Crift.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Epic_Crift.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Fadenöler.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Fadenöler.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Filament_Spool_Leveler.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Filament_Spool_Leveler.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Filtre_filament.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Filtre_filament.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Furnace_block_MC.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Furnace_block_MC.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Gengar.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Gengar.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Hendecagonal_prism.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Hendecagonal_prism.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Hot_Tub_Drain_Cover.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Hot_Tub_Drain_Cover.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Incense_Holder_final.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Incense_Holder_final.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Keysafe.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Keysafe.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/King.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/King.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Lightbulb_Socket.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Lightbulb_Socket.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/LotusBowl01.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/LotusBowl01.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Love_Box_1.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Love_Box_1.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/LowPolySchildkroete.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/LowPolySchildkroete.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Low_Poly_Bowl.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Low_Poly_Bowl.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Low_poly_bowl_or_cup.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Low_poly_bowl_or_cup.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/ModernSlipper.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/ModernSlipper.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Octahedron.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Octahedron.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Planter_Cauldron.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Planter_Cauldron.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Queen.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Queen.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Rabbit_Complete.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Rabbit_Complete.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Recycle_Bin_For_Cans.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Recycle_Bin_For_Cans.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Rook.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Rook.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/SEG-JellyFish.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/SEG-JellyFish.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Salty_Body.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Salty_Body.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Simple_Filament_Guide.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Simple_Filament_Guide.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Simplus_FORMA_NapkinRing_mm.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Simplus_FORMA_NapkinRing_mm.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Sponge_Holder.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Sponge_Holder.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Stackable_Square_Container.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Stackable_Square_Container.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Stepped_Pencil_Holder.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Stepped_Pencil_Holder.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Sunglasses.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Sunglasses.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/TD_Mushroom_cap.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/TD_Mushroom_cap.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Thumb_Screw.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Thumb_Screw.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Tree_1_pot.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Tree_1_pot.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Tree_1_soil.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Tree_1_soil.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Tree_2_pot.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Tree_2_pot.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Tree_2_tree.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Tree_2_tree.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Tree_3_pot_HD_base.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Tree_3_pot_HD_base.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Tree_4_soil.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Tree_4_soil.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Tree_4_tree.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Tree_4_tree.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Triforce.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Triforce.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Trophy.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Trophy.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/VOLCANO.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/VOLCANO.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Vase_Lamp.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Vase_Lamp.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Vase_Mode.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/Vase_Mode.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/WillTankGrey.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/WillTankGrey.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/adptador_grifo.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/adptador_grifo.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/apple_watch_stand_1.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/apple_watch_stand_1.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/ash_tray_with_design.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/ash_tray_with_design.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/ball_holder.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/ball_holder.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/banana_print.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/banana_print.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/boozefighterbottle_actual_bottle.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/boozefighterbottle_actual_bottle.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/brilliant_turing4.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/brilliant_turing4.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/candle_holder.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/candle_holder.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/chair_sds2.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/chair_sds2.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/charizard_.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/charizard_.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/circ-sq-tri.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/circ-sq-tri.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/coin_trap_penny.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/coin_trap_penny.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/dodecagonal_prism.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/dodecagonal_prism.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/famicon-port-cover.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/famicon-port-cover.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/fox.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/fox.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/galan_trémolet_.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/galan_trémolet_.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/giraffe.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/giraffe.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/grendae.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/grendae.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/heXS34oh3pk.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/heXS34oh3pk.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/hexagonal_prism.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/hexagonal_prism.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/hollow_cylinder_20mm.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/hollow_cylinder_20mm.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/hubble_model_kit_1.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/hubble_model_kit_1.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/hubble_model_kit_2.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/hubble_model_kit_2.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/hubble_model_kit_3.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/hubble_model_kit_3.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/hubble_model_kit_5.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/hubble_model_kit_5.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/hubble_model_kit_6.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/hubble_model_kit_6.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/hubble_model_kit_7.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/hubble_model_kit_7.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/joshuaoiltankerwhite.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/joshuaoiltankerwhite.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/liberty_grille.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/liberty_grille.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/lspike2.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/lspike2.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/mug.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/mug.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/nidoran_01.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/nidoran_01.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/nonagonal_pyramid.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/nonagonal_pyramid.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/omino_lego_head.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/omino_lego_head.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/pentagonal_prism.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/pentagonal_prism.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/pikachu_dual_body.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/pikachu_dual_body.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/pot_of_gold_handles_rev2.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/pot_of_gold_handles_rev2.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/quilava_with_frills.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/quilava_with_frills.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/stormtrooper_pencil_holder.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/stormtrooper_pencil_holder.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/strainer.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/strainer.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/stunning_jarv-turing.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/stunning_jarv-turing.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/tesaract.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/tesaract.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/test_objs/Album_Cube.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/test_objs/Album_Cube.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/test_objs/Elephant.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/test_objs/Elephant.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/test_objs/Knight.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/test_objs/Knight.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/test_objs/Low_poly_Teddy_bear.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/test_objs/Low_poly_Teddy_bear.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/test_objs/Pawn.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/test_objs/Pawn.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/test_objs/PufferFull.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/test_objs/PufferFull.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/test_objs/Recycle_Soda_Can.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/test_objs/Recycle_Soda_Can.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/test_objs/boat_2.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/test_objs/boat_2.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/test_objs/cupcake.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/test_objs/cupcake.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/test_objs/octagonal_prism.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/test_objs/octagonal_prism.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/test_objs/styrofoam_cup.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/test_objs/styrofoam_cup.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/toy_boat_xyz_with_guns.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/toy_boat_xyz_with_guns.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/train_obj_license.txt:
--------------------------------------------------------------------------------
1 | train_obj_license
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/triangular_prism.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/triangular_prism.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/turtle-dock.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/turtle-dock.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/vase1.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/vase1.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/vaso_5facce_v2_noforo.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/vaso_5facce_v2_noforo.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/wacom_intuos_draw_pen_holder.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/mujoco_models/wacom_intuos_draw_pen_holder.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/r_wheel_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/r_wheel_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/shoulder_lift_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/shoulder_lift_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/shoulder_pan_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/shoulder_pan_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/torso_fixed_link.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/torso_fixed_link.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/torso_lift_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/torso_lift_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/upperarm_roll_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/upperarm_roll_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/wrist_flex_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/wrist_flex_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/wrist_roll_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/fetch/wrist_roll_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/F1.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/F1.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/F2.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/F2.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/F3.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/F3.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/TH1_z.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/TH1_z.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/TH2_z.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/TH2_z.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/TH3_z.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/TH3_z.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/forearm_electric.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/forearm_electric.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/forearm_electric_cvx.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/forearm_electric_cvx.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/knuckle.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/knuckle.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/lfmetacarpal.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/lfmetacarpal.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/palm.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/palm.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/wrist.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/fetch_complex_objects/stls/hand/wrist.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/hook.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/stls/base_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/stls/base_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/stls/bellows_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/stls/bellows_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/stls/elbow_flex_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/stls/elbow_flex_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/stls/estop_link.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/stls/estop_link.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/stls/forearm_roll_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/stls/forearm_roll_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/stls/gripper_link.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/stls/gripper_link.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/stls/head_pan_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/stls/head_pan_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/stls/head_tilt_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/stls/head_tilt_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/stls/l_wheel_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/stls/l_wheel_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/stls/laser_link.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/stls/laser_link.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/stls/r_wheel_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/stls/r_wheel_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/stls/shoulder_lift_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/stls/shoulder_lift_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/stls/shoulder_pan_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/stls/shoulder_pan_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/stls/torso_fixed_link.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/stls/torso_fixed_link.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/stls/torso_lift_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/stls/torso_lift_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/stls/upperarm_roll_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/stls/upperarm_roll_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/stls/wrist_flex_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/stls/wrist_flex_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/stls/wrist_roll_link_collision.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/stls/wrist_roll_link_collision.stl
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/textures/block.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/textures/block.png
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/assets/textures/block_hidden.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/rpl_environments/rpl_environments/envs/assets/textures/block_hidden.png
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/miscalibrated_push_controller.py:
--------------------------------------------------------------------------------
1 | from .pick_and_place_controller import get_move_action
2 |
3 | import numpy as np
4 |
5 | DEBUG = False
6 |
7 |
8 | def get_push_control(obs, atol=1e-3, block_width=0.15, workspace_height=0.1):
9 |
10 | gripper_position = obs['observation'][:3]
11 | block_position = obs['observation'][3:6]
12 | goal = obs['desired_goal']
13 |
14 | desired_block_angle = np.arctan2(goal[0] - block_position[0], goal[1] - block_position[1])
15 | gripper_angle = np.arctan2(goal[0] - gripper_position[0], goal[1] - gripper_position[1])
16 |
17 | push_position = block_position.copy()
18 | push_position[0] += -1. * np.sin(desired_block_angle) * block_width / 2.
19 | push_position[1] += -1. * np.cos(desired_block_angle) * block_width / 2.
20 | push_position[2] += 0.005
21 |
22 | # If the block is already at the place position, do nothing
23 | if np.sum(np.subtract(block_position, goal)**2) < atol:
24 | if DEBUG:
25 | print("The block is already at the place position; do nothing")
26 | return np.array([0., 0., 0., 0.])
27 |
28 | # Angle between gripper and goal vs block and goal is roughly the same
29 | angle_diff = abs((desired_block_angle - gripper_angle + np.pi) % (2*np.pi) - np.pi)
30 |
31 | gripper_sq_distance = (gripper_position[0] - goal[0])**2 + (gripper_position[1] - goal[1])**2
32 | block_sq_distance = (block_position[0] - goal[0])**2 + (block_position[1] - goal[1])**2
33 |
34 | if (gripper_position[2] - push_position[2])**2 < atol and angle_diff < np.pi/4 and block_sq_distance < gripper_sq_distance:
35 |
36 | # Push towards the goal
37 | target_position = goal
38 | target_position[2] = gripper_position[2]
39 | if DEBUG:
40 | print("Push")
41 | return get_move_action(obs, target_position, atol=atol, gain=5.0)
42 |
43 | # If the gripper is above the push position
44 | if (gripper_position[0] - push_position[0])**2 + (gripper_position[1] - push_position[1])**2 < atol:
45 |
46 | # Move down to prepare for push
47 | if DEBUG:
48 | print("Move down to prepare for push")
49 | return get_move_action(obs, push_position, atol=atol)
50 |
51 |
52 | # Else move the gripper to above the push
53 | target_position = push_position.copy()
54 | target_position[2] += workspace_height
55 | if DEBUG:
56 | print("Move to above the push position")
57 |
58 | return get_move_action(obs, target_position, atol=atol)
59 |
60 |
61 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/oscillating_pick_and_place_controller.py:
--------------------------------------------------------------------------------
1 | import numpy as np
2 |
3 | DEBUG = False
4 |
5 | def get_move_action(observation, target_position, atol=1e-3, gain=10., close_gripper=False):
6 | """
7 | Move an end effector to a position and orientation.
8 | """
9 | # Get the currents
10 | current_position = observation['observation'][:3]
11 |
12 | action = gain * np.subtract(target_position, current_position)
13 | if close_gripper:
14 | gripper_action = -1.
15 | else:
16 | gripper_action = 0.
17 | action = np.hstack((action, gripper_action))
18 |
19 | return action
20 |
21 | def block_is_grasped(obs, relative_grasp_position, atol=1e-3):
22 | return block_inside_grippers(obs, relative_grasp_position, atol=atol) and grippers_are_closed(obs, atol=atol)
23 |
24 | def block_inside_grippers(obs, relative_grasp_position, atol=1e-3):
25 | gripper_position = obs['observation'][:3]
26 | block_position = obs['observation'][3:6]
27 |
28 | relative_position = np.subtract(gripper_position, block_position)
29 |
30 | return np.sum(np.subtract(relative_position, relative_grasp_position)**2) < atol
31 |
32 | def grippers_are_closed(obs, atol=1e-3):
33 | gripper_state = obs['observation'][9:11]
34 | return abs(gripper_state[0] - 0.024) < atol
35 |
36 | def grippers_are_open(obs, atol=1e-3):
37 | gripper_state = obs['observation'][9:11]
38 | return abs(gripper_state[0] - 0.05) < atol
39 |
40 | def get_pick_and_place_control(obs, relative_grasp_position=(0., 0., -0.02), workspace_height=0.1, atol=1e-3, gain=50.):
41 | """
42 | Returns
43 | -------
44 | action : [float] * 4
45 | """
46 | gripper_position = obs['observation'][:3]
47 | block_position = obs['observation'][3:6]
48 | place_position = obs['desired_goal']
49 |
50 | # If the gripper is already grasping the block
51 | if block_is_grasped(obs, relative_grasp_position, atol=atol):
52 |
53 | # If the block is already at the place position, do nothing except keep the gripper closed
54 | if np.sum(np.subtract(block_position, place_position)**2) < 1e-6:
55 | if DEBUG:
56 | print("The block is already at the place position; do nothing")
57 | return np.array([0., 0., 0., -1.])
58 |
59 | # Move to the place position while keeping the gripper closed
60 | target_position = np.add(place_position, relative_grasp_position)
61 | target_position[2] += workspace_height/2.
62 | if DEBUG:
63 | print("Move to above the place position")
64 | return get_move_action(obs, target_position, atol=atol, gain=gain, close_gripper=True)
65 |
66 | # If the block is ready to be grasped
67 | if block_inside_grippers(obs, relative_grasp_position, atol=atol):
68 |
69 | # Close the grippers
70 | if DEBUG:
71 | print("Close the grippers")
72 | return np.array([0., 0., 0., -1.])
73 |
74 | # If the gripper is above the block
75 | if (gripper_position[0] - block_position[0])**2 + (gripper_position[1] - block_position[1])**2 < atol * 5e-5:
76 |
77 | # If the grippers are closed, open them
78 | if not grippers_are_open(obs, atol=atol):
79 | if DEBUG:
80 | print("Open the grippers")
81 | return np.array([0., 0., 0., 1.])
82 |
83 | # Move down to grasp
84 | target_position = np.add(block_position, relative_grasp_position)
85 | if DEBUG:
86 | print("Move down to grasp")
87 | return get_move_action(obs, target_position, atol=atol, gain=10)
88 |
89 |
90 | # Else move the gripper to above the block
91 | target_position = np.add(block_position, relative_grasp_position)
92 | target_position[2] += workspace_height
93 | if DEBUG:
94 | print("Move to above the block")
95 | return get_move_action(obs, target_position, atol=atol, gain=10)
96 |
97 |
98 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/pick_and_place_controller.py:
--------------------------------------------------------------------------------
1 | import numpy as np
2 |
3 | DEBUG = False
4 |
5 | def get_move_action(observation, target_position, atol=1e-3, gain=10., close_gripper=False):
6 | """
7 | Move an end effector to a position and orientation.
8 | """
9 | # Get the currents
10 | current_position = observation['observation'][:3]
11 |
12 | action = gain * np.subtract(target_position, current_position)
13 | if close_gripper:
14 | gripper_action = -1.
15 | else:
16 | gripper_action = 0.
17 | action = np.hstack((action, gripper_action))
18 |
19 | return action
20 |
21 | def block_is_grasped(obs, relative_grasp_position, atol=1e-3):
22 | return block_inside_grippers(obs, relative_grasp_position, atol=atol) and grippers_are_closed(obs, atol=atol)
23 |
24 | def block_inside_grippers(obs, relative_grasp_position, atol=1e-3):
25 | gripper_position = obs['observation'][:3]
26 | block_position = obs['observation'][3:6]
27 |
28 | relative_position = np.subtract(gripper_position, block_position)
29 |
30 | return np.sum(np.subtract(relative_position, relative_grasp_position)**2) < atol
31 |
32 | def grippers_are_closed(obs, atol=1e-3):
33 | gripper_state = obs['observation'][9:11]
34 | return abs(gripper_state[0] - 0.024) < atol
35 |
36 | def grippers_are_open(obs, atol=1e-3):
37 | gripper_state = obs['observation'][9:11]
38 | return abs(gripper_state[0] - 0.05) < atol
39 |
40 | def get_pick_and_place_control(obs, relative_grasp_position=(0., 0., -0.02), workspace_height=0.1, atol=1e-3, gain=10):
41 | """
42 | Returns
43 | -------
44 | action : [float] * 4
45 | """
46 | gripper_position = obs['observation'][:3]
47 | block_position = obs['observation'][3:6]
48 | place_position = obs['desired_goal']
49 |
50 | # If the gripper is already grasping the block
51 | if block_is_grasped(obs, relative_grasp_position, atol=atol):
52 |
53 | # If the block is already at the place position, do nothing except keep the gripper closed
54 | if np.sum(np.subtract(block_position, place_position)**2) < atol:
55 | if DEBUG:
56 | print("The block is already at the place position; do nothing")
57 | return np.array([0., 0., 0., -1.])
58 |
59 | # Move to the place position while keeping the gripper closed
60 | target_position = np.add(place_position, relative_grasp_position)
61 | target_position[2] += workspace_height/2.
62 | if DEBUG:
63 | print("Move to above the place position")
64 | return get_move_action(obs, target_position, atol=atol, close_gripper=True, gain=gain)
65 |
66 | # If the block is ready to be grasped
67 | if block_inside_grippers(obs, relative_grasp_position, atol=atol):
68 |
69 | # Close the grippers
70 | if DEBUG:
71 | print("Close the grippers")
72 | return np.array([0., 0., 0., -1.])
73 |
74 | # If the gripper is above the block
75 | if (gripper_position[0] - block_position[0])**2 + (gripper_position[1] - block_position[1])**2 < atol:
76 |
77 | # If the grippers are closed, open them
78 | if not grippers_are_open(obs, atol=atol):
79 | if DEBUG:
80 | print("Open the grippers")
81 | return np.array([0., 0., 0., 1.])
82 |
83 | # Move down to grasp
84 | target_position = np.add(block_position, relative_grasp_position)
85 | if DEBUG:
86 | print("Move down to grasp")
87 | return get_move_action(obs, target_position, atol=atol, gain=gain)
88 |
89 |
90 | # Else move the gripper to above the block
91 | target_position = np.add(block_position, relative_grasp_position)
92 | target_position[2] += workspace_height
93 | if DEBUG:
94 | print("Move to above the block")
95 | return get_move_action(obs, target_position, atol=atol, gain=gain)
96 |
97 |
98 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/push_database_controller.py:
--------------------------------------------------------------------------------
1 | from scipy.spatial import KDTree
2 |
3 | import os
4 | import numpy as np
5 |
6 | database_filename = 'PusherEnv_database_500samples.npy'
7 | dir_path = os.path.dirname(os.path.realpath(__file__))
8 | database_file = os.path.join(dir_path, database_filename)
9 |
10 | class DatabaseController(object):
11 | def __init__(self, kdtree, actions):
12 | self.kdtree = kdtree
13 | self.actions = actions
14 |
15 | def __call__(self, obs):
16 | distance, idx = self.kdtree.query(obs['observation'])
17 | return self.actions[idx]
18 |
19 | def __getstate__(self):
20 | return False
21 |
22 | def create_push_database_controller(scale_by_distance=False, scale_factor=1.):
23 |
24 | states, actions = np.load(database_file)
25 | states = np.array([list(s) for s in states])
26 | kdtree = KDTree(states)
27 |
28 | return DatabaseController(kdtree, actions)
29 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/residual_fetch_pick_and_place_env.py:
--------------------------------------------------------------------------------
1 | # from .pick_and_place_controller import get_pick_and_place_control
2 | from .oscillating_pick_and_place_controller import get_pick_and_place_control
3 |
4 | import gym
5 | from gym import error, spaces, utils
6 | from gym.utils import seeding
7 |
8 | import numpy as np
9 | import time
10 |
11 | import pdb
12 |
13 |
14 | class MyFetchPickAndPlaceEnv(gym.Env):
15 | """
16 | Just to override the broken rendering.
17 | """
18 |
19 | def __init__(self, *args, **kwargs):
20 | self.fetch_env = gym.make("FetchPickAndPlace-v1")
21 | self.metadata = self.fetch_env.metadata
22 | self.action_space = self.fetch_env.action_space
23 | self.observation_space = self.fetch_env.observation_space
24 |
25 | def step(self, action):
26 | return self.fetch_env.step(action)
27 |
28 | def reset(self):
29 | return self.fetch_env.reset()
30 |
31 | def seed(self, seed=0):
32 | return self.fetch_env.seed(seed=seed)
33 |
34 | def render(self, mode="human", *args, **kwargs):
35 | # See https://github.com/openai/gym/issues/1081
36 | self.fetch_env.env._render_callback()
37 | if mode == 'rgb_array':
38 | self.fetch_env.env._get_viewer().render()
39 | width, height = 3350, 1800
40 | data = self.fetch_env.env._get_viewer().read_pixels(width, height, depth=False)
41 | # original image is upside-down, so flip it
42 | return data[::-1, :, :]
43 | elif mode == 'human':
44 | self.fetch_env.env._get_viewer().render()
45 |
46 | return self.fetch_env.render(*args, **kwargs)
47 |
48 |
49 | class ResidualFetchPickAndPlaceEnv(gym.Env):
50 |
51 | def __init__(self, *args, **kwargs):
52 | self.fetch_env = gym.make("FetchPickAndPlace-v1")
53 | self.metadata = self.fetch_env.metadata
54 | self.hardcoded_controller = None
55 | self.action_space = self.fetch_env.action_space
56 | self.observation_space = self.fetch_env.observation_space
57 |
58 | def step(self, residual_action):
59 | residual_action = 2. * residual_action
60 | action = np.add(residual_action, get_pick_and_place_control(self._last_observation))
61 | action = np.clip(action, -1, 1)
62 | observation, reward, done, debug_info = self.fetch_env.step(action)
63 | self._last_observation = observation
64 |
65 | return observation, reward, done, debug_info
66 |
67 | def reset(self):
68 | observation = self.fetch_env.reset()
69 | self._last_observation = observation
70 | return observation
71 |
72 | def seed(self, seed=0):
73 | return self.fetch_env.seed(seed=seed)
74 |
75 | def render(self, mode="human", *args, **kwargs):
76 | # See https://github.com/openai/gym/issues/1081
77 | self.fetch_env.env._render_callback()
78 | if mode == 'rgb_array':
79 | self.fetch_env.env._get_viewer().render()
80 | width, height = 3350, 1800
81 | data = self.fetch_env.env._get_viewer().read_pixels(width, height, depth=False)
82 | # original image is upside-down, so flip it
83 | return data[::-1, :, :]
84 | elif mode == 'human':
85 | self.fetch_env.env._get_viewer().render()
86 |
87 | return self.fetch_env.render(*args, **kwargs)
88 |
89 | def compute_reward(self, *args, **kwargs):
90 | return self.fetch_env.compute_reward(*args, **kwargs)
91 |
--------------------------------------------------------------------------------
/rpl_environments/rpl_environments/envs/residual_fetch_push_env.py:
--------------------------------------------------------------------------------
1 | from .miscalibrated_push_controller import get_push_control
2 |
3 | from gym.envs.robotics import FetchPushEnv
4 |
5 | import gym
6 | from gym import error, spaces, utils
7 | from gym.utils import seeding
8 |
9 | import numpy as np
10 | import time
11 |
12 |
13 | class ResidualSlipperyPushEnv(gym.Env):
14 |
15 | def __init__(self, *args, **kwargs):
16 | self.fetch_env = gym.make("FetchPush-v1")
17 |
18 | for i in range(len(self.fetch_env.env.sim.model.geom_friction)):
19 | self.fetch_env.env.sim.model.geom_friction[i] = [18e-2, 5.e-3, 1e-4]
20 |
21 | self.metadata = self.fetch_env.metadata
22 | self.hardcoded_controller = None
23 | self.action_space = self.fetch_env.action_space
24 | self.observation_space = self.fetch_env.observation_space
25 |
26 | def step(self, residual_action):
27 | residual_action = 2. * residual_action
28 |
29 | action = np.add(residual_action, get_push_control(self._last_observation))
30 | action = np.clip(action, -1, 1)
31 | observation, reward, done, debug_info = self.fetch_env.step(action)
32 | self._last_observation = observation
33 |
34 | return observation, reward, done, debug_info
35 |
36 | def reset(self):
37 | observation = self.fetch_env.reset()
38 | self._last_observation = observation
39 | return observation
40 |
41 | def seed(self, seed=0):
42 | return self.fetch_env.seed(seed=seed)
43 |
44 | def render(self, mode="human", *args, **kwargs):
45 | # See https://github.com/openai/gym/issues/1081
46 | self.fetch_env.env._render_callback()
47 | if mode == 'rgb_array':
48 | self.fetch_env.env._get_viewer().render()
49 | width, height = 3350, 1800
50 | data = self.fetch_env.env._get_viewer().read_pixels(width, height, depth=False)
51 | # original image is upside-down, so flip it
52 | return data[::-1, :, :]
53 | elif mode == 'human':
54 | self.fetch_env.env._get_viewer().render()
55 |
56 | return self.fetch_env.render(*args, **kwargs)
57 |
58 | def compute_reward(self, *args, **kwargs):
59 | return self.fetch_env.compute_reward(*args, **kwargs)
60 |
61 | class SlipperyPushEnv(gym.Env):
62 |
63 | def __init__(self, *args, **kwargs):
64 | self.fetch_env = gym.make("FetchPush-v1")
65 |
66 | for i in range(len(self.fetch_env.env.sim.model.geom_friction)):
67 | self.fetch_env.env.sim.model.geom_friction[i] = [18e-2, 5.e-3, 1e-4]
68 |
69 | self.metadata = self.fetch_env.metadata
70 |
71 | self.action_space = self.fetch_env.action_space
72 | self.observation_space = self.fetch_env.observation_space
73 |
74 | def step(self, action):
75 | return self.fetch_env.step(action)
76 |
77 | def reset(self):
78 | return self.fetch_env.reset()
79 |
80 | def seed(self, seed=0):
81 | return self.fetch_env.seed(seed=seed)
82 |
83 | def render(self, mode="human", *args, **kwargs):
84 | # See https://github.com/openai/gym/issues/1081
85 | self.fetch_env.env._render_callback()
86 | if mode == 'rgb_array':
87 | self.fetch_env.env._get_viewer().render()
88 | width, height = 3350, 1800
89 | data = self.fetch_env.env._get_viewer().read_pixels(width, height, depth=False)
90 | # original image is upside-down, so flip it
91 | return data[::-1, :, :]
92 | elif mode == 'human':
93 | self.fetch_env.env._get_viewer().render()
94 |
95 | return self.fetch_env.render(*args, **kwargs)
96 |
97 | def compute_reward(self, *args, **kwargs):
98 | return self.fetch_env.compute_reward(*args, **kwargs)
99 |
100 |
--------------------------------------------------------------------------------
/rpl_environments/setup.py:
--------------------------------------------------------------------------------
1 | from setuptools import setup
2 |
3 | setup(name='rpl_environments',
4 | version='0.0.1',
5 | install_requires=['gym']
6 | )
7 |
--------------------------------------------------------------------------------
/tensorflow/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/tensorflow/.DS_Store
--------------------------------------------------------------------------------
/tensorflow/._.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/tensorflow/._.DS_Store
--------------------------------------------------------------------------------
/tensorflow/experiment/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/tensorflow/experiment/.DS_Store
--------------------------------------------------------------------------------
/tensorflow/experiment/._.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/tensorflow/experiment/._.DS_Store
--------------------------------------------------------------------------------
/tensorflow/experiment/._out.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/tensorflow/experiment/._out.png
--------------------------------------------------------------------------------
/tensorflow/experiment/._submit_hooks.sbatch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/k-r-allen/residual-policy-learning/ab330ee425463459f1dd7daa4b571104ae449118/tensorflow/experiment/._submit_hooks.sbatch
--------------------------------------------------------------------------------
/tensorflow/experiment/__init__.py:
--------------------------------------------------------------------------------
1 | import sys
2 |
3 | # :'(
4 | from . import config_copy
5 | from . import models
6 | from . import ddpg_controller
7 | # from . import ddpg_controller_residual_base
8 | sys.modules['config_copy'] = config_copy
9 | sys.modules['models'] = models
10 | sys.modules['ddpg_controller'] = ddpg_controller
11 | # sys.modules['ddpg_controller_residual_base'] = ddpg_controller_residual_base
12 |
13 | import pickle
14 |
15 | def load_her_policy(filepath):
16 | with open(filepath, 'rb') as f:
17 | return pickle.load(f)
18 |
--------------------------------------------------------------------------------
/tensorflow/experiment/configs/hook.json:
--------------------------------------------------------------------------------
1 | {"max_u": 1.0, "layers": 3, "hidden": 256, "network_class": "models.actor_critic_last_zeros:ActorCritic", "Q_lr": 0.001, "pi_lr": 0.001, "buffer_size": 1000000, "polyak": 0.95, "action_l2": 1.0, "clip_obs": 200.0, "scope": "ddpg", "relative_goals": false, "n_cycles": 50, "rollout_batch_size": 4, "n_batches": 40, "batch_size": 256, "n_test_rollouts": 50, "test_with_polyak": false, "random_eps": 0.3, "noise_eps": 0.1, "controller_prop": 0.0, "threshold": 1.0, "replay_strategy": "future", "replay_k": 4, "norm_eps": 0.01, "norm_clip": 5}
--------------------------------------------------------------------------------
/tensorflow/experiment/configs/hook_expert_explore.json:
--------------------------------------------------------------------------------
1 | {"max_u": 1.0, "layers": 3, "hidden": 256, "network_class": "models.actor_critic_last_zeros:ActorCritic", "Q_lr": 0.001, "pi_lr": 0.001, "buffer_size": 1000000, "polyak": 0.95, "action_l2": 1.0, "clip_obs": 200.0, "scope": "ddpg", "relative_goals": false, "n_cycles": 50, "rollout_batch_size": 4, "n_batches": 40, "batch_size": 256, "n_test_rollouts": 10, "test_with_polyak": false, "random_eps": 0.6, "noise_eps": 0.1, "controller_prop": 0.8, "threshold": 0.7, "replay_strategy": "future", "replay_k": 4, "norm_eps": 0.01, "norm_clip": 5}
--------------------------------------------------------------------------------
/tensorflow/experiment/configs/pickandplace.json:
--------------------------------------------------------------------------------
1 | {"max_u": 1.0, "layers": 3, "hidden": 256, "network_class": "models.actor_critic_last_zeros:ActorCritic", "Q_lr": 0.001, "pi_lr": 0.001, "buffer_size": 1000000, "polyak": 0.95, "action_l2": 1.0, "clip_obs": 200.0, "scope": "ddpg", "relative_goals": false, "n_cycles": 50, "rollout_batch_size": 2, "n_batches": 40, "batch_size": 256, "n_test_rollouts": 50, "test_with_polyak": false, "random_eps": 0.3, "noise_eps": 0.2, "controller_prop": 0.0, "threshold": 1.0, "replay_strategy": "future", "replay_k": 4, "norm_eps": 0.01, "norm_clip": 5}
--------------------------------------------------------------------------------
/tensorflow/experiment/configs/push.json:
--------------------------------------------------------------------------------
1 | {"max_u": 1.0, "layers": 3, "hidden": 256, "network_class": "models.actor_critic_last_zeros:ActorCritic", "Q_lr": 0.001, "pi_lr": 0.001, "buffer_size": 1000000, "polyak": 0.95, "action_l2": 1.0, "clip_obs": 200.0, "scope": "ddpg", "relative_goals": false, "n_cycles": 50, "rollout_batch_size": 2, "n_batches": 40, "batch_size": 256, "n_test_rollouts": 50, "test_with_polyak": false, "random_eps": 0.3, "noise_eps": 0.2, "controller_prop": 0.0, "threshold": 1.0, "replay_strategy": "future", "replay_k": 4, "norm_eps": 0.01, "norm_clip": 5}
--------------------------------------------------------------------------------
/tensorflow/experiment/configs/push_expert_explore.json:
--------------------------------------------------------------------------------
1 | {"max_u": 1.0, "layers": 3, "hidden": 256, "network_class": "models.actor_critic_last_zeros:ActorCritic", "Q_lr": 0.001, "pi_lr": 0.001, "buffer_size": 1000000, "polyak": 0.95, "action_l2": 1.0, "clip_obs": 200.0, "scope": "ddpg", "relative_goals": false, "n_cycles": 50, "rollout_batch_size": 2, "n_batches": 40, "batch_size": 256, "n_test_rollouts": 50, "test_with_polyak": false, "random_eps": 0.5, "noise_eps": 0.1, "controller_prop": 0.8, "threshold": 0.5, "replay_strategy": "future", "replay_k": 4, "norm_eps": 0.01, "norm_clip": 5}
--------------------------------------------------------------------------------
/tensorflow/experiment/models/actor_critic_avg.py:
--------------------------------------------------------------------------------
1 | import tensorflow as tf
2 | from baselines.her.util import store_args
3 | from .utils import nn, nn_last_zero
4 | import copy
5 | import pdb
6 |
7 | class ActorCritic:
8 | @store_args
9 | def __init__(self, inputs_tf, dimo, dimg, dimu, max_u, o_stats, g_stats, hidden, layers,
10 | **kwargs):
11 | """The actor-critic network and related training code.
12 |
13 | Args:
14 | inputs_tf (dict of tensors): all necessary inputs for the network: the
15 | observation (o), the goal (g), and the action (u)
16 | dimo (int): the dimension of the observations
17 | dimg (int): the dimension of the goals
18 | dimu (int): the dimension of the actions
19 | max_u (float): the maximum magnitude of actions; action outputs will be scaled
20 | accordingly
21 | o_stats (baselines.her.Normalizer): normalizer for observations
22 | g_stats (baselines.her.Normalizer): normalizer for goals
23 | hidden (int): number of hidden units that should be used in hidden layers
24 | layers (int): number of hidden layers
25 | """
26 | self.o_tf = inputs_tf['o']
27 | self.g_tf = inputs_tf['g']
28 | self.u_tf = inputs_tf['u']
29 |
30 | # Prepare inputs for actor and critic.
31 | o = self.o_stats.normalize(self.o_tf)
32 | g = self.g_stats.normalize(self.g_tf)
33 |
34 | o0 = o[:,:int(dimo/2)]
35 | o1 = o[:,int(dimo/2):]
36 | input0 = tf.concat(axis=1, values=[o0,g])
37 | input1 = tf.concat(axis=1, values=[o1,g])
38 |
39 | with tf.variable_scope('pi'):
40 |
41 | pi_tf0 = nn_last_zero(input0, [self.hidden] * self.layers + [self.dimu], seed_offset=0)
42 | pi_tf1 = nn_last_zero(input1, [self.hidden] * self.layers + [self.dimu], reuse=True, seed_offset=0)
43 | pi_tf = 0.5*(pi_tf0 + pi_tf1)
44 | self.pi_tf = self.max_u * tf.tanh(pi_tf)
45 |
46 | with tf.variable_scope('Q'):
47 | # for policy training
48 | input_Q0 = tf.concat(axis=1, values=[o0, g, self.pi_tf / self.max_u])
49 | input_Q1 = tf.concat(axis=1, values=[o1, g, self.pi_tf / self.max_u])
50 | Q_pi_tf0 = nn(input_Q0, [self.hidden] * self.layers + [1])
51 | Q_pi_tf1 = nn(input_Q1, [self.hidden]*self.layers + [1], reuse=True)
52 | self.Q_pi_tf = 0.5*(Q_pi_tf0 + Q_pi_tf1)
53 |
54 | # for critic training
55 | input_Q0 = tf.concat(axis=1, values=[o0, g, self.u_tf / self.max_u])
56 | input_Q1 = tf.concat(axis=1, values=[o1, g, self.u_tf / self.max_u])
57 | input_Q = 0.5*(input_Q0+input_Q1)
58 | self._input_Q = input_Q # exposed for tests
59 | Q_tf1 = nn(input_Q1, [self.hidden]*self.layers + [1], reuse=True)
60 | Q_tf0=nn(input_Q0, [self.hidden] * self.layers + [1], reuse=True)
61 | self.Q_tf = 0.5*(Q_tf0 + Q_tf1)
62 | # self._Q_tf = nn(input_Q, [self.hidden] * self.layers + [1], reuse=True, use_seed=True)
63 | # Q_tf_copy = nn(input_Q, [self.hidden] * self.layers + [1], name='Q_tf_tomcopy', use_seed=True)
64 | # tf.stop_gradient(Q_tf_copy)
65 |
66 | # self.Q_tf = self._Q_tf - Q_tf_copy
67 |
68 |
--------------------------------------------------------------------------------
/tensorflow/experiment/models/actor_critic_combined.py:
--------------------------------------------------------------------------------
1 | import tensorflow as tf
2 | from baselines.her.util import store_args
3 | from .utils import nn, nn_last_zero
4 | import copy
5 |
6 | class ActorCritic:
7 | @store_args
8 | def __init__(self, inputs_tf, dimo, dimg, dimu, max_u, o_stats, g_stats, hidden, layers,
9 | **kwargs):
10 | """The actor-critic network and related training code.
11 |
12 | Args:
13 | inputs_tf (dict of tensors): all necessary inputs for the network: the
14 | observation (o), the goal (g), and the action (u)
15 | dimo (int): the dimension of the observations
16 | dimg (int): the dimension of the goals
17 | dimu (int): the dimension of the actions
18 | max_u (float): the maximum magnitude of actions; action outputs will be scaled
19 | accordingly
20 | o_stats (baselines.her.Normalizer): normalizer for observations
21 | g_stats (baselines.her.Normalizer): normalizer for goals
22 | hidden (int): number of hidden units that should be used in hidden layers
23 | layers (int): number of hidden layers
24 | """
25 | self.o_tf = inputs_tf['o']
26 | self.g_tf = inputs_tf['g']
27 | self.u_tf = inputs_tf['u']
28 |
29 | # Prepare inputs for actor and critic.
30 | o = self.o_stats.normalize(self.o_tf)
31 | g = self.g_stats.normalize(self.g_tf)
32 | input_pi = tf.concat(axis=1, values=[o, g]) # for actor
33 |
34 | with tf.variable_scope('pi'):
35 |
36 | pi_tf = nn_last_zero(input_pi, [self.hidden] * self.layers + [self.dimu], name='residual',seed_offset=0)
37 | self.pi_tf_r = self.max_u * tf.tanh(pi_tf)
38 |
39 | pi_tf = nn_last_zero(input_pi, [self.hidden] * self.layers + [self.dimu], name='base', seed_offset=0)
40 | self.pi_tf_b = self.max_u * tf.tanh(pi_tf)
41 |
42 | self.pi_tf = self.pi_tf_r+self.pi_tf_b
43 |
44 | with tf.variable_scope('Q'):
45 | # for policy training
46 | input_Q = tf.concat(axis=1, values=[o, g, self.pi_tf / self.max_u])
47 | self.Q_pi_tf = nn(input_Q, [self.hidden] * self.layers + [1])
48 |
49 | # Q_pi_tf = nn(input_Q, [self.hidden] * self.layers + [1], use_seed=True)
50 | # Q_pi_tf_copy = nn(input_Q, [self.hidden] * self.layers + [1], name='Q_pi_tf_tomcopy', use_seed=True)
51 | # tf.stop_gradient(Q_pi_tf_copy)
52 |
53 | # self.Q_pi_tf = Q_pi_tf - Q_pi_tf_copy
54 |
55 | # for critic training
56 | input_Q = tf.concat(axis=1, values=[o, g, self.u_tf / self.max_u])
57 | self._input_Q = input_Q # exposed for tests
58 | self.Q_tf = nn(input_Q, [self.hidden] * self.layers + [1], reuse=True)
59 |
60 | # self._Q_tf = nn(input_Q, [self.hidden] * self.layers + [1], reuse=True, use_seed=True)
61 | # Q_tf_copy = nn(input_Q, [self.hidden] * self.layers + [1], name='Q_tf_tomcopy', use_seed=True)
62 | # tf.stop_gradient(Q_tf_copy)
63 |
64 | # self.Q_tf = self._Q_tf - Q_tf_copy
65 |
66 |
--------------------------------------------------------------------------------
/tensorflow/experiment/models/actor_critic_copy_policy.py:
--------------------------------------------------------------------------------
1 | import tensorflow as tf
2 | from baselines.her.util import store_args
3 | from .utils import nn
4 | import copy
5 |
6 | class ActorCritic:
7 | @store_args
8 | def __init__(self, inputs_tf, dimo, dimg, dimu, max_u, o_stats, g_stats, hidden, layers,
9 | **kwargs):
10 | """The actor-critic network and related training code.
11 |
12 | Args:
13 | inputs_tf (dict of tensors): all necessary inputs for the network: the
14 | observation (o), the goal (g), and the action (u)
15 | dimo (int): the dimension of the observations
16 | dimg (int): the dimension of the goals
17 | dimu (int): the dimension of the actions
18 | max_u (float): the maximum magnitude of actions; action outputs will be scaled
19 | accordingly
20 | o_stats (baselines.her.Normalizer): normalizer for observations
21 | g_stats (baselines.her.Normalizer): normalizer for goals
22 | hidden (int): number of hidden units that should be used in hidden layers
23 | layers (int): number of hidden layers
24 | """
25 | self.o_tf = inputs_tf['o']
26 | self.g_tf = inputs_tf['g']
27 | self.u_tf = inputs_tf['u']
28 |
29 | # Prepare inputs for actor and critic.
30 | o = self.o_stats.normalize(self.o_tf)
31 | g = self.g_stats.normalize(self.g_tf)
32 | input_pi = tf.concat(axis=1, values=[o, g]) # for actor
33 |
34 | # Networks.
35 | with tf.variable_scope('pi_copy'):
36 | pi_tf_copy = nn(input_pi, [self.hidden] * self.layers + [self.dimu], use_seed=True)
37 | tf.stop_gradient(pi_tf_copy)
38 |
39 | with tf.variable_scope('pi'):
40 |
41 | pi_tf = nn(input_pi, [self.hidden] * self.layers + [self.dimu], use_seed=True)
42 | self.pi_tf = self.max_u * tf.tanh((pi_tf - pi_tf_copy))
43 |
44 |
45 | with tf.variable_scope('Q'):
46 | # for policy training
47 | input_Q = tf.concat(axis=1, values=[o, g, self.pi_tf / self.max_u])
48 | self.Q_pi_tf = nn(input_Q, [self.hidden] * self.layers + [1])
49 |
50 | # Q_pi_tf = nn(input_Q, [self.hidden] * self.layers + [1], use_seed=True)
51 | # Q_pi_tf_copy = nn(input_Q, [self.hidden] * self.layers + [1], name='Q_pi_tf_tomcopy', use_seed=True)
52 | # tf.stop_gradient(Q_pi_tf_copy)
53 |
54 | # self.Q_pi_tf = Q_pi_tf - Q_pi_tf_copy
55 |
56 | # for critic training
57 | input_Q = tf.concat(axis=1, values=[o, g, self.u_tf / self.max_u])
58 | self._input_Q = input_Q # exposed for tests
59 | self.Q_tf = nn(input_Q, [self.hidden] * self.layers + [1], reuse=True)
60 |
61 | # self._Q_tf = nn(input_Q, [self.hidden] * self.layers + [1], reuse=True, use_seed=True)
62 | # Q_tf_copy = nn(input_Q, [self.hidden] * self.layers + [1], name='Q_tf_tomcopy', use_seed=True)
63 | # tf.stop_gradient(Q_tf_copy)
64 |
65 | # self.Q_tf = self._Q_tf - Q_tf_copy
66 |
67 |
--------------------------------------------------------------------------------
/tensorflow/experiment/models/actor_critic_freeze_base.py:
--------------------------------------------------------------------------------
1 | import tensorflow as tf
2 | from baselines.her.util import store_args
3 | from .utils import nn, nn_last_zero
4 | import copy
5 | import pdb
6 | class ActorCritic:
7 | @store_args
8 | def __init__(self, inputs_tf, dimo, dimg, dimu, max_u, o_stats, g_stats, hidden, layers,
9 | **kwargs):
10 | """The actor-critic network and related training code.
11 |
12 | Args:
13 | inputs_tf (dict of tensors): all necessary inputs for the network: the
14 | observation (o), the goal (g), and the action (u)
15 | dimo (int): the dimension of the observations
16 | dimg (int): the dimension of the goals
17 | dimu (int): the dimension of the actions
18 | max_u (float): the maximum magnitude of actions; action outputs will be scaled
19 | accordingly
20 | o_stats (baselines.her.Normalizer): normalizer for observations
21 | g_stats (baselines.her.Normalizer): normalizer for goals
22 | hidden (int): number of hidden units that should be used in hidden layers
23 | layers (int): number of hidden layers
24 | """
25 | self.base_only = kwargs['base_only']
26 | self.residual_only = kwargs['residual_only']
27 |
28 | self.o_tf = inputs_tf['o']
29 | self.g_tf = inputs_tf['g']
30 | self.u_tf = inputs_tf['u']
31 |
32 | # Prepare inputs for actor and critic.
33 | o = self.o_stats.normalize(self.o_tf)
34 | g = self.g_stats.normalize(self.g_tf)
35 | input_pi = tf.concat(axis=1, values=[o, g]) # for actor
36 |
37 | with tf.variable_scope('r_pi'):
38 | pi_tf_r = nn_last_zero(input_pi, [self.hidden] * self.layers + [self.dimu])
39 | self.pi_tf_r = self.max_u * tf.tanh(pi_tf_r)
40 | if self.base_only:
41 | tf.stop_gradient(self.pi_tf_r)
42 |
43 | with tf.variable_scope('b_pi'):
44 |
45 | pi_tf_b = nn(input_pi, [self.hidden] * self.layers + [self.dimu])
46 | self.pi_tf_b = self.max_u * tf.tanh(pi_tf_b)
47 | if self.residual_only:
48 | tf.stop_gradient(self.pi_tf_b)
49 |
50 | self.pi_tf = self.pi_tf_b + self.pi_tf_r
51 |
52 | with tf.variable_scope('Q'):
53 | # for policy training
54 | input_Q = tf.concat(axis=1, values=[o, g, self.pi_tf / self.max_u])
55 | self.Q_pi_tf = nn(input_Q, [self.hidden] * self.layers + [1])
56 |
57 | # Q_pi_tf = nn(input_Q, [self.hidden] * self.layers + [1], use_seed=True)
58 | # Q_pi_tf_copy = nn(input_Q, [self.hidden] * self.layers + [1], name='Q_pi_tf_tomcopy', use_seed=True)
59 | # tf.stop_gradient(Q_pi_tf_copy)
60 |
61 | # self.Q_pi_tf = Q_pi_tf - Q_pi_tf_copy
62 |
63 | # for critic training
64 | input_Q = tf.concat(axis=1, values=[o, g, self.u_tf / self.max_u])
65 | self._input_Q = input_Q # exposed for tests
66 | self.Q_tf = nn(input_Q, [self.hidden] * self.layers + [1], reuse=True)
67 |
68 | # self._Q_tf = nn(input_Q, [self.hidden] * self.layers + [1], reuse=True, use_seed=True)
69 | # Q_tf_copy = nn(input_Q, [self.hidden] * self.layers + [1], name='Q_tf_tomcopy', use_seed=True)
70 | # tf.stop_gradient(Q_tf_copy)
71 |
72 | # self.Q_tf = self._Q_tf - Q_tf_copy
73 |
74 |
--------------------------------------------------------------------------------
/tensorflow/experiment/models/actor_critic_last_zeros.py:
--------------------------------------------------------------------------------
1 | import tensorflow as tf
2 | from baselines.her.util import store_args
3 | from .utils import nn, nn_last_zero
4 | import copy
5 |
6 | class ActorCritic:
7 | @store_args
8 | def __init__(self, inputs_tf, dimo, dimg, dimu, max_u, o_stats, g_stats, hidden, layers,
9 | **kwargs):
10 | """The actor-critic network and related training code.
11 |
12 | Args:
13 | inputs_tf (dict of tensors): all necessary inputs for the network: the
14 | observation (o), the goal (g), and the action (u)
15 | dimo (int): the dimension of the observations
16 | dimg (int): the dimension of the goals
17 | dimu (int): the dimension of the actions
18 | max_u (float): the maximum magnitude of actions; action outputs will be scaled
19 | accordingly
20 | o_stats (baselines.her.Normalizer): normalizer for observations
21 | g_stats (baselines.her.Normalizer): normalizer for goals
22 | hidden (int): number of hidden units that should be used in hidden layers
23 | layers (int): number of hidden layers
24 | """
25 | self.o_tf = inputs_tf['o']
26 | self.g_tf = inputs_tf['g']
27 | self.u_tf = inputs_tf['u']
28 |
29 | # Prepare inputs for actor and critic.
30 | o = self.o_stats.normalize(self.o_tf)
31 | g = self.g_stats.normalize(self.g_tf)
32 | input_pi = tf.concat(axis=1, values=[o, g]) # for actor
33 |
34 | with tf.variable_scope('pi'):
35 |
36 | pi_tf = nn_last_zero(input_pi, [self.hidden] * self.layers + [self.dimu], seed_offset=0)
37 | self.pi_tf = self.max_u * tf.tanh(pi_tf)
38 |
39 | with tf.variable_scope('Q'):
40 | # for policy training
41 | input_Q = tf.concat(axis=1, values=[o, g, self.pi_tf / self.max_u])
42 | self.Q_pi_tf = nn(input_Q, [self.hidden] * self.layers + [1])
43 |
44 | # Q_pi_tf = nn(input_Q, [self.hidden] * self.layers + [1], use_seed=True)
45 | # Q_pi_tf_copy = nn(input_Q, [self.hidden] * self.layers + [1], name='Q_pi_tf_tomcopy', use_seed=True)
46 | # tf.stop_gradient(Q_pi_tf_copy)
47 |
48 | # self.Q_pi_tf = Q_pi_tf - Q_pi_tf_copy
49 |
50 | # for critic training
51 | input_Q = tf.concat(axis=1, values=[o, g, self.u_tf / self.max_u])
52 | self._input_Q = input_Q # exposed for tests
53 | self.Q_tf = nn(input_Q, [self.hidden] * self.layers + [1], reuse=True)
54 |
55 | # self._Q_tf = nn(input_Q, [self.hidden] * self.layers + [1], reuse=True, use_seed=True)
56 | # Q_tf_copy = nn(input_Q, [self.hidden] * self.layers + [1], name='Q_tf_tomcopy', use_seed=True)
57 | # tf.stop_gradient(Q_tf_copy)
58 |
59 | # self.Q_tf = self._Q_tf - Q_tf_copy
60 |
61 |
--------------------------------------------------------------------------------
/tensorflow/experiment/models/utils.py:
--------------------------------------------------------------------------------
1 | import tensorflow as tf
2 | import numpy as np
3 |
4 | def nn(input, layers_sizes, reuse=None, flatten=False, name="", use_seed=False, init_zero=False, seed_offset=0):
5 | """Creates a simple neural network
6 | """
7 | for i, size in enumerate(layers_sizes):
8 | activation = tf.nn.relu if i < len(layers_sizes) - 1 else None
9 | if init_zero:
10 | kernel_init = 'zeros'
11 | elif use_seed:
12 | kernel_init = tf.contrib.layers.xavier_initializer(seed=i+seed_offset)
13 | else:
14 | kernel_init = tf.contrib.layers.xavier_initializer()
15 | input = tf.layers.dense(inputs=input,
16 | units=size,
17 | kernel_initializer=kernel_init,
18 | reuse=reuse,
19 | name=name + '_' + str(i))
20 | if activation:
21 | input = activation(input)
22 | if flatten:
23 | assert layers_sizes[-1] == 1
24 | input = tf.reshape(input, [-1])
25 | return input
26 |
27 | def nn_last_zero(input, layers_sizes, reuse=None, flatten=False, name="", seed_offset=0):
28 | """Creates a simple neural network
29 | """
30 | for i, size in enumerate(layers_sizes):
31 | activation = tf.nn.relu if i < len(layers_sizes) - 1 else None
32 | if i == len(layers_sizes) - 1:
33 | initializer = 'zeros'
34 | else:
35 | initializer = tf.contrib.layers.xavier_initializer(seed=i+seed_offset)
36 |
37 | input = tf.layers.dense(inputs=input,
38 | units=size,
39 | kernel_initializer=initializer,
40 | reuse=reuse,
41 | name=name + '_' + str(i))
42 | if activation:
43 | input = activation(input)
44 | if flatten:
45 | assert layers_sizes[-1] == 1
46 | input = tf.reshape(input, [-1])
47 | return input
48 |
49 | def nn_controller(controller_x, input, layers_sizes, dimu, max_u, reuse=None, flatten=False, name=""):
50 |
51 | """Creates a simple neural network
52 | """
53 | for i, size in enumerate(layers_sizes):
54 | activation = tf.nn.relu if i < len(layers_sizes) - 1 else None
55 | input = tf.layers.dense(inputs=input,
56 | units=size,
57 | kernel_initializer=tf.contrib.layers.xavier_initializer(),
58 | reuse=reuse,
59 | name=name + '_' + str(i))
60 | if activation:
61 | input = activation(input)
62 | if flatten:
63 | assert layers_sizes[-1] == 1
64 | input = tf.reshape(input, [-1])
65 |
66 | input = tf.layers.dense(inputs=tf.concat(axis=1, values=[controller_x, max_u * tf.tanh(input)]),
67 | units=dimu,
68 | kernel_initializer=tf.contrib.layers.xavier_initializer(),
69 | reuse=reuse,
70 | name=name+'_linear')
71 | return input
72 |
73 | def nn_linear(input, layers_sizes, reuse=None, flatten=False, name=""):
74 | """Creates a simple neural network
75 | """
76 | for i, size in enumerate(layers_sizes):
77 | activation = tf.nn.relu if i < len(layers_sizes) - 1 else None
78 | input = tf.layers.dense(inputs=input,
79 | units=size,
80 | kernel_initializer=tf.contrib.layers.xavier_initializer(),
81 | reuse=reuse,
82 | name=name + '_' + str(i))
83 | if activation:
84 | input = activation(input)
85 | if flatten:
86 | assert layers_sizes[-1] == 1
87 | input = tf.reshape(input, [-1])
88 | return input
--------------------------------------------------------------------------------
/tensorflow/experiment/plot_baselines.py:
--------------------------------------------------------------------------------
1 | import argparse
2 | import numpy as np
3 | import os
4 | from matplotlib import pyplot as plt
5 | import pandas as pd
6 | import pdb
7 | # https://github.com/openai/baselines/blob/master/baselines/her/experiment/plot.py#L10
8 | def smooth_reward_curve(x, y):
9 | halfwidth = int(np.ceil(len(x) / 60)) # Halfwidth of our smoothing convolution
10 | k = halfwidth
11 | xsmoo = x
12 | ysmoo = np.convolve(y, np.ones(2 * k + 1), mode='same') / np.convolve(np.ones_like(y), np.ones(2 * k + 1),
13 | mode='same')
14 | return xsmoo, ysmoo
15 |
16 | if __name__ == "__main__":
17 | parser = argparse.ArgumentParser(description=None)
18 | parser.add_argument('--files', nargs='+', help='progress.csv file')
19 | parser.add_argument('--labels', nargs='+')
20 | parser.add_argument('--title', type=str, default="FetchPush-v1")
21 | parser.add_argument('--yaxis', type=str, default="test/success_rate")
22 | parser.add_argument('--cutoff', type=int)
23 | parser.add_argument('--outfile', type=str, default='out.png', help='Image file')
24 | parser.add_argument('--smooth', action='store_true', default=False)
25 | pdb.set_trace()
26 | args = parser.parse_args()
27 |
28 |
29 | assert len(args.files) == len(args.labels)
30 |
31 | ax = None
32 |
33 | for file, label in zip(args.files, args.labels):
34 | df = pd.read_csv(file)
35 | if args.cutoff:
36 | df = df[df.epoch <= args.cutoff]
37 | if args.smooth:
38 | _, df[args.yaxis] = smooth_reward_curve(df['epoch'], df[args.yaxis])
39 | ax = df.plot(x='epoch', y=args.yaxis, kind='line', ax=ax, label=label)
40 |
41 | plt.ylabel(args.yaxis)
42 | plt.ylim((0., 1.))
43 | plt.title(args.title)
44 |
45 | plt.savefig(args.outfile)
46 | print("Wrote out to {}.".format(args.outfile))
--------------------------------------------------------------------------------
/tensorflow/experiment/run_all_experiments.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | envs=("FetchPush-v1" "FetchPickAndPlace-v1" "SlipperyPush-v0" "TwoFrameHookNoisy-v0" "ComplexHook-v0" "OtherPusherEnv-v0" "TwoFrameNoisyOtherPusherEnv-v0")
3 | residuals=("ResidualMPCPush-v0" "ResidualFetchPickAndPlace-v0" "ResidualSlipperyPush-v0" "TwoFrameResidualHookNoisy-v0" "ResidualComplexHook-v0" "ResidualOtherPusherEnv-v0" "ResidualTwoFramePusherNoisyEnv-v0")
4 | expertexplore=("MPCPush-v0" "FetchPickAndPlace-v1" "SlipperyPush-v0" "TwoFrameHookNoisy-v0" "ComplexHook-v0" "OtherPusherEnv-v0" "TwoFrameNoisyOtherPusherEnv-v0")
5 |
6 | eps=(0.3 0.3 0.3 0.6 0.6 0.3 0.3)
7 | alpha=(0.8 0.8 0.8 0.8 0.8 0.8 0.8)
8 | configs=("push.json" "pickandplace.json" "push.json" "hook.json" "hook.json" "push.json" "push.json")
9 | cpus=(19 19 19 1 1 1 1)
10 | nepochs=(50 50 50 300 300 300 300)
11 | seeds=(0 1 2 3 4)
12 |
13 | for j in ${!seeds[@]}; do
14 | #Train expert-explore
15 | for i in ${!expertexplore[@]}; do
16 | python train_staged.py --env ${expertexplore[$i]} --n_epochs ${nepochs[$i]} --num_cpu ${cpus[$i]} --config_path=configs/${configs[$i]} --logdir ./logs/seed${seeds[$j]}/${expertexplore[$i]}_expertexplore --seed ${seeds[$j]} --random_eps=${eps[$i]} --controller_prop=${alpha[$i]}
17 | done
18 |
19 | #Train from scratch
20 | for i in ${!envs[@]}; do
21 | python train_staged.py --env ${envs[$i]} --n_epochs ${nepochs[$i]} --num_cpu ${cpus[$i]} --config_path=configs/${configs[$i]} --logdir ./logs/seed${seeds[$j]}/${envs[$i]} --seed ${seeds[$j]}
22 | done
23 |
24 | #Train residuals
25 | for i in ${!residuals[@]}; do
26 | python train_staged.py --env ${residuals[$i]} --n_epochs ${nepochs[$i]} --num_cpu ${cpus[$i]} --config_path=configs/${configs[$i]} --logdir ./logs/seed${seeds[$j]}/${residuals[$i]} --seed ${seeds[$j]}
27 | done
28 | done
29 |
--------------------------------------------------------------------------------
/tensorflow/experiment/submit_all_experiments.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | envs=("FetchPush-v1" "FetchPickAndPlace-v1" "FetchPushHighFriction-v0" "TwoFrameHookNoisy-v0" "ComplexHookTrain-v0")
3 | residuals=("ResidualMPCPush-v0" "ResidualFetchPickAndPlace-v0" "ResidualFetchPush-v0" "TwoFrameResidualHookNoisy-v0" "ResidualComplexHookTrain-v0")
4 |
5 | expertexplore=("MPCPush-v0" "FetchPickAndPlace-v1" "FetchPushHighFriction-v0" "TwoFrameHookNoisy-v0" "ComplexHookTrain-v0")
6 | eps=(0.5 0.5 0.5 0.6 0.6)
7 | alpha=(0.8 0.8 0.8 0.8 0.8)
8 | configs=("push.json" "pickandplace.json" "push.json" "hook.json" "hook.json")
9 | cpus=(19 19 19 1 1)
10 | nepochs=(50 50 50 300 300)
11 | seeds=(0 1 2 3 4)
12 |
13 | start=$1
14 | num_experiments=$2
15 | experiment_counter=0
16 |
17 | for j in ${!seeds[@]}; do
18 | #Train expert-explore
19 | for i in ${!expertexplore[@]}; do
20 | if (( experiment_counter >= start && experiment_counter < (start + num_experiments) )); then
21 | python train_staged.py --env ${expertexplore[$i]} --n_epochs ${nepochs[$i]} --num_cpu ${cpus[$i]} --config_path=configs/${configs[$i]} --logdir ./logs/seed${seeds[$j]}/${expertexplore[$i]}_expertexplore --seed ${seeds[$j]} --random_eps=${eps[$i]} --controller_prop=${alpha[$i]}
22 | fi
23 | ((experiment_counter++))
24 | done
25 |
26 | #Train from scratch
27 | for i in ${!envs[@]}; do
28 | if (( experiment_counter >= start && experiment_counter < (start + num_experiments) )); then
29 | python train_staged.py --env ${envs[$i]} --n_epochs ${nepochs[$i]} --num_cpu ${cpus[$i]} --config_path=configs/${configs[$i]} --logdir ./logs/seed${seeds[$j]}/${envs[$i]} --seed ${seeds[$j]}
30 | fi
31 | ((experiment_counter++))
32 | done
33 |
34 | #Train residuals
35 | for i in ${!residuals[@]}; do
36 | if (( experiment_counter >= start && experiment_counter < (start + num_experiments) )); then
37 | python train_staged.py --env ${residuals[$i]} --n_epochs ${nepochs[$i]} --num_cpu ${cpus[$i]} --config_path=configs/${configs[$i]} --logdir ./logs/seed${seeds[$j]}/${residuals[$i]} --seed ${seeds[$j]}
38 | fi
39 | ((experiment_counter++))
40 | done
41 | done
42 |
--------------------------------------------------------------------------------