Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "ros/ros.h"
- #include "sensor_msgs/JointState.h"
- #include <vector>
- #include <sstream>
- #include <iostream>
- #include <fstream>
- using namespace std;
- /**
- * This tutorial demonstrates simple sending of messages over the ROS system.
- */
- int main(int argc, char **argv)
- {
- /**
- * The ros::init() function needs to see argc and argv so that it can perform
- * any ROS arguments and name remapping that were provided at the command line. For programmatic
- * remappings you can use a different version of init() which takes remappings
- * directly, but for most command-line programs, passing argc and argv is the easiest
- * way to do it. The third argument to init() is the name of the node.
- *
- * You must call one of the versions of ros::init() before using any other
- * part of the ROS system.
- */
- vector<double> values;
- ifstream infile ;
- infile.open("/home/x/catkin_ws_PTU/src/flir_ptu/flir_ptu_driver/src/data1.csv");
- while(infile)
- {
- string s;
- if(getline(infile,s)) break;
- istringstream ss( s );
- vector <string> record;
- while (ss)
- {
- string s;
- if (!getline( ss, s, ',' )) break;
- values.push_back( atof(s.c_str()));
- }
- }
- for(int i = 0;i<values.size();i++ )
- {
- cout << values[i] << endl;
- }
- ros::init(argc, argv, "talker");
- /**
- * NodeHandle is the main access point to communications with the ROS system.
- * The first NodeHandle constructed will fully initialize this node, and the last
- * NodeHandle destructed will close down the node.
- */
- ros::NodeHandle n;
- /**
- * The advertise() function is how you tell ROS that you want to
- * publish on a given topic name. This invokes a call to the ROS
- * master node, which keeps a registry of who is publishing and who
- * is subscribing. After this advertise() call is made, the master
- * node will notify anyone who is trying to subscribe to this topic name,
- * and they will in turn negotiate a peer-to-peer connection with this
- * node. advertise() returns a Publisher object which allows you to
- * publis messages on that topic through a call to publish(). Once
- * all copies of the returned Publisher object are destroyed, the topic
- * will be automatically unadvertised.
- *
- * The second parameter to advertise() is the size of the message queue
- * used for publishing messages. If messages are published more quickly
- * than we can send them, the number here specifies how many messages to
- * buffer up before throwing some away.
- */
- ros::Publisher command_pub = n.advertise<sensor_msgs::JointState>("/ptu/cmd", 1);
- ros::Rate loop_rate(10);
- /**
- * A count of how many messages we have sent. This is used to create
- * a unique string for each message.
- */
- int i = 0;
- while (ros::ok())
- {
- /**
- * This is a message object. You stuff it with data, and then publish it.
- */
- sensor_msgs::JointState msg;
- double pan_vel = 0.0;
- double tilt_vel = 0.0;
- std::vector<double> vel(2);
- vel[0] = pan_vel;
- vel[1] = values[i];
- cout << "vel: " << vel[i] << endl;
- msg.velocity = vel;
- /**
- * The publish() function is how you send messages. The parameter
- * is the message object. The type of this object must agree with the type
- * given as a template parameter to the advertise<>() call, as was done
- * in the constructor above.
- */
- command_pub.publish(msg);
- if(i<100)
- {
- i++;
- }
- else
- {
- cout << "re" << endl;
- }
- //ros::Duration(1).sleep();
- ros::spinOnce();
- loop_rate.sleep();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment