ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
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="">
2 | No.2 Revision |
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="">
3 | No.3 Revision |
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);
}
4 | No.4 Revision |
Here is the same thing I tried with turtlesim and it works fine.
0;include "ros/ros.h"
include "geometry_msgs/Twist.h"
include "turtlesim/Pose.h"
include <sstream>
using namespacestd;std; ros::Publisher velocity_publisher; ros::Subscriber pose_sub; turtlesim::Poseturtlesim_pose;turtlesim_pose; void poseCallback(const turtlesim::Pose::ConstPtr & pose_message); void moveUp(doubledistance_tolerance);distance_tolerance); int main(int argc, char **argv) {ros::init(argc, argv, "sphero_move");ros::NodeHandlen;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::Rateloop_rate(0.5);loop_rate(0.5); moveUp(0.5);loop_rate.sleep();loop_rate.sleep();ros::spin();ros::spin();
return0;
}
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);
velocity_publisher.publish(vel_msg);
ros::spinOnce(); loop_rate.sleep();
}while((turtlesim_pose.x-8)<distance_tolerance);< p="">
}
5 | No.5 Revision |
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="">
}
6 | No.6 Revision |
Was making a mistake, and finally found it.
void poseCallback(const std_msgs::Float32::ConstPtr & pose_message){ ball_pose.data = pose_message->data;}
thanks