esc.cpp
Go to the documentation of this file.
00001 #include <ros/ros.h>
00002 #include <string.h>
00003 #include <stdio.h>
00004 #include <math.h>
00005 #include <stdlib.h>
00006 #include <Ivy/ivy.h>
00007 #include <Ivy/ivyloop.h>
00008 #include "quad_esc/Esc.h"
00009 #include <Ivy/timer.h>
00010 
00011 quad_esc::Esc esc;
00012 ros::Publisher esc_message;
00013 
00014 
00015 /* 
00016  * Broadcast ESC information of quadrotor
00017  */
00018  
00019 void ESCCallback (IvyClientPtr app, void* data , int argc, char **argv)
00020 {
00021         
00022         int n = sscanf(argv[0],"%*d %*d %*d %*d %*d %*d %*d %*d %d %d %d %d %d %d %d %d",&esc.Front_rpm, &esc.Front_pwm, &esc.Back_rpm, &esc.Back_pwm, &esc.Left_rpm, &esc.Left_pwm, &esc.Right_rpm, &esc.Right_pwm);
00023 
00024         esc.header.stamp = ros::Time::now();
00025 
00026         esc_message.publish(esc);
00027 }
00028 
00029 void ROSCallback (TimerId id, void *user_data, unsigned long delta) 
00030 { 
00031         if (!ros::ok()){
00032                 IvyStop();
00033                 exit(0);
00034         }
00035 }
00036 
00037 int main(int argc, char **argv)
00038 {
00039         
00040         // Initializing ROS
00041         ros::init(argc, argv, "quad_esc");
00042         ros::NodeHandle nh("~");
00043         
00044         esc_message = nh.advertise<quad_esc::Esc>("esc", 1000);
00045 
00046         // Initializing Ivy
00047         IvyInit ("quad_status", "'Quad ESC' is READY!", 0, 0, 0, 0);
00048         IvyStart("127.255.255.255");
00049         TimerRepeatAfter (TIMER_LOOP, 500, ROSCallback, 0);
00050         
00051         // Binding Messages
00052         IvyBindMsg(ESCCallback, 0, "ISR_STUFF(.*)");
00053         
00054         IvyMainLoop();
00055         
00056         return 0;
00057 }


quad_esc
Author(s): Henrique
autogenerated on Mon Jan 6 2014 11:48:09