invalid conversion from void(*) to ros
Hi , i am new to ROS and arduino . i had some problems with my codes . Do you guys mind helping me take a look at my codes ?
#include <ros.h> #include <std_msgs/Int32.h> #include <std_msgs/Int16.h> #include <std_msgs/Float32.h> #include <std_msgs/String.h> /**********************/ /* Variables setup */ /**********************/ int interruptPin = 2; char bufferX[9]; char bufferY[9]; String str = ""; String str_ = ""; bool go = false; int R; int L; std_msgs::Int32 lwheel_msg; std_msgs::Int32 rwheel_msg; std_msgs::Float32 lmotor_msg; std_msgs::Float32 rmotor_msg; /***********************/ /* Subscribed Nodes */ /***********************/ ros::NodeHandle nh; ros::Publisher lwheel("lwheel", &lwheel_msg); ros::Publisher rwheel("rwheel", &rwheel_msg); void lmotorCb(){ Serial1.print("V21="); Serial1.println(L); Serial1.println("V31=1"); } void rmotorCb(){ Serial1.print("V22="); Serial1.println(R); Serial1.println("V31=1"); } ros::Subscriber<std_msgs::Float32> lwheel_vtarget("lwheel_vtarget", lmotorCb); ros::Subscriber<std_msgs::Float32> rwheel_vtarget("rwheel_vtarget", rmotorCb); void setup() { Serial.begin(115200); Serial1.begin(38400); pinMode(interruptPin, INPUT); UCSR1C = (UCSR1C & 0xCF) | (0b11 << 4); // Enable odd parity /**********************/ /* ROS Node setup */ /**********************/ nh.getHardware()->setBaud(115200); nh.initNode(); nh.subscribe(lwheel_vtarget); nh.subscribe(rwheel_vtarget); nh.advertise(lwheel); nh.advertise(rwheel); } void loop() { //Fetching encoder line Serial1.find('='); str = Serial1.readStringUntil(','); str_ = Serial1.readStringUntil('\n'); strncpy(bufferX, str.c_str(), 9); //String to char rwheel_msg.data = (unsigned int)strtol(&bufferX[1], NULL, 16); strncpy(bufferY, str_.c_str(), 9); //String to char lwheel_msg.data = (unsigned int)strtol(&bufferY[1], NULL, 16); lwheel.publish(&lwheel_msg); nh.spinOnce(); rwheel.publish(&rwheel_msg); nh.spinOnce(); /**************************************/ /* Tesiting routine (use when needed) */ /**************************************/ /* Serial.print("Left wheel: "); Serial.print(lwheel_msg.data); Serial.print(" - Right wheel: "); Serial.print(rwheel_msg.data); Serial.print("\n"); */ }
And this is the error shown
/tmp/arduino_modified_sketch_623299/AMC-8004.ino:52:77: warning: invalid conversion from 'void ()()' to 'ros::Subscriber<std_msgs::float32>::CallbackT {aka void ()(const std_msgs::Float32&)}' [-fpermissive] ros::Subscriber<std_msgs::float32> lwheel_vtarget("lwheel_vtarget", lmotorCb); ^