TraveSim Adapters  0.1
Protobuf adapters for TraveSim project
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
gazebo_services.mock.cpp
Go to the documentation of this file.
1 /**
2  * @file gazebo_services.mock.cpp
3  * @author Felipe Gomes de Melo <felipe.gomes@thunderatz.org>
4  * @brief
5  * @date 04/2021
6  *
7  * @copyright MIT License - Copyright (c) 2021 ThundeRatz
8  *
9  */
10 
11 #include <ros/ros.h>
12 #include <ros/console.h>
13 #include <gazebo_msgs/ModelState.h>
14 #include <gazebo_msgs/ModelStates.h>
15 #include <gazebo_msgs/SetModelState.h>
16 #include <gazebo_msgs/GetModelState.h>
17 
19 
20 #include <iostream>
21 #include <unordered_map>
22 
23 std::unordered_map<std::string, gazebo_msgs::ModelState> world_data;
24 
25 bool set_model_state(gazebo_msgs::SetModelState::Request& req, gazebo_msgs::SetModelState::Response& res) {
26  world_data[req.model_state.model_name] = req.model_state;
27  res.success = true;
28  return true;
29 }
30 
31 bool get_model_state(gazebo_msgs::GetModelState::Request& req, gazebo_msgs::GetModelState::Response& res) {
32  res.pose = world_data.at(req.model_name).pose;
33  res.twist = world_data.at(req.model_name).twist;
34  res.success = true;
35  return true;
36 }
37 
38 int main(int argc, char** argv) {
39  ros::init(argc, argv, "gazebo_mock");
40  ros::NodeHandle nh;
41 
42  ros::ServiceServer setter_service = nh.advertiseService("/gazebo/set_model_state", set_model_state);
43  ros::ServiceServer getter_service = nh.advertiseService("/gazebo/get_model_state", get_model_state);
44 
45  ros::Publisher pub = nh.advertise<gazebo_msgs::ModelStates>("/gazebo/model_states", 1, true);
46 
47  gazebo_msgs::ModelStates empty_msg;
48 
49  pub.publish(empty_msg);
50 
51  ros::spin();
52 
53  return 0;
54 }
int main(int argc, char **argv)
Collection of data converters between ROS and local formats.
std::unordered_map< std::string, gazebo_msgs::ModelState > world_data
bool set_model_state(gazebo_msgs::SetModelState::Request &req, gazebo_msgs::SetModelState::Response &res)
bool get_model_state(gazebo_msgs::GetModelState::Request &req, gazebo_msgs::GetModelState::Response &res)