Bratmobile
robot.h
1 #ifndef ROBOT_H
2 #define ROBOT_H
3 //box2d robot body and kinematic model
4 #include "box2d/box2d.h"
5 #include <stdio.h>
6 #include <stdlib.h>
7 #include <unistd.h>
8 #include <math.h>
9 #include<vector>
10 #include <map>
11 #include "const.h"
12 
13 
18 class Robot {
19 private:
20  b2FixtureDef fixtureDef;
21  b2Body* m_body=NULL;
22  b2PolygonShape m_box;
23  public:
24 
29  Robot() = default;
30 
31  Robot(b2World * world) {
32  b2BodyDef m_bodyDef;
33  m_bodyDef.type = b2_dynamicBody;
34  m_bodyDef.position.Set(0.0f, 0.0f);
35  m_body = world->CreateBody(&m_bodyDef);
36  //body->GetUserData().pointer = reinterpret_cast<uintptr_t>(this);
37  m_body->GetUserData().pointer=reinterpret_cast<uintptr_t>(ROBOT_FLAG);
38  b2Vec2 center(ROBOT_BOX_OFFSET_X, ROBOT_BOX_OFFSET_Y);
39  m_box.SetAsBox(ROBOT_HALFWIDTH, ROBOT_HALFLENGTH, center, ROBOT_BOX_OFFSET_ANGLE);
40  fixtureDef.shape = &m_box;
41  fixtureDef.friction =0;
42  m_body->CreateFixture(&fixtureDef);
43 
44  }
45 
46  b2Body* body(){return m_body;}
47 
48  b2PolygonShape box(){return m_box;}
52  static std::vector <b2Vec2> get_vertices(){
53  std::vector <b2Vec2>result ={b2Vec2(-ROBOT_HALFWIDTH+ROBOT_BOX_OFFSET_X, -ROBOT_HALFLENGTH+ROBOT_BOX_OFFSET_Y),
54  b2Vec2(ROBOT_HALFWIDTH+ROBOT_BOX_OFFSET_X, -ROBOT_HALFLENGTH+ROBOT_BOX_OFFSET_Y),
55  b2Vec2(-ROBOT_HALFWIDTH+ROBOT_BOX_OFFSET_X, ROBOT_HALFLENGTH+ROBOT_BOX_OFFSET_Y),
56  b2Vec2(ROBOT_HALFWIDTH+ROBOT_BOX_OFFSET_X, ROBOT_HALFLENGTH+ROBOT_BOX_OFFSET_Y) };
57  return result;
58  }
59 
60  static b2Vec2 bl(){
61  return b2Vec2(-ROBOT_HALFWIDTH+ROBOT_BOX_OFFSET_X, -ROBOT_HALFLENGTH+ROBOT_BOX_OFFSET_Y);
62  }
63 
64  static b2Vec2 tr(){
65  return b2Vec2(ROBOT_HALFWIDTH+ROBOT_BOX_OFFSET_X, ROBOT_HALFLENGTH+ROBOT_BOX_OFFSET_Y);
66  }
67 
68 };
69 
70 
71 
72 #endif
73 
Robot class for Box2D simulation.
Definition: robot.h:18
Robot()=default
This creates a robot object but it's uninitialised!
static std::vector< b2Vec2 > get_vertices()
Returns vertices in local frame. Order: bl, br, tl, tr.
Definition: robot.h:52