camera_webots.cpp
Go to the documentation of this file.
1 
6 #include <std_msgs/String.h>
7 #include "ros/ros.h"
8 #include <signal.h>
9 
10 #include <image_transport/image_transport.h>
11 
13 
14 #define TIME_STEP 32
15 
16 static int controllerCount;
17 static std::vector<std::string> controllerList;
18 
19 // catch names of the controllers availables on ROS network
20 void controllerNameCallback(const std_msgs::String::ConstPtr &name) {
22  controllerList.push_back(name->data);
23  ROS_INFO("Controller #%d: %s.", controllerCount, controllerList.back().c_str());
24 }
25 
26 void quit(int sig) {
27  ROS_INFO("User stopped the 'robot_information_parser' node.");
28  ros::shutdown();
29  exit(0);
30 }
31 
32 int main(int argc, char **argv) {
33 
34  std::string controllerName;
35  std::vector<std::string> deviceList;
36  int width, height;
37 
38  // create a node named 'robot_information_parser' on ROS network
39  ros::init(argc, argv, "camera", ros::init_options::AnonymousName);
40  ros::NodeHandle n;
41 
42  image_transport::ImageTransport it(n);
43  signal(SIGINT, quit);
44 
45  // subscribe to the topic model_name to get the list of availables controllers
46  ros::Subscriber nameSub = n.subscribe("model_name", 100, controllerNameCallback);
47  while (controllerCount < 3 || controllerCount < nameSub.getNumPublishers()) {
48  ros::spinOnce();
49  ros::spinOnce();
50  ros::spinOnce();
51  }
52  ros::spinOnce();
53 
54  for (int i = 0; i<controllerCount; i++){
55  if (controllerList[i].find("CAMERA") != std::string::npos) {
56  controllerName = controllerList[i];
57  }
58 
59  }
60 
61  // leave topic once it is not necessary anymore
62  nameSub.shutdown();
63 
64  // create camera object
65  WebotsCamera kamera(n, it, controllerName);
66  kamera.enable(n);
67  kamera.setFrames();
68  kamera.subscribe(n);
69  kamera.setCamInfo();
70  //tf::Quaternion q_rot;
71  //q_rot.setRPY(0.0, -1.56, 0.0);
72  //kamera.setPositionOrientation(tf::Vector3(0.0, 0.0, 1.5), q_rot);
73 
74  while(ros::ok()){
75  // publish camera image
76  kamera.publish();
77  kamera.transmitFrames();
78  ros::spinOnce();
79  }
80 }
WebotsCamera
Definition: rosinljubljana.h:493
controllerCount
static int controllerCount
Definition: camera_webots.cpp:16
controllerNameCallback
void controllerNameCallback(const std_msgs::String::ConstPtr &name)
Definition: camera_webots.cpp:20
main
int main(int argc, char **argv)
Definition: camera_webots.cpp:32
WebotsCamera::publish
void publish()
Definition: rosinljubljana_objects.cpp:837
quit
void quit(int sig)
Definition: camera_webots.cpp:26
Camera::transmitFrames
void transmitFrames()
Definition: rosinljubljana_objects.cpp:723
WebotsCamera::subscribe
void subscribe(ros::NodeHandle)
Definition: rosinljubljana_objects.cpp:830
rosinljubljana.h
WebotsCamera::enable
void enable(ros::NodeHandle)
Definition: rosinljubljana_objects.cpp:818
Camera::setFrames
void setFrames()
Definition: rosinljubljana_objects.cpp:713
WebotsCamera::setCamInfo
void setCamInfo()
Definition: rosinljubljana_objects.cpp:772
controllerList
static std::vector< std::string > controllerList
Definition: camera_webots.cpp:17


rosinljubljana
Author(s): Igor Banfi
autogenerated on Mon Feb 24 2020 12:32:36