TraveSim Adapters  0.1
Protobuf adapters for TraveSim project
travesim::proto::VisionSender Class Reference

Vision sender class with UDP and protobuf. More...

#include "vision_sender.hpp"

Collaboration diagram for travesim::proto::VisionSender:

Public Member Functions

 VisionSender (const std::string multicast_address, const short multicast_port)
 Construct a new Vision Sender object. More...
 
bool send (FieldState *p_field_state)
 Send vision data with UDP and protobuf. More...
 
void set_multicast_endpoint (const std::string multicast_address, const short multicast_port)
 Set the multicast endpoint. More...
 

Static Public Member Functions

static fira_message::sim_to_ref::Environment field_state_to_env_pb_msg (FieldState *p_field_state)
 Convert a FieldState object to a Environment protobuf message object. More...
 

Private Attributes

std::unique_ptr< udp::MulticastSendermulticast_sender
 

Detailed Description

Vision sender class with UDP and protobuf.

Definition at line 27 of file vision_sender.hpp.

Constructor & Destructor Documentation

◆ VisionSender()

travesim::proto::VisionSender::VisionSender ( const std::string  multicast_address,
const short  multicast_port 
)

Construct a new Vision Sender object.

Parameters
multicast_addressVision multicast address
multicast_portVision multicast port
Note
The multicast addresses must be in the range 224.0.0.0 through 239.255.255.255, see multicast IPv4 Multicast Address Space Registry or the RFC1112 for more informations.

Definition at line 22 of file vision_sender.cpp.

22  {
23  this->multicast_sender =
24  std::unique_ptr<udp::MulticastSender>(new udp::MulticastSender(multicast_address, multicast_port));
25 }
std::unique_ptr< udp::MulticastSender > multicast_sender

References multicast_sender.

Member Function Documentation

◆ field_state_to_env_pb_msg()

fira_message::sim_to_ref::Environment travesim::proto::VisionSender::field_state_to_env_pb_msg ( FieldState p_field_state)
static

Convert a FieldState object to a Environment protobuf message object.

Parameters
p_field_statePointer to field state to be converted
Returns
fira_message::sim_to_ref::Environment

Definition at line 46 of file vision_sender.cpp.

46  {
47  fira_message::sim_to_ref::Environment env_data;
48  fira_message::Frame* frame = env_data.mutable_frame();
49 
50  // Set step
51  env_data.set_step(p_field_state->time_step);
52 
53  // Set ball data
54  fira_message::Ball* frame_ball = frame->mutable_ball();
55 
56  frame_ball->set_x(p_field_state->ball.position.x);
57  frame_ball->set_y(p_field_state->ball.position.y);
58  frame_ball->set_vx(p_field_state->ball.velocity.x);
59  frame_ball->set_vy(p_field_state->ball.velocity.y);
60 
61  // Set yellow team
62  for (int i = 0; i < p_field_state->robots_per_team; i++) {
63  fira_message::Robot* robot = frame->add_robots_yellow();
64 
65  robot->set_robot_id(i);
66 
67  robot->set_x(p_field_state->yellow_team[i].position.x);
68  robot->set_y(p_field_state->yellow_team[i].position.y);
69  robot->set_orientation(p_field_state->yellow_team[i].angular_position);
70 
71  robot->set_vx(p_field_state->yellow_team[i].velocity.x);
72  robot->set_vy(p_field_state->yellow_team[i].velocity.y);
73  robot->set_vorientation(p_field_state->yellow_team[i].angular_velocity);
74  }
75 
76  // Set blue team
77  for (int i = 0; i < p_field_state->robots_per_team; i++) {
78  fira_message::Robot* robot = frame->add_robots_blue();
79 
80  robot->set_robot_id(i);
81 
82  robot->set_x(p_field_state->blue_team[i].position.x);
83  robot->set_y(p_field_state->blue_team[i].position.y);
84  robot->set_orientation(p_field_state->blue_team[i].angular_position);
85 
86  robot->set_vx(p_field_state->blue_team[i].velocity.x);
87  robot->set_vy(p_field_state->blue_team[i].velocity.y);
88  robot->set_vorientation(p_field_state->blue_team[i].angular_velocity);
89  }
90 
91  // Set field dimensions
92  fira_message::Field* field = env_data.mutable_field();
93 
94  field->set_width(FIELD_WIDTH_M);
95  field->set_length(FIELD_LENGTH_M);
96  field->set_goal_width(GOAL_WIDTH_M);
97  field->set_goal_depth(GOAL_DEPTH_M);
98 
99  return env_data;
100 }
#define FIELD_LENGTH_M
Definition: data_common.hpp:28
#define GOAL_DEPTH_M
Definition: data_common.hpp:30
#define GOAL_WIDTH_M
Definition: data_common.hpp:29
#define FIELD_WIDTH_M
Field and goal constants.
Definition: data_common.hpp:27

References travesim::FieldState::ball, travesim::FieldState::blue_team, FIELD_LENGTH_M, FIELD_WIDTH_M, GOAL_DEPTH_M, GOAL_WIDTH_M, travesim::EntityState::position, travesim::FieldState::robots_per_team, travesim::FieldState::time_step, travesim::EntityState::velocity, travesim::Vector2D::x, travesim::Vector2D::y, and travesim::FieldState::yellow_team.

Here is the caller graph for this function:

◆ send()

bool travesim::proto::VisionSender::send ( FieldState p_field_state)

Send vision data with UDP and protobuf.

Parameters
p_field_statePointer to field state to be sent
Returns
True if sent data successfully, false otherwise

Definition at line 27 of file vision_sender.cpp.

27  {
28  fira_message::sim_to_ref::Environment env_data = this->field_state_to_env_pb_msg(p_field_state);
29 
30  std::string buffer;
31  env_data.SerializeToString(&buffer);
32 
33  if (this->multicast_sender->send(buffer.c_str(), buffer.length()) == 0) {
34  ROS_WARN_STREAM("Error sending vision protobuff message");
35 
36  return false;
37  }
38 
39  return true;
40 }
static fira_message::sim_to_ref::Environment field_state_to_env_pb_msg(FieldState *p_field_state)
Convert a FieldState object to a Environment protobuf message object.
std::unique_ptr< udp::MulticastSender > multicast_sender

References field_state_to_env_pb_msg(), and multicast_sender.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_multicast_endpoint()

void travesim::proto::VisionSender::set_multicast_endpoint ( const std::string  multicast_address,
const short  multicast_port 
)

Set the multicast endpoint.

Parameters
multicast_addressVision multicast address
multicast_portVision multicast port
Note
The multicast addresses must be in the range 224.0.0.0 through 239.255.255.255, see multicast IPv4 Multicast Address Space Registry or the RFC1112 for more informations.

Definition at line 42 of file vision_sender.cpp.

42  {
43  this->multicast_sender->set_receiver_endpoint(multicast_address, multicast_port);
44 }
std::unique_ptr< udp::MulticastSender > multicast_sender

References multicast_sender.

Here is the caller graph for this function:

Member Data Documentation

◆ multicast_sender

std::unique_ptr<udp::MulticastSender> travesim::proto::VisionSender::multicast_sender
private

Pointer to UDP multicast sender

Definition at line 74 of file vision_sender.hpp.


The documentation for this class was generated from the following files: