7#include <mujoco/mujoco.h>
9#include <kdl/chain.hpp>
10#include <kdl/frames.hpp>
11#include <kdl/jntarray.hpp>
53 double pos[3] = { 0, 0, 0 };
75 const char *
path =
nullptr;
77 double pos[3] = { 0, 0, 0 };
109 double size[3] = { 0.03, 0.03, 0.03 };
110 double pos[3] = { 0.0, 0.0, 0.0 };
111 float rgba[4] = { 1.0f, 0.0f, 0.0f, 1.0f };
127 double pos[3] = { 0.0, 0.0, 1.0 };
128 double euler[3] = { 0.0, 0.0, 0.0 };
228 std::chrono::steady_clock::time_point
_tick_t{};
350 const char *base_body,
351 const char *tip_body,
352 const char *prefix =
"",
432 const char *title =
"MuJoCo",
499 const char *out_path,
520 const char *out_path,
657 const char *body_name,
659 const double *quat =
nullptr
718bool get_site_frame(
const mjModel *model, mjData *data,
const char *site_name, KDL::Frame *out);
725bool get_body_frame(
const mjModel *model, mjData *data,
const char *body_name, KDL::Frame *out);
void add_skybox_to_spec(mjSpec *spec)
bool compile_and_make_data(mjSpec *spec, mjModel **out_model, mjData **out_data)
void add_objects_to_spec(mjSpec *spec, const std::vector< SceneObject > &objects)
void add_floor_to_spec(mjSpec *spec)
void ensure_plugins_loaded()
void configure_spec(mjSpec *spec, const SceneSpec *sc)
void set_log_level(LogLevel level)
bool init_video_recorder(VideoRecorder *vr, mjModel *model, const char *out_path, int width=1280, int height=720, int fps=60)
bool record_frame(VideoRecorder *vr, mjModel *model, mjData *data)
void set_body_pose(mjModel *model, mjData *data, const char *body_name, const double pos[3], const double *quat=nullptr)
bool step_n(Robot *s, int n)
bool init_robot_from_mjcf(Robot *r, mjModel *model, mjData *data, const char *base_body, const char *tip_body, const char *prefix="", const ToolFrameSpec *tool=nullptr)
void set_joint_pos(Robot *r, const KDL::JntArray &q, bool call_forward=true)
bool get_site_frame(const mjModel *model, mjData *data, const char *site_name, KDL::Frame *out)
bool get_body_frame(const mjModel *model, mjData *data, const char *body_name, KDL::Frame *out)
bool build_scene(mjModel **out_model, mjData **out_data, const SceneSpec *spec)
bool attach_to_spec(mjSpec *robot_spec, const AttachmentSpec *a)
bool scene_add_object(mjModel **model, mjData **data, SceneSpec *spec, const SceneObject &obj)
bool scene_remove_object(mjModel **model, mjData **data, SceneSpec *spec, const std::string &name)
void destroy_scene(mjModel *model, mjData *data)
std::vector< std::string > get_camera_names(const mjModel *model)
bool save_model_xml(const mjModel *model, const char *path)
std::string scene_object_site_name(const SceneObject &obj, const char *site_name)
bool init_window_sim(Viewer *v, Robot *r, const char *title="MuJoCo")
bool use_camera(Viewer *v, const mjModel *model, const char *name)
bool init_window(Viewer *v, Robot *r, const char *title="MuJoCo", int width=1280, int height=720)
bool render(Viewer *v, const Robot *r)
bool is_running(const Viewer *v)
void env_add_robot(Env *env, Robot *robot)
ResetInfo reset(Env *env, const ResetOptions *options=nullptr)
bool init_env(Env *env, const SceneSpec *spec)
std::function< void(ResetContext *)> ResetHook
std::vector< std::pair< std::string, std::string > > contact_exclusions
std::vector< Robot * > robots
const ResetOptions * options
std::vector< AttachmentSpec > attachments
std::vector< int > kdl_to_mj_ctrl
std::vector< int > kdl_to_mj_qpos
std::vector< int > kdl_to_mj_dof
std::vector< double > jnt_pos_msr
std::vector< double > jnt_pos_cmd
std::vector< std::pair< double, double > > joint_limits
std::vector< double > jnt_vel_msr
std::vector< double > jnt_trq_cmd
std::vector< double > jnt_trq_msr
std::vector< std::string > joint_names
std::vector< RobotSpec > robots
std::vector< SceneObject > objects
std::vector< CameraSpec > cameras
std::chrono::steady_clock::time_point _tick_t