ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

Here is the same thing I tried with turtlesim and it works fine.

#include "ros/ros.h"
#include "geometry_msgs/Twist.h"
#include "turtlesim/Pose.h"
#include <sstream>

using namespace std;

ros::Publisher velocity_publisher;
ros::Subscriber pose_sub;
turtlesim::Pose turtlesim_pose;

void poseCallback(const turtlesim::Pose::ConstPtr & pose_message);
void moveUp(double distance_tolerance);

int main(int argc, char **argv)
{
    ros::init(argc, argv, "sphero_move");
    ros::NodeHandle n;

    velocity_publisher = n.advertise<geometry_msgs::twist>("/turtle1/cmd_vel", 1000);
    pose_sub = n.subscribe("/turtle1/pose", 10, poseCallback);  
    ros::Rate loop_rate(0.5);

    moveUp(0.5);
    loop_rate.sleep();

    ros::spin();

    return 0;

}

void poseCallback(const turtlesim::Pose::ConstPtr & pose_message)
{
    turtlesim_pose.x=pose_message->x;
}

void moveUp(double distance_tolerance)
{
    geometry_msgs::Twist vel_msg;
    ros::Rate loop_rate(10);

    do{
        vel_msg.linear.x = 1;
        vel_msg.linear.y = 0;
        vel_msg.linear.z = 0;

        velocity_publisher.publish(vel_msg);

        ros::spinOnce();
        loop_rate.sleep();

        }while((turtlesim_pose.x-8)<distance_tolerance); }="" <="" pre="">

Here is the same thing I tried with turtlesim and it works fine.

#include "ros/ros.h"
#include "geometry_msgs/Twist.h"
#include "turtlesim/Pose.h"
#include <sstream>

using namespace std;

ros::Publisher velocity_publisher;
ros::Subscriber pose_sub;
turtlesim::Pose turtlesim_pose;

void poseCallback(const turtlesim::Pose::ConstPtr & pose_message);
void moveUp(double distance_tolerance);

int main(int argc, char **argv)
{
    ros::init(argc, argv, "sphero_move");
    ros::NodeHandle n;

    velocity_publisher = n.advertise<geometry_msgs::twist>("/turtle1/cmd_vel", 1000);
    pose_sub = n.subscribe("/turtle1/pose", 10, poseCallback);  
    ros::Rate loop_rate(0.5);

    moveUp(0.5);
    loop_rate.sleep();

    ros::spin();

    return 0;

}

void poseCallback(const turtlesim::Pose::ConstPtr & pose_message)
{
    turtlesim_pose.x=pose_message->x;
}

void moveUp(double distance_tolerance)
{
    geometry_msgs::Twist vel_msg;
    ros::Rate loop_rate(10);

    do{
        vel_msg.linear.x = 1;
        vel_msg.linear.y = 0;
        vel_msg.linear.z = 0;

        velocity_publisher.publish(vel_msg);

        ros::spinOnce();
        loop_rate.sleep();

        }while((turtlesim_pose.x-8)<distance_tolerance); }="" <="" pre="">

Here is the same thing I tried with turtlesim and it works fine.

#include "ros/ros.h"
#include "geometry_msgs/Twist.h"
#include "turtlesim/Pose.h"
#include <sstream>

include "ros/ros.h"

include "geometry_msgs/Twist.h"

include "turtlesim/Pose.h"

include <sstream>

using namespace std; ros::Publisher velocity_publisher; ros::Subscriber pose_sub; turtlesim::Pose turtlesim_pose; void poseCallback(const turtlesim::Pose::ConstPtr & pose_message); void moveUp(double distance_tolerance); int main(int argc, char **argv) { ros::init(argc, argv, "sphero_move"); ros::NodeHandle n;
velocity_publisher = n.advertise<geometry_msgs::twist>("/turtle1/cmd_vel", n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 1000);
 pose_sub = n.subscribe("/turtle1/pose", 10, poseCallback);  
 ros::Rate loop_rate(0.5);

 moveUp(0.5);
 loop_rate.sleep();

 ros::spin();

 return 0;

}

}

void poseCallback(const turtlesim::Pose::ConstPtr & pose_message) { turtlesim_pose.x=pose_message->x; } }

void moveUp(double distance_tolerance) { geometry_msgs::Twist vel_msg; ros::Rate loop_rate(10); loop_rate(10);

do{
     vel_msg.linear.x = 1;
     vel_msg.linear.y = 0;
     vel_msg.linear.z = 0;

     velocity_publisher.publish(vel_msg);

     ros::spinOnce();
     loop_rate.sleep();

        }while((turtlesim_pose.x-8)<distance_tolerance); }="" <="" pre="">
}while((turtlesim_pose.x-8)<distance_tolerance);

}

Here is the same thing I tried with turtlesim and it works fine.

include "ros/ros.h"

include "geometry_msgs/Twist.h"

include "turtlesim/Pose.h"

include <sstream>

using namespace std; std;

ros::Publisher velocity_publisher; ros::Subscriber pose_sub; turtlesim::Pose turtlesim_pose; turtlesim_pose;

void poseCallback(const turtlesim::Pose::ConstPtr & pose_message); void moveUp(double distance_tolerance); distance_tolerance);

int main(int argc, char **argv) { ros::init(argc, argv, "sphero_move"); ros::NodeHandle n; n;

 

velocity_publisher = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", n.advertise<geometry_msgs::twist>("/turtle1/cmd_vel", 1000); pose_sub = n.subscribe("/turtle1/pose", 10, poseCallback);
ros::Rate loop_rate(0.5); loop_rate(0.5);

moveUp(0.5); loop_rate.sleep(); loop_rate.sleep();

ros::spin();

ros::spin();

return 0;

0;

}

void poseCallback(const turtlesim::Pose::ConstPtr & pose_message) { turtlesim_pose.x=pose_message->x; }

void moveUp(double distance_tolerance) { geometry_msgs::Twist vel_msg; ros::Rate loop_rate(10);

do{ vel_msg.linear.x = 1; vel_msg.linear.y = 0; vel_msg.linear.z = 0; velocity_publisher.publish(vel_msg); ros::spinOnce(); loop_rate.sleep(); }while((turtlesim_pose.x-8)<distance_tolerance);

0;

velocity_publisher.publish(vel_msg);

ros::spinOnce(); loop_rate.sleep();

}while((turtlesim_pose.x-8)<distance_tolerance);< p="">

}

Here is the same thing I tried with turtlesim Was making a mistake, and it works fine.finally found it.

include "ros/ros.h"

include "geometry_msgs/Twist.h"

include "turtlesim/Pose.h"

include <sstream>

void poseCallback(const std_msgs::Float32::ConstPtr & pose_message){ ball_pose.data = pose_message->data;}

using namespace std;thanks

ros::Publisher velocity_publisher; ros::Subscriber pose_sub; turtlesim::Pose turtlesim_pose;

void poseCallback(const turtlesim::Pose::ConstPtr & pose_message); void moveUp(double distance_tolerance);

int main(int argc, char **argv) { ros::init(argc, argv, "sphero_move"); ros::NodeHandle n;

velocity_publisher = n.advertise<geometry_msgs::twist>("/turtle1/cmd_vel", 1000); pose_sub = n.subscribe("/turtle1/pose", 10, poseCallback);
ros::Rate loop_rate(0.5);

moveUp(0.5); loop_rate.sleep();

ros::spin();

return 0;

}

void poseCallback(const turtlesim::Pose::ConstPtr & pose_message) { turtlesim_pose.x=pose_message->x; }

void moveUp(double distance_tolerance) { geometry_msgs::Twist vel_msg; ros::Rate loop_rate(10);

do{ vel_msg.linear.x = 1; vel_msg.linear.y = 0; vel_msg.linear.z = 0;

velocity_publisher.publish(vel_msg);

ros::spinOnce(); loop_rate.sleep();

}while((turtlesim_pose.x-8)<distance_tolerance);< p="">

}

Was making a mistake, and finally found it.

void poseCallback(const std_msgs::Float32::ConstPtr & pose_message){ ball_pose.data = pose_message->data;}

thanks