2#ifndef DIFF_DRIVE_ROBOT_PART_H
3#define DIFF_DRIVE_ROBOT_PART_H
5#include "bitrl/bitrl_config.h"
13#include "chrono/assets/ChColor.h"
14#include "chrono/physics/ChSystem.h"
15#include "chrono/physics/ChLinkMotorRotationSpeed.h"
18namespace rb::bitrl_chrono{
20enum class CollisionFamily :
int_t
41class CHRONO_DiffDriveRobot_Part {
46 virtual ~CHRONO_DiffDriveRobot_Part()=
default;
49 virtual void init()=0;
52 const std::string& get_name()
const {
return name_; }
55 void set_name(
const std::string& name) { name_ = name; }
58 void set_mesh_name(
const std::string& name) { mesh_name_ = name; }
61 std::string get_mesh_name()
const {
return mesh_name_; }
65 std::string get_vis_mesh_file()
const;
68 real_t get_density()
const{
return density_; }
71 void set_density(real_t density) { density_ = density; }
74 std::shared_ptr<chrono::ChBodyAuxRef> get_body_ptr()
const {
return body_; }
77 std::shared_ptr<chrono::ChBodyAuxRef> get_chassis_ptr()
const {
return chassis_; }
80 const chrono::ChVector3d& get_pos()
const {
return body_->GetFrameRefToAbs().GetPos(); }
83 const chrono::ChQuaternion<>& get_rotation()
const {
return body_->GetFrameRefToAbs().GetRot(); }
86 void enable_collision(
bool state);
90 CHRONO_DiffDriveRobot_Part(
const std::string& name,
92 std::shared_ptr<chrono::ChContactMaterial> mat,
93 chrono::ChSystem* system,
94 const chrono::ChVector3d& body_pos,
95 const chrono::ChQuaternion<>& body_rot,
96 std::shared_ptr<chrono::ChBodyAuxRef> chassis_body,
101 void do_init_(
const std::string& mesh_name,
const chrono::ChVector3d& offset,
102 const chrono::ChColor& color, real_t density);
105 void add_visualization_assets();
108 void add_collision_shapes();
110 std::shared_ptr<chrono::ChBodyAuxRef> body_;
111 std::shared_ptr<chrono::ChContactMaterial> contact_material_;
112 std::shared_ptr<chrono::ChBodyAuxRef> chassis_;
114 chrono::ChVector3d pos_;
115 chrono::ChVector3d offset_;
116 chrono::ChColor color_;
117 chrono::ChSystem* system_;
119 chrono::ChQuaternion<> rot_;
122 std::string mesh_name_;
127 bool is_initialized_{
false};
Definition bitrl_consts.h:14
int int_t
integer type
Definition bitrl_types.h:33
double real_t
real_t
Definition bitrl_types.h:23