https://github.com/xbpeng/DeepTerrainRL
Tip revision: ed82e2ebe5f14fa875cc3d0a2180c64980408e8f authored by Glen on 19 October 2016, 17:49:36 UTC
Update README.md
Update README.md
Tip revision: ed82e2e
ScenarioSimChar.h
#pragma once
#include "scenarios/Scenario.h"
#include "sim/World.h"
#include "sim/SimBox.h"
#include "sim/SimPlane.h"
#include "sim/SimCapsule.h"
#include "sim/SimCharacter.h"
#include "sim/Perturb.h"
#include "sim/Ground.h"
#include "sim/TerrainGen2D.h"
class cScenarioSimChar : public cScenario
{
public:
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
enum eCharCtrl
{
eCharCtrlNone,
eCharCtrlDog,
eCharCtrlDogCacla,
eCharCtrlDogMACE,
eCharCtrlGoatMACE,
eCharCtrlRaptor,
eCharCtrlRaptorCacla,
eCharCtrlRaptorMACE,
eCharCtrlMax
};
enum eCharType
{
eCharNone,
eCharDog,
eCharRaptor,
eCharMax
};
struct tObjEntry
{
tObjEntry();
std::shared_ptr<cSimObj> mObj;
double mEndTime;
};
cScenarioSimChar();
virtual ~cScenarioSimChar();
virtual void ParseArgs(const cArgParser& parser);
virtual void Init();
virtual void Reset();
virtual void Clear();
virtual void Update(double time_elapsed);
virtual const std::shared_ptr<cSimCharacter>& GetCharacter() const;
virtual const std::shared_ptr<cWorld>& GetWorld() const;
virtual tVector GetCharPos() const;
virtual const std::shared_ptr<cGround>& GetGround() const;
virtual void AddPerturb(const tPerturb& perturb);
virtual void ApplyRandForce(double min_force, double max_force,
double min_dur, double max_dur, cSimObj* obj);
virtual void ApplyRandForce();
virtual cSimObj* RayTest(const tVector& beg, const tVector& end, tVector& out_intersection) const;
virtual void SetTerrainParamsLerp(double lerp);
virtual int GetNumTerrainParams() const;
virtual void OutputCharState(const std::string& out_file) const;
virtual bool HasFallen() const;
virtual bool HasStumbled() const;
virtual eCharType GetCharType() const;
virtual void SpawnProjectile();
virtual void SpawnBigProjectile();
virtual const std::vector<tObjEntry>& GetObjs() const;
virtual void SetPreSubstepCallback(tTimeCallbackFunc func);
virtual void SetPostSubstepCallback(tTimeCallbackFunc func);
virtual std::string GetName() const;
protected:
double mTime; // in seconds
int mNumUpdateSteps;
int mNumSimSubsteps;
double mWorldScale;
std::string mCharacterFile;
std::string mCharStateFile;
tVector mGravity;
std::shared_ptr<cWorld> mWorld;
std::shared_ptr<cGround> mGround;
std::shared_ptr<cSimCharacter> mChar;
eCharType mCharType;
eCharCtrl mCharCtrl;
std::string mExpLayer; // mostly for action exploration
bool mValidCharInitPos;
tVector mCharInitPos;
cTerrainGen2D::eType mTerrainType;
std::vector<Eigen::VectorXd> mTerrainParams;
double mTerrainBlend;
double mMinPerturb;
double mMaxPerturb;
double mMinPerturbDuration;
double mMaxPerturbDuration;
std::vector<tObjEntry> mObjs;
tTimeCallbackFunc mPreSubstepCallback;
tTimeCallbackFunc mPostSubstepCallback;
virtual void BuildWorld();
virtual bool BuildCharacter();
virtual void BuildGround();
virtual bool BuildController(std::shared_ptr<cCharController>& out_ctrl);
virtual bool BuildDogController(std::shared_ptr<cCharController>& out_ctrl) const;
virtual bool BuildDogControllerCacla(std::shared_ptr<cCharController>& out_ctrl) const;
virtual bool BuildDogControllerMACE(std::shared_ptr<cCharController>& out_ctrl) const;
virtual bool BuildGoatControllerMACE(std::shared_ptr<cCharController>& out_ctrl) const;
virtual bool BuildRaptorController(std::shared_ptr<cCharController>& out_ctrl) const;
virtual bool BuildRaptorControllerCacla(std::shared_ptr<cCharController>& out_ctrl) const;
virtual bool BuildRaptorControllerMACE(std::shared_ptr<cCharController>& out_ctrl) const;
virtual cWorld::ePlaneCons GetCharPlaneCons() const;
virtual void CreateCharacter(std::shared_ptr<cSimCharacter>& out_char) const;
virtual tVector GetDefaultCharPos() const;
virtual void InitCharacterPos(std::shared_ptr<cSimCharacter>& out_char) const;
virtual void UpdateWorld(double time_step);
virtual void UpdateCharacter(double time_step);
virtual void UpdateGround();
virtual void ResetGround();
virtual void PreSubstepUpdate(double time_step);
virtual void PostSubstepUpdate(double time_step);
virtual double GetViewDist() const;
virtual void ParseCharType(const std::string& char_ctrl_str, eCharType& out_char_type) const;
virtual void ParseCharCtrl(const std::string& char_ctrl_str, eCharCtrl& out_char_ctrl) const;
virtual void ParseTerrainParams(const cArgParser& parser, cTerrainGen2D::eType& out_type,
std::vector<Eigen::VectorXd>& out_params);
virtual void UpdateObjs(double time_step);
virtual void ClearObjs();
virtual void SpawnProjectile(double density, double min_size, double max_size,
double min_speed, double max_speed, double y_offset, double life_time);
};