ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
#include <ros/ros.h>
#include <std_msgs/String.h>
#include <geometry_msgs/Pose.h>
#include <vector>
class TowelThrower{
public:
ros::NodeHandle node_handle;
ros::Publisher new_coors_pub;
ros::Subscriber vision_sub;
TowelThrower()
{
new_coors_pub = node_handle.advertise<std_msgs::String>("coords_requests", 1000);
vision_sub = node_handle.subscribe("vision_coors", 1, &TowelThrower::callback, this);
}
std::vector<geometry_msgs::Pose> create_path(double coorx, double coory)
{
std::vector<geometry_msgs::Pose> waypoints;
return waypoints;
}
void callback(const geometry_msgs::Pose msg)
{
std_msgs::String nsg;
nsg.data = "GIVE";
ROS_INFO("%s", nsg.data.c_str());
new_coors_pub.publish(nsg);
}
};
int main(int argc, char** argv)
{
ros::init(argc, argv, "towel_thrower_node");
TowelThrower tt;
ros::spin();
return 0;
}
There are number of problems with this code:
2 | No.2 Revision |
Here is a solution to your problem:
#include <ros/ros.h>
#include <std_msgs/String.h>
#include <geometry_msgs/Pose.h>
#include <vector>
class TowelThrower{
public:
ros::NodeHandle node_handle;
ros::Publisher new_coors_pub;
ros::Subscriber vision_sub;
TowelThrower()
{
new_coors_pub = node_handle.advertise<std_msgs::String>("coords_requests", 1000);
vision_sub = node_handle.subscribe("vision_coors", 1, &TowelThrower::callback, this);
}
std::vector<geometry_msgs::Pose> create_path(double coorx, double coory)
{
std::vector<geometry_msgs::Pose> waypoints;
return waypoints;
}
void callback(const geometry_msgs::Pose msg)
{
std_msgs::String nsg;
nsg.data = "GIVE";
ROS_INFO("%s", nsg.data.c_str());
new_coors_pub.publish(nsg);
}
};
int main(int argc, char** argv)
{
ros::init(argc, argv, "towel_thrower_node");
TowelThrower tt;
ros::spin();
return 0;
}
There are number of problems with this your original code:
3 | No.3 Revision |
Here is a solution to your problem:
#include <ros/ros.h>
#include <std_msgs/String.h>
#include <geometry_msgs/Pose.h>
#include <vector>
class TowelThrower{
public:
ros::NodeHandle node_handle;
ros::Publisher new_coors_pub;
ros::Subscriber vision_sub;
TowelThrower()
{
new_coors_pub = node_handle.advertise<std_msgs::String>("coords_requests", 1000);
vision_sub = node_handle.subscribe("vision_coors", 1, &TowelThrower::callback, this);
}
private:
ros::NodeHandle node_handle;
ros::Publisher new_coors_pub;
ros::Subscriber vision_sub;
std::vector<geometry_msgs::Pose> create_path(double coorx, double coory)
{
std::vector<geometry_msgs::Pose> waypoints;
return waypoints;
}
void callback(const geometry_msgs::Pose msg)
{
std_msgs::String nsg;
nsg.data = "GIVE";
ROS_INFO("%s", nsg.data.c_str());
new_coors_pub.publish(nsg);
}
};
int main(int argc, char** argv)
{
ros::init(argc, argv, "towel_thrower_node");
TowelThrower tt;
ros::spin();
return 0;
}
There are number of problems with your original code: