From 60a54111556cc17a6ea64d4e44f0b4d4f24eb39d Mon Sep 17 00:00:00 2001 From: Yash Jangir <60678034+offjangir@users.noreply.github.com> Date: Fri, 12 Mar 2021 16:01:19 +0530 Subject: [PATCH 01/13] UART_rosserial_final cleared chatter node and non useful co.nversions. Added direct conversion of twist to wheel vel and them to command byte. Wrote command byte to MDDS --- Drive/uart_drive/uart_drive_rosserial.ino | 84 +++++++++++++++-------- 1 file changed, 54 insertions(+), 30 deletions(-) diff --git a/Drive/uart_drive/uart_drive_rosserial.ino b/Drive/uart_drive/uart_drive_rosserial.ino index dc97ce0..d7e5aaa 100644 --- a/Drive/uart_drive/uart_drive_rosserial.ino +++ b/Drive/uart_drive/uart_drive_rosserial.ino @@ -7,9 +7,7 @@ #define wmax 2.84 ros::NodeHandle nh; //Node decleration - geometry_msgs::Twist twist_obj; -geometry_msgs::Twist pwms_obj; float v; //recieved Lin Vel from cmd_vel float omega; //recieved Ang vel from cmd_vel @@ -37,8 +35,6 @@ void sub_cb(const geometry_msgs::Twist &twist_obj) } ros::Subscriber cmd_vel_sub("/cmd_vel", &sub_cb); -ros::Publisher chatter("chatter", &twist_obj); -ros::Publisher pwms_pub("/pwms", &pwms_obj); float mymap(float c,float a,float b,float d,float e) { @@ -49,7 +45,6 @@ void setup() { nh.initNode(); nh.subscribe(cmd_vel_sub); - nh.advertise(chatter); for ( int i=0; i<3 ;i++) { @@ -80,42 +75,71 @@ void loop() vel_wheels[4] = v - omega; //middle vel_wheels[5] = v - omega; //front - twist_obj.linear.x = vel_wheels[0]; - twist_obj.linear.y = vel_wheels[1]; - twist_obj.linear.z = vel_wheels[2]; - twist_obj.angular.x = vel_wheels[3]; - twist_obj.angular.y = vel_wheels[4]; - twist_obj.angular.z = vel_wheels[5]; - - //hardware serial for getting velocity from jetson to arduinomega + //Converting and wrting the UART velocities to MDDS //for cytron 1 - motorLspeed1 = vel_wheels[3]; - motorRspeed1 = vel_wheels[0]; + motorLspeed1 = vel_wheels[0]; + motorRspeed1 = vel_wheels[3]; if(motorLspeed1>=0) - MDDS1Serial.write(motorLspeed1); - if(motorRspeed1>=0); - MDDS1Serial.write(motorRspeed1); - + commandbyte = 0; + else if(motorLspeed1 <0) + commandbyte =0x40; + + commandbyte = commandbyte | motorLspeed1; + MDDS1Serial.write(commandbyte); + + if(motorRspeed1>=0) + commandbyte = 0xC0; + else if(motorRspeed1<0) + commandbyte = 0x80; + + commandbyte = commandbyte | motorRspeed1; + MDDS1Serial.write(commandbyte); + + Serial.println(commandbyte); + //for cytron 2 motorLspeed2 = vel_wheels[1]; motorRspeed2 = vel_wheels[4]; - if(motorLspeed2>=0) - MDDS2Serial.write(motorLspeed2); - if(motorRspeed2>=0); - MDDS2Serial.write(motorRspeed2); + if(motorLspeed2>=0) + commandbyte = 0; + else if(motorLspeed2 <0) + commandbyte =0x40; + + commandbyte = commandbyte | motorLspeed2; + MDDS2Serial.write(commandbyte); + if(motorRspeed2>=0) + commandbyte = 0xC0; + else if(motorRspeed2<0) + commandbyte = 0x80; + + commandbyte = commandbyte | motorRspeed2; + MDDS2Serial.write(commandbyte); + + Serial.println(commandbyte); //cytron 3 - motorLspeed3 = vel_wheels[5]; - motorRspeed3 = vel_wheels[2]; + + motorLspeed3 = vel_wheels[2]; + motorRspeed3 = vel_wheels[5]; if(motorLspeed3>=0) - MDDS3Serial.write(motorLspeed3); - if(motorRspeed3>=0); - MDDS3Serial.write(motorRspeed3); - - chatter.publish(&twist_obj); + commandbyte = 0; + else if(motorLspeed3 <0) + commandbyte =0x40; + + commandbyte = commandbyte | motorLspeed1; + MDDS3Serial.write(commandbyte); + + if(motorRspeed3>=0) + commandbyte = 0xC0; + else if(motorRspeed3<0) + commandbyte = 0x80; + + commandbyte = commandbyte | motorRspeed3; + MDDS3Serial.write(commandbyte); + nh.spinOnce(); delay(200); From eb9119edf56204bfc6b414413896d2ac1a4a1dc3 Mon Sep 17 00:00:00 2001 From: Yash Jangir <60678034+offjangir@users.noreply.github.com> Date: Fri, 12 Mar 2021 16:05:35 +0530 Subject: [PATCH 02/13] minute change in right and left wheel notation --- Drive/uart_drive/uart_drive_rosserial.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Drive/uart_drive/uart_drive_rosserial.ino b/Drive/uart_drive/uart_drive_rosserial.ino index d7e5aaa..bf27366 100644 --- a/Drive/uart_drive/uart_drive_rosserial.ino +++ b/Drive/uart_drive/uart_drive_rosserial.ino @@ -65,12 +65,12 @@ void setup() { void loop() { - //right wheels + //Left wheels vel_wheels[0] = v + omega; //back vel_wheels[1] = v + omega; //middle vel_wheels[2] = v + omega; //front - // For left wheels + // For Right wheels vel_wheels[3] = v - omega; //back vel_wheels[4] = v - omega; //middle vel_wheels[5] = v - omega; //front From 289156d94c7a1da1ba2dac5dc1e0d9007b9ac8e3 Mon Sep 17 00:00:00 2001 From: Yash Jangir <60678034+offjangir@users.noreply.github.com> Date: Fri, 12 Mar 2021 16:08:59 +0530 Subject: [PATCH 03/13] nh to standard node name changed --- Drive/uart_drive/uart_drive_rosserial.ino | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Drive/uart_drive/uart_drive_rosserial.ino b/Drive/uart_drive/uart_drive_rosserial.ino index bf27366..7deb9f1 100644 --- a/Drive/uart_drive/uart_drive_rosserial.ino +++ b/Drive/uart_drive/uart_drive_rosserial.ino @@ -6,7 +6,7 @@ #define vmax 0.22 #define wmax 2.84 -ros::NodeHandle nh; //Node decleration +ros::NodeHandle Uart_vel_command; //Node decleration geometry_msgs::Twist twist_obj; float v; //recieved Lin Vel from cmd_vel @@ -43,8 +43,8 @@ float mymap(float c,float a,float b,float d,float e) void setup() { - nh.initNode(); - nh.subscribe(cmd_vel_sub); + Uart_vel_command.initNode(); + Uart_vel_command.subscribe(cmd_vel_sub); for ( int i=0; i<3 ;i++) { @@ -140,7 +140,7 @@ void loop() commandbyte = commandbyte | motorRspeed3; MDDS3Serial.write(commandbyte); - nh.spinOnce(); + Uart_vel_command.spinOnce(); delay(200); From 4018b1eb4e5ff0eb9c22a0cc40a98742df277a80 Mon Sep 17 00:00:00 2001 From: Yash Jangir <60678034+offjangir@users.noreply.github.com> Date: Tue, 16 Mar 2021 15:50:58 +0530 Subject: [PATCH 04/13] Delete wheel_vel.py --- Drive/uart_drive/wheel_vel.py | 56 ----------------------------------- 1 file changed, 56 deletions(-) delete mode 100644 Drive/uart_drive/wheel_vel.py diff --git a/Drive/uart_drive/wheel_vel.py b/Drive/uart_drive/wheel_vel.py deleted file mode 100644 index 3306661..0000000 --- a/Drive/uart_drive/wheel_vel.py +++ /dev/null @@ -1,56 +0,0 @@ -import rospy -import serial -from geometry_msgs.msg import Twist - -vmax ="max velocity " -omegamax ="max omega" - -class drive(): - def __init__(self): - self.vel_sub = rospy.Subscriber("cmd_vel",Twist,self.cmd_cb) - self.rate = rospy.Rate(100); - self.my_serial = serial.Serial('/dev/tty/ACMO',115200,timeout=1) - - def cmd_cb(self,data): - self.v = data.linear.x - self.omega = data.angular.z - - right_wheel =self.v + self.omega - left_wheel = self.v - self.omega - - if (left_wheel > 0): - left_speed = self.mymap(left_wheel, 0, VMAX+OMEGAMAX, 0, 63) - else: - left_speed = self.mymap(-left_wheel, 0, VMAX+OMEGAMAX, 65, 127) - - if (right_wheel > 0): - right_speed = self.mymap(right_wheel, 0, VMAX+OMEGAMAX, 129, 191) - else: - right_speed = self.mymap(-right_wheel, 0, VMAX+OMEGAMAX, 193, 255) - - if (self.v == 0 and self.omega == 0): - right_wheel = 128 - left_wheel = 64 - - # first send command for left wheels - command = str(left_speed) - command = int(bin(int(command)).replace("0b","")) - - self.my_serial.write(command) - - # right wheels - command = str(right_speed) - command = int(bin(int(command)).replace("0b","")) - - self.my_serial.write(command) - - self.rate.sleep() - - def mymap(self,c,a,b,d,e): - return d + (c-a)*(e-d)/(b-a) - - -if __name__ == "__main__": - rospy.init_node("motor_controller") - drive() - rospy.spin() \ No newline at end of file From 6a8d3e7e499d6b046ac7474c690ba81db5df3889 Mon Sep 17 00:00:00 2001 From: Yash Jangir <60678034+offjangir@users.noreply.github.com> Date: Tue, 16 Mar 2021 15:51:06 +0530 Subject: [PATCH 05/13] Delete uart_drive.ino --- Drive/uart_drive/uart_drive.ino | 126 -------------------------------- 1 file changed, 126 deletions(-) delete mode 100644 Drive/uart_drive/uart_drive.ino diff --git a/Drive/uart_drive/uart_drive.ino b/Drive/uart_drive/uart_drive.ino deleted file mode 100644 index 5646c5d..0000000 --- a/Drive/uart_drive/uart_drive.ino +++ /dev/null @@ -1,126 +0,0 @@ - -#include -#define baudrate 115200 -#define vmax 0.22 -#define wmax 2.84 -int rxPin =0; -int txPin = 1; -float v; -float omega; -float vel_wheels[6]; -int serial_pins[3] = {8,9,10}; -float left_wheel,right_wheel; -signed int motorLspeed1,motorLspeed2,motorLspeed3,motorRspeed1,motorRspeed2,motorRspeed3; -uint8_t commandbyte; -SoftwareSerial myserial = SoftwareSerial(rxPin,txPin); -SoftwareSerial MDDS1Serial = SoftwareSerial(rxPin,serial_pins[0]); -SoftwareSerial MDDS2Serial = SoftwareSerial(rxPin,serial_pins[1]); -SoftwareSerial MDDS3Serial = SoftwareSerial(rxPin,serial_pins[2]); - -float mymap(float c,float a,float b,float d,float e) -{ - return d+(c-a)*(e-d)/(b-a); - } - -void setup() { - - myserial.begin(baudrate); - delay(1000); - for ( int i=0; i<3 ;i++) - { - pinMode(serial_pins[i],OUTPUT); - } - - MDDS1Serial.begin(baudrate); - MDDS2Serial.begin(baudrate); - MDDS3Serial.begin(baudrate); - delay(1000); - - } - -void loop() -{ - //hardware serial for getting velocity from jetson to arduinomega - if(myserial.available()>0) - { - left_wheel = myserial.read(); - right_wheel = myserial.read(); - } - for (int i =0;i<3;i++) - { vel_wheels[i] = left_wheel; - } - for (int i =5;i>=3;i--) - { vel_wheels[i] = right_wheel; - - } - - //for cytron 1 - motorLspeed1 = vel_wheels[0]; - motorRspeed1 = vel_wheels[3]; - - if(motorLspeed1>=0) - commandbyte = 0; - else if(motorLspeed1 <0) - commandbyte =0x40; - - commandbyte = commandbyte | motorLspeed1; - MDDS1Serial.write(commandbyte); - - if(motorRspeed1>=0) - commandbyte = 0xC0; - else if(motorRspeed1<0) - commandbyte = 0x80; - - commandbyte = commandbyte | motorRspeed1; - MDDS1Serial.write(commandbyte); - - Serial.println(commandbyte); - - //for cytron 2 - motorLspeed2 = vel_wheels[1]; - motorRspeed2 = vel_wheels[4]; - - if(motorLspeed2>=0) - commandbyte = 0; - else if(motorLspeed2 <0) - commandbyte =0x40; - - commandbyte = commandbyte | motorLspeed2; - MDDS2Serial.write(commandbyte); - - if(motorRspeed2>=0) - commandbyte = 0xC0; - else if(motorRspeed2<0) - commandbyte = 0x80; - - commandbyte = commandbyte | motorRspeed2; - MDDS2Serial.write(commandbyte); - - Serial.println(commandbyte); - //cytron 3 - - motorLspeed3 = vel_wheels[2]; - motorRspeed3 = vel_wheels[5]; - - if(motorLspeed3>=0) - commandbyte = 0; - else if(motorLspeed3 <0) - commandbyte =0x40; - - commandbyte = commandbyte | motorLspeed1; - MDDS3Serial.write(commandbyte); - - if(motorRspeed3>=0) - commandbyte = 0xC0; - else if(motorRspeed3<0) - commandbyte = 0x80; - - commandbyte = commandbyte | motorRspeed3; - MDDS3Serial.write(commandbyte); - - Serial.println(commandbyte); - - - delay(200); - -} From 84ea4770ac5a2a18f70e607f2419c8f2fc454503 Mon Sep 17 00:00:00 2001 From: Yash Jangir <60678034+offjangir@users.noreply.github.com> Date: Fri, 19 Mar 2021 00:15:10 +0530 Subject: [PATCH 06/13] Create rover.msg --- Drive/msg/rover.msg | 1 + 1 file changed, 1 insertion(+) create mode 100644 Drive/msg/rover.msg diff --git a/Drive/msg/rover.msg b/Drive/msg/rover.msg new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Drive/msg/rover.msg @@ -0,0 +1 @@ + From d6968008da0e537833005c835bdfd4e544a0afa1 Mon Sep 17 00:00:00 2001 From: Yash Jangir <60678034+offjangir@users.noreply.github.com> Date: Fri, 19 Mar 2021 01:35:02 +0530 Subject: [PATCH 07/13] uploading new --- Drive/uart_drive/uart_drive_rosserial.ino | 147 ---------------------- 1 file changed, 147 deletions(-) delete mode 100644 Drive/uart_drive/uart_drive_rosserial.ino diff --git a/Drive/uart_drive/uart_drive_rosserial.ino b/Drive/uart_drive/uart_drive_rosserial.ino deleted file mode 100644 index 7deb9f1..0000000 --- a/Drive/uart_drive/uart_drive_rosserial.ino +++ /dev/null @@ -1,147 +0,0 @@ -#include -#include -#include -#include -#define baudrate 115200 -#define vmax 0.22 -#define wmax 2.84 - -ros::NodeHandle Uart_vel_command; //Node decleration -geometry_msgs::Twist twist_obj; - -float v; //recieved Lin Vel from cmd_vel -float omega; //recieved Ang vel from cmd_vel -float ang_vel; //omega mapped down to ang_vel - - -int rxPin =0; -int txPin = 1; -float vel_wheels[6]; -int serial_pins[3] = {8,9,10}; -float motorLspeed1,motorLspeed2,motorLspeed3,motorRspeed1,motorRspeed2,motorRspeed3; - - -SoftwareSerial MDDS1Serial=SoftwareSerial(rxPin,serial_pins[0]); -SoftwareSerial MDDS2Serial=SoftwareSerial(rxPin,serial_pins[1]); -SoftwareSerial MDDS3Serial=SoftwareSerial(rxPin,serial_pins[2]); - -void sub_cb(const geometry_msgs::Twist &twist_obj) -{ - ang_vel = twist_obj.angular.z; - omega = mymap(ang_vel , -2.84, 2.84, -0.5, 0.5); - //if (ang_vel <= 0.05 && ang_vel >= -0.05) omega = 0; - //else omega = map(ang_vel, -2.84, 2.84, -0.5, 0.5); - v = twist_obj.linear.x; -} - -ros::Subscriber cmd_vel_sub("/cmd_vel", &sub_cb); - -float mymap(float c,float a,float b,float d,float e) -{ - return d+(c-a)*(e-d)/(b-a); - } - -void setup() { - - Uart_vel_command.initNode(); - Uart_vel_command.subscribe(cmd_vel_sub); - - for ( int i=0; i<3 ;i++) - { - pinMode(serial_pins[i],OUTPUT); - } - - MDDS1Serial.begin(baudrate); - MDDS2Serial.begin(baudrate); - MDDS3Serial.begin(baudrate); - - delay(1000); - - MDDS1Serial.write(0x80); - MDDS2Serial.write(0x80); - MDDS3Serial.write(0x80); - delay(100); - } - -void loop() -{ - //Left wheels - vel_wheels[0] = v + omega; //back - vel_wheels[1] = v + omega; //middle - vel_wheels[2] = v + omega; //front - - // For Right wheels - vel_wheels[3] = v - omega; //back - vel_wheels[4] = v - omega; //middle - vel_wheels[5] = v - omega; //front - - //Converting and wrting the UART velocities to MDDS - //for cytron 1 - motorLspeed1 = vel_wheels[0]; - motorRspeed1 = vel_wheels[3]; - - if(motorLspeed1>=0) - commandbyte = 0; - else if(motorLspeed1 <0) - commandbyte =0x40; - - commandbyte = commandbyte | motorLspeed1; - MDDS1Serial.write(commandbyte); - - if(motorRspeed1>=0) - commandbyte = 0xC0; - else if(motorRspeed1<0) - commandbyte = 0x80; - - commandbyte = commandbyte | motorRspeed1; - MDDS1Serial.write(commandbyte); - - Serial.println(commandbyte); - - //for cytron 2 - motorLspeed2 = vel_wheels[1]; - motorRspeed2 = vel_wheels[4]; - - if(motorLspeed2>=0) - commandbyte = 0; - else if(motorLspeed2 <0) - commandbyte =0x40; - - commandbyte = commandbyte | motorLspeed2; - MDDS2Serial.write(commandbyte); - - if(motorRspeed2>=0) - commandbyte = 0xC0; - else if(motorRspeed2<0) - commandbyte = 0x80; - - commandbyte = commandbyte | motorRspeed2; - MDDS2Serial.write(commandbyte); - - Serial.println(commandbyte); - //cytron 3 - - motorLspeed3 = vel_wheels[2]; - motorRspeed3 = vel_wheels[5]; - - if(motorLspeed3>=0) - commandbyte = 0; - else if(motorLspeed3 <0) - commandbyte =0x40; - - commandbyte = commandbyte | motorLspeed1; - MDDS3Serial.write(commandbyte); - - if(motorRspeed3>=0) - commandbyte = 0xC0; - else if(motorRspeed3<0) - commandbyte = 0x80; - - commandbyte = commandbyte | motorRspeed3; - MDDS3Serial.write(commandbyte); - - Uart_vel_command.spinOnce(); - - delay(200); - -} From 15dea2fa1025b44db51910bebe6b6983d344ca2e Mon Sep 17 00:00:00 2001 From: Yash Jangir <60678034+offjangir@users.noreply.github.com> Date: Fri, 19 Mar 2021 01:37:44 +0530 Subject: [PATCH 08/13] added new uart code direct subscribe and sent commands to cytron --- Drive/Arm_Drive_uart/Arm_drive_uart.ino | 74 +++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 Drive/Arm_Drive_uart/Arm_drive_uart.ino diff --git a/Drive/Arm_Drive_uart/Arm_drive_uart.ino b/Drive/Arm_Drive_uart/Arm_drive_uart.ino new file mode 100644 index 0000000..08a25b8 --- /dev/null +++ b/Drive/Arm_Drive_uart/Arm_drive_uart.ino @@ -0,0 +1,74 @@ +#include +#include +#include +#define baudrate 115200 + +ros::NodeHandle Uart_vel_command; //Node decleration +Controls_msgs::Rover Rover_obj; +//defining variables for recieved msg here +int right_vel; +int left_vel ; + +//declaring seiral pins and cyttron serial +int rxPin =0; +int txPin = 1; +float vel_wheels[6]; +int serial_pins[3] = {8,9,10}; + +SoftwareSerial MDDS1Serial=SoftwareSerial(rxPin,serial_pins[0]); +SoftwareSerial MDDS2Serial=SoftwareSerial(rxPin,serial_pins[1]); +SoftwareSerial MDDS3Serial=SoftwareSerial(rxPin,serial_pins[2]); + +//callback for subscriber +void sub_cb( const controls_msgs::Rover &Rover_obj){ + right_vel = Rover_obj.right_wheel_vel ; + left_vel = Rover_obj.left_wheel_vel ; + +} +ros::SubscriberRover_values_sub("/To_Arduino_msg", &sub_cb); +//Subscriber + +void setup() { + + Uart_vel_command.initNode(); + Uart_vel_command.subscribe(Rover_values_sub); + + + for ( int i=0; i<3 ;i++) + { + pinMode(serial_pins[i],OUTPUT); + } + + MDDS1Serial.begin(baudrate); + MDDS2Serial.begin(baudrate); + MDDS3Serial.begin(baudrate); + + delay(1000); + int a = 0 ; + int b = 128 ; + MDDS1Serial.write(a); + MDDS1Serial.write(b); + + MDDS2Serial.write(a); + MDDS2Serial.write(b); + + MDDS3Serial.write(a); + MDDS3Serial.write(b); + delay(100); + + } + +void loop() +{ MDDS1Serial.write(right_wheel_vel); + MDDS1Serial.write(left_wheel_vel); + + MDDS2Serial.write(right_wheel_vel); + MDDS2Serial.write(left_wheel_vel); + + MDDS3Serial.write(right_wheel_vel); + MDDS3Serial.write(left_wheel_vel); + Uart_vel_command.spinOnce(); + + delay(200); + +} From 852b71f308ca4562b0ba1bb1cfc51b86a3a665e3 Mon Sep 17 00:00:00 2001 From: Harsh Nagle Date: Sat, 20 Mar 2021 18:37:05 +0530 Subject: [PATCH 09/13] arm values written --- Drive/Arm_Drive_uart/Arm_drive_uart.ino | 90 ++++++++++++++++++++++++- 1 file changed, 88 insertions(+), 2 deletions(-) diff --git a/Drive/Arm_Drive_uart/Arm_drive_uart.ino b/Drive/Arm_Drive_uart/Arm_drive_uart.ino index 08a25b8..041e507 100644 --- a/Drive/Arm_Drive_uart/Arm_drive_uart.ino +++ b/Drive/Arm_Drive_uart/Arm_drive_uart.ino @@ -8,6 +8,18 @@ Controls_msgs::Rover Rover_obj; //defining variables for recieved msg here int right_vel; int left_vel ; +bool left_bev_dir +bool left_bev_pwm +bool right_bev_dir +bool right_bev_pwm +bool l1_dir +bool l1_pwm +bool l2_dir +bool l2_pwm +bool base_dir +bool base_pwm +bool stepper_dir +bool stepper_step //declaring seiral pins and cyttron serial int rxPin =0; @@ -15,6 +27,32 @@ int txPin = 1; float vel_wheels[6]; int serial_pins[3] = {8,9,10}; +#define POT1 A3 +#define POT2 A4 + +//1 is for 6 inch linear actuator, 2 is the 4 inch linear actuator, 3 is for the base rotator +//DIR1, PWM1, DIR2, PWM2, DIR3, PWM3 +int pin[6] = {7,13,6,12,5,11}; +//pot is the potentiometer reading. l is the stoke length(extension only). vel is the stoke velocity +float pot1,l1,vel1; +float pot2,l2,vel2; +float vel3; +//x,y is the stoke length that has to be reached. we get it from the final_ext topic. k is the right joystick input for the base rotation +float x,y,k; + +const int dirPin = 2; +const int stepPin = 3; +const int stepsPerRevolution = 100; +const int left_bev_pwm_pin = 8; +const int right_bev_pwm_pin = 9; +const int left_bev_dir_pin = 24; +const int right_bev_dir_pin = 26; + + +const int left_bevel_pwm = 80; +const int right_bevel_pwm = 80; +const int k =10; + SoftwareSerial MDDS1Serial=SoftwareSerial(rxPin,serial_pins[0]); SoftwareSerial MDDS2Serial=SoftwareSerial(rxPin,serial_pins[1]); SoftwareSerial MDDS3Serial=SoftwareSerial(rxPin,serial_pins[2]); @@ -23,7 +61,34 @@ SoftwareSerial MDDS3Serial=SoftwareSerial(rxPin,serial_pins[2]); void sub_cb( const controls_msgs::Rover &Rover_obj){ right_vel = Rover_obj.right_wheel_vel ; left_vel = Rover_obj.left_wheel_vel ; - + left_bev_dir = Rover_obj.left_bev_dir ; + if(Rover_obj.left_bev_pwm == true) + left_bev_pwm = 80 ; + else + left_bev_pwm = 0 ; + right_bev_dir = Rover_obj.right_bev_dir ; + if(Rover_obj.right_bev_pwm == true) + right_bev_pwm = 80 ; + else + right_bev_pwm = 0 ; + l1_dir = Rover_obj.l1_dir ; + if(Rover_obj.l1_pwm == true) + l1_pwm = k ; + else + l1_pwm = 0 ; + l2_dir = Rover_obj.l2_dir ; + if(Rover_obj.l2_pwm == true) + l2_pwm = k ; + else + l2_pwm = 0 ; + base_dir = Rover_obj.base_dir ; + if(Rover_obj.base_pwm == true) + base_pwm = 200 ; + else + base_pwm = 0 ; + stepper_dir = Rover_obj.stepper_dir ; + stepper_step = Rover_obj.stepper_step ; + } ros::SubscriberRover_values_sub("/To_Arduino_msg", &sub_cb); //Subscriber @@ -55,6 +120,12 @@ void setup() { MDDS3Serial.write(a); MDDS3Serial.write(b); delay(100); + + pinMode(stepPin, OUTPUT); + pinMode(dirPin, OUTPUT); + for(int i=0; i<6; i++){ + pinMode(pin[i],OUTPUT); + } } @@ -69,6 +140,21 @@ void loop() MDDS3Serial.write(left_wheel_vel); Uart_vel_command.spinOnce(); - delay(200); + + digitalWrite(pin[4], base_dir); + analogWrite(pin[5], base_pwm); + digitalWrite(left_bev_dir_pin, left_bev_dir); // verify + analogWrite(left_bev_pwm_pin, left_bev_pwm); + digitalWrite(right_bev_dir_pin, right_bev_pwm); // verify + analogWrite(right_bev_pwm_pin, right_bevl_pwm); + digitalWrite(pin[0], l1_dir); + analogWrite(pin[1], l1_pwm); + digitalWrite(pin[2], l2_dir); // verify + analogWrite(pin[3], l3_pwm); + digitalWrite(dirPin, stepper_dir); + digitalWrite(stepPin, stepper_step); + delay(200); + + } From 21d9e08ae6d8b83b215ef08b233b2668740c2b2d Mon Sep 17 00:00:00 2001 From: Cheriyan Homey <54581625+cheriyanhomey@users.noreply.github.com> Date: Sun, 28 Mar 2021 18:26:06 +0530 Subject: [PATCH 10/13] feedback from potentiometer --- Drive/Arm_Drive_uart/Arm_drive_uart.ino | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Drive/Arm_Drive_uart/Arm_drive_uart.ino b/Drive/Arm_Drive_uart/Arm_drive_uart.ino index 041e507..4d77768 100644 --- a/Drive/Arm_Drive_uart/Arm_drive_uart.ino +++ b/Drive/Arm_Drive_uart/Arm_drive_uart.ino @@ -52,6 +52,8 @@ const int right_bev_dir_pin = 26; const int left_bevel_pwm = 80; const int right_bevel_pwm = 80; const int k =10; +const int l1 = 293.39 * (10**-3); +const int l2 = 240.49 * (10**-3); SoftwareSerial MDDS1Serial=SoftwareSerial(rxPin,serial_pins[0]); SoftwareSerial MDDS2Serial=SoftwareSerial(rxPin,serial_pins[1]); @@ -92,6 +94,8 @@ void sub_cb( const controls_msgs::Rover &Rover_obj){ } ros::SubscriberRover_values_sub("/To_Arduino_msg", &sub_cb); //Subscriber +ros::Publisher chatter_pub = n.advertise("chatter", 1000); +//publisher void setup() { @@ -154,6 +158,10 @@ void loop() digitalWrite(dirPin, stepper_dir); digitalWrite(stepPin, stepper_step); delay(200); + int f1 = analogRead(A3); + int f2 = analogRead(A4); // pwm from potentiometer + float s1= (f1/255)*f1; // feedback stroke length + float s2= (f2/255)*f2; From 45e8d565c54441b63f5290c699269a2be6e863fb Mon Sep 17 00:00:00 2001 From: Harsh Nagle Date: Mon, 29 Mar 2021 23:17:59 +0530 Subject: [PATCH 11/13] arm completed --- Drive/Arm_Drive_uart/Arm_drive_uart.ino | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Drive/Arm_Drive_uart/Arm_drive_uart.ino b/Drive/Arm_Drive_uart/Arm_drive_uart.ino index 4d77768..b74d74e 100644 --- a/Drive/Arm_Drive_uart/Arm_drive_uart.ino +++ b/Drive/Arm_Drive_uart/Arm_drive_uart.ino @@ -55,6 +55,8 @@ const int k =10; const int l1 = 293.39 * (10**-3); const int l2 = 240.49 * (10**-3); +float arr[2] = { } + SoftwareSerial MDDS1Serial=SoftwareSerial(rxPin,serial_pins[0]); SoftwareSerial MDDS2Serial=SoftwareSerial(rxPin,serial_pins[1]); SoftwareSerial MDDS3Serial=SoftwareSerial(rxPin,serial_pins[2]); @@ -94,7 +96,7 @@ void sub_cb( const controls_msgs::Rover &Rover_obj){ } ros::SubscriberRover_values_sub("/To_Arduino_msg", &sub_cb); //Subscriber -ros::Publisher chatter_pub = n.advertise("chatter", 1000); +ros::Publisher chatter_pub = n.advertise("chatter", 1000); //publisher void setup() { @@ -160,8 +162,13 @@ void loop() delay(200); int f1 = analogRead(A3); int f2 = analogRead(A4); // pwm from potentiometer - float s1= (f1/255)*f1; // feedback stroke length - float s2= (f2/255)*f2; + float s1= (f1/255)*l1; // feedback stroke length + float s2= (f2/255)*l2; + std_msgs::Float64MultiArray array_msg; + array_msg.data.resize(2); + array_msg.data[1]=s1 + array_msg.data[2]=s2 + chatter_pub.publish(array_msg) From 10042bbb4b1225a25aa76978a4f0c6bd6fd68a07 Mon Sep 17 00:00:00 2001 From: Yash Jangir <60678034+offjangir@users.noreply.github.com> Date: Tue, 30 Mar 2021 10:34:15 +0530 Subject: [PATCH 12/13] changed topic name subscriber --- Drive/Arm_Drive_uart/Arm_drive_uart.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Drive/Arm_Drive_uart/Arm_drive_uart.ino b/Drive/Arm_Drive_uart/Arm_drive_uart.ino index b74d74e..e3cf91f 100644 --- a/Drive/Arm_Drive_uart/Arm_drive_uart.ino +++ b/Drive/Arm_Drive_uart/Arm_drive_uart.ino @@ -94,7 +94,7 @@ void sub_cb( const controls_msgs::Rover &Rover_obj){ stepper_step = Rover_obj.stepper_step ; } -ros::SubscriberRover_values_sub("/To_Arduino_msg", &sub_cb); +ros::SubscriberRover_values_sub("/To_Arduino", &sub_cb); //Subscriber ros::Publisher chatter_pub = n.advertise("chatter", 1000); //publisher From 42e67ac56c05d57b5664158058519d8033c98633 Mon Sep 17 00:00:00 2001 From: Yash Jangir <60678034+offjangir@users.noreply.github.com> Date: Fri, 2 Apr 2021 15:19:03 +0530 Subject: [PATCH 13/13] Update Arm_drive_uart.ino --- Drive/Arm_Drive_uart/Arm_drive_uart.ino | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Drive/Arm_Drive_uart/Arm_drive_uart.ino b/Drive/Arm_Drive_uart/Arm_drive_uart.ino index e3cf91f..55d3c1d 100644 --- a/Drive/Arm_Drive_uart/Arm_drive_uart.ino +++ b/Drive/Arm_Drive_uart/Arm_drive_uart.ino @@ -94,16 +94,14 @@ void sub_cb( const controls_msgs::Rover &Rover_obj){ stepper_step = Rover_obj.stepper_step ; } -ros::SubscriberRover_values_sub("/To_Arduino", &sub_cb); -//Subscriber -ros::Publisher chatter_pub = n.advertise("chatter", 1000); -//publisher + void setup() { Uart_vel_command.initNode(); Uart_vel_command.subscribe(Rover_values_sub); - + ros::Publisher chatter_pub = n.advertise("chatter", 1000); + //publisher for ( int i=0; i<3 ;i++) { @@ -136,7 +134,12 @@ void setup() { } void loop() -{ MDDS1Serial.write(right_wheel_vel); +{ + ros::SubscriberRover_values_sub("/To_Arduino", &sub_cb); + //Subscriber + + + MDDS1Serial.write(right_wheel_vel); MDDS1Serial.write(left_wheel_vel); MDDS2Serial.write(right_wheel_vel);