00001 #include <arm_navigation_msgs/DisplayTrajectory.h> 00002 //#include <planning_environment/monitors/joint_state_monitor.h> 00003 #include <boost/thread.hpp> 00004 #include <ros/ros.h> 00005 00006 void spinThread() 00007 { 00008 ros::spin(); 00009 } 00010 00011 int main(int argc, char** argv) 00012 { 00013 ros::init(argc, argv, "display_trajectory_publisher"); 00014 boost::thread spin_thread(&spinThread); 00015 ros::NodeHandle root_handle; 00016 //planning_environment::JointStateMonitor joint_state_monitor; 00017 ros::Publisher display_trajectory_publisher = root_handle.advertise<arm_navigation_msgs::DisplayTrajectory>("joint_path_display", 1); 00018 while(display_trajectory_publisher.getNumSubscribers() < 1 && root_handle.ok()) 00019 { 00020 ROS_INFO("Waiting for subscriber"); 00021 ros::Duration(0.1).sleep(); 00022 } 00023 arm_navigation_msgs::DisplayTrajectory display_trajectory; 00024 unsigned int num_points = 100; 00025 00026 display_trajectory.model_id = "pr2"; 00027 display_trajectory.trajectory.joint_trajectory.header.frame_id = "base_footprint"; 00028 display_trajectory.trajectory.joint_trajectory.header.stamp = ros::Time::now(); 00029 display_trajectory.trajectory.joint_trajectory.joint_names.push_back("r_shoulder_pan_joint"); 00030 display_trajectory.trajectory.joint_trajectory.points.resize(num_points); 00031 00032 for(unsigned int i=0; i < num_points; i++) 00033 { 00034 display_trajectory.trajectory.joint_trajectory.points[i].positions.push_back(-(M_PI*i/4.0)/num_points); 00035 } 00036 //display_trajectory.robot_state.joint_state = joint_state_monitor.getJointStateRealJoints(); 00037 ROS_INFO("Publishing path for display"); 00038 display_trajectory_publisher.publish(display_trajectory); 00039 //joint_state_monitor.stop(); 00040 ros::shutdown(); 00041 spin_thread.join(); 00042 return(0); 00043 }