virtual_camera_conv.cpp
Go to the documentation of this file.
00001 
00009 #include <cmath>
00010 #include <ros/ros.h>
00011 #include <sensor_msgs/JointState.h>
00012 //#include <ViewControllers/PTZCamViewController.h>
00013 #include <omnicamera_msgs/VirtualCameraConfig.h>
00014 
00015 using std::string;
00016 
00017 using ros::Publisher;
00018 using ros::Subscriber;
00019 //using rviz::PTZCamViewController;
00020 using sensor_msgs::JointState;
00021 
00022 using omnicamera_msgs::VirtualCameraConfig;
00023 
00024 
00025 namespace {
00026 // Conversion mode from sensor_msgs/JointState to omnicamera/VirtualCameraConfig
00027 const int MODE_JOINT_STATE_IN = 0;
00028 int mode = MODE_JOINT_STATE_IN;
00029 
00030 string inTopic = "in";
00031 string outTopic = "out";
00032 
00033 Subscriber jointStateSub;
00034 
00035 VirtualCameraConfig out;
00036 Publisher pub;
00037 
00038 // Callback for MODE_JOINT_STATE_IN
00039 void jointStateCallback(const JointState::ConstPtr& msg) {
00040   // PTZCamViewController::PAN_SLOT, PTZCamViewController::TILT_SLOT protected...
00041 //  out.pan = msg->position[PTZCamViewController::PAN_SLOT];
00042 //  out.tilt = msg->position[PTZCamViewController::TILT_SLOT];
00043   out.pan = msg->position[0];
00044   out.tilt = msg->position[1];
00045 
00046   pub.publish(out);
00047 }
00048 } // anonymous namespace
00049 
00050 int main(int argc, char **argv) {
00051   ros::init(argc, argv, "virtual_camera_conv");
00052   ros::NodeHandle nh;
00053 
00054   // Construct a node handle with private ns to get private parameters...
00055   ros::NodeHandle pnh("~");
00056 
00057   // Initialize default values for virtual camera config.
00058   pnh.param(string("viewport_width"), out.viewportWidth, 512);
00059   pnh.param(string("viewport_height"), out.viewportHeight, 512);
00060   pnh.param(string("image_update_interval"), out.imageUpdateInterval, 3.0);
00061   pnh.param(string("pan"), out.pan, 0.0);
00062   pnh.param(string("tilt"), out.tilt, 0.0);
00063   pnh.param(string("horizontal_fov"), out.horizontalFov, M_PI / 180 * 90);
00064   pnh.param(string("vertical_fov"), out.verticalFov, M_PI / 180 * 90);
00065 
00066   // Conversion mode.
00067   pnh.param(string("mode"), mode, MODE_JOINT_STATE_IN);
00068   ROS_INFO("Conversion mode set to %d.", mode);
00069   switch (mode) {
00070   case MODE_JOINT_STATE_IN:
00071   default:
00072     jointStateSub = nh.subscribe(inTopic, 1, jointStateCallback);
00073   }
00074 
00075   pub = nh.advertise<VirtualCameraConfig>(outTopic, 1);
00076 
00077   ros::spin();
00078 
00079   return 0;
00080 }
 All Classes Namespaces Files Functions Variables Typedefs Defines


omnicamera
Author(s): Tomas Petricek / petrito1@cmp.felk.cvut.cz
autogenerated on Tue Dec 10 2013 14:26:53