biped_joystickCenter.cpp
Go to the documentation of this file.
00001 #include "ros/ros.h"
00002 #include "sensor_msgs/Joy.h"
00003 #include "geometry_msgs/Twist.h"
00004 #include "bipedRobin_msgs/SetModeService.h"
00005 #include "std_srvs/Empty.h"
00006 
00007 /*
00008 Dieser Knoten verarbeitet die joy_msg von joy/joy_node und erzeugt daraus eine geometry_msgs::Twist die x y und rotation um die Z achse and den bipedRobin_teleop/biped_teleop knoten weitergibt.
00009 Weiters werden mit den Tasten auf dem Joypad verschiedene Services im bipedRobin_driver/biped_serializer Knoten aufgerufen
00010 Und es kann die Freigabe zum gehen and den bipedRobin_navigation/navigation_master gesendet werden
00011 */
00012 ros::ServiceClient acknowledge_client; //zum Aufrufen des Acknowledge services
00013 ros::ServiceClient setMode_client; //zum Aufrufen des setMode services
00014 ros::ServiceClient stop_client; //zum Aufrufen des stop services
00015 ros::ServiceClient walk_client; //zum Aufrufen des stop services
00016 
00017 void joyCallback( const sensor_msgs::Joy::ConstPtr& joy_msg )
00018 {
00019         bipedRobin_msgs::SetModeService setMode; //Nachrichten für services
00020         std_srvs::Empty empty;
00021 
00022         if(joy_msg->buttons[0] == 1){   //Knopf 1 setServiceMode 0
00023                 setMode.request.desiredMode = 0;
00024                 setMode_client.call(setMode);
00025         }
00026 
00027         if(joy_msg->buttons[1] == 1){   //Knopf 2 setServiceMode 2
00028                 setMode.request.desiredMode = 2;
00029                 setMode_client.call(setMode);
00030         }
00031 
00032         if(joy_msg->buttons[2] == 1){   //Knopf 3 setServiceMode 3
00033                 setMode.request.desiredMode = 3;
00034                 setMode_client.call(setMode);
00035         }
00036 
00037         if(joy_msg->buttons[3] == 1){   //Knopf 4 walk_srv
00038                 walk_client.call(empty);
00039         }
00040 
00041         if(joy_msg->buttons[8] == 1){   //Knopf SE acknowledge service
00042                 acknowledge_client.call(empty);
00043         }
00044 
00045         if(joy_msg->buttons[9] == 1){   //Knopf ST stop service
00046                 stop_client.call(empty);
00047         }
00048 }
00049 
00050 int main(int argc, char** argv)
00051 {
00052         ros::init(argc, argv, "biped_teleop_joy_node");
00053         ros::NodeHandle n;
00054 
00055         //subscriber for joy/joy_node
00056         ros::Subscriber joy_sub = n.subscribe( "joy", 10, &joyCallback );
00057         //service clients for bipedRobin_driver/biped_serializer
00058         setMode_client = n.serviceClient<bipedRobin_msgs::SetModeService>("setMode_srv");
00059         acknowledge_client = n.serviceClient<std_srvs::Empty>("acknowledge_srv");
00060         stop_client = n.serviceClient<std_srvs::Empty>("stop_srv");
00061         //service client fo bipedRobin_navigation/navigation_master,
00062         walk_client = n.serviceClient<std_srvs::Empty>("walk_srv");
00063 
00064         ros::Rate loop_rate(100);
00065         while( ros::ok() ) //publishen der Twist message mit 20 Hz
00066         {
00067                 ros::spinOnce();
00068 
00069                 loop_rate.sleep();
00070         }
00071 }
00072 


bipedRobin_driver
Author(s): Studentenaccount
autogenerated on Fri Nov 15 2013 11:11:40