PROGRESS REPORT
Name : Sandeepkumar B
Roll no : 25BMC053
DAY 1:
In my first day my first task was to explore different kinds of rovers and cobot and chose one
of the unique ones in both of them and prepare a one minute pitch on that .
PPT: [Link]
I selected Eagle Rover — NASA LTV and Techman series cobots because of its
uniqueness like Advanced multi planitory lunar terrian vehicle rover(LTV) for
Eagle Rover — NASA LTV
and Built-in, native vision intelligence for Techman series cobots.
In second session I learnt the basics of an 3D design in Fusion 360 software how
and what type of file should be created for specific tasks in fusion 360 .
Files like :
Part design
Assembly design
Hybrid design
Drawing
After file creation I stepped into the different views of the drawing in Fusion 360
Next I learnt the importance of the 2D design in creating a 3D structure
And then exploring to the tools of fusion 360 :
2D tools :
Lines
Rectangle
Circle
Arc
Polygon
Ellipse
Slot
Spline
Conic curve
Point
Text
Other tools:
Mirror
Circular pattern
Rectangular pattern
Sketch dimension
Fillet
Chamfer
Trim
Offset
In day learning I constructed a 2D structure with its dimensions
DAY 2:
In second day I explored the basic 3D designing tools in Fusion 360
3D tools:
Extrude
Box
Cylinder
Sphere
Hole
Fillet
Chamfer
Shell
Circular pattern
Rectangular pattern
Pattern on path
And I designed some of the designs
And then initially i done a design 2D sketch based 3D shape
And then I dived into a little complex basic designs with another features like:
And I had a try in assembly design in Fusion 360
DAY 3:
In day 3 we went into the topic of embedded systems and microcontrollers
Initially we had an oppurtinuty to explore different kinds of microcontrollers and explain
them to others as a overview on microcontrollers.
A [Link]
I explored some of the microcontrollers overview:
ESP 32
Stm32
Arduino
Raspberry pi 5
And the basics of multimeter to check:
conectivity
voltage
Current (Ampire)
DAY 5:
In day 5 we used esp32 and connected a ps5 controller for giving inputs to the drivers
Initially we installed the ps5 pakages library in ardiuno IDE for the communication between
ps5 controller and the esp 32 .
Code for communicating ps5 and esp32
#include <ps5Controller.h>
void setup() {
[Link](115200);
[Link]("MAC"); // ESP32 Bluetooth MAC
[Link]("Waiting for PS5...");
void loop() {
if ([Link]()) {
[Link]("PS5 Connected");
delay(1000);
}
Next we explore different kinds of motors :
Motor Type Operating Voltage Typical RPM Typical Torque
DC Brushed 3V – 24V 3,000 – 20,000 Low
BLDC 6V – 48V+ 5,000 – 50,000 Moderate
Stepper 5V – 36V 0 – 2,000 High (Holding)
Servo 4.8V – 7.2V 50 – 300 High
We had an hands on experience by connecting different types of motors and linear
actuvators with the motor drivers and esp 32 and controlled the motors motion via
mapping the keys of ps5 with esp32 with some coding .
DAY 6:
In day 6 we built a simple 3 wheeled rover fully and done the maping according to the
requirement of it . After facing many errors in it we ourself rectified it and ecountered the
errors and finally made it work .
Code:
#include <ps5Controller.h> [Link]("3 Wheel Omni Robot Ready"); else if (command == "REVERSE") {
// Front Motor } stopMotor(1);
#define FM_PWM 16 void loop() { driveMotor(2, HIGH, SPEED); // Left CCW
#define FM_DIR 17 if (![Link]()) { driveMotor(3, LOW, SPEED); // Right CCW
// Left Motor stopAll(); }
#define LM_PWM 26 delay(100); // LEFT
#define LM_DIR 25 return; else if (command == "LEFT") {
// Right Motor } driveMotor(1, LOW, SPEED); // Front CW
#define RM_PWM 18 String command = "STOP"; driveMotor(2, LOW, SPEED); // Left CW
#define RM_DIR 19 if ([Link]()) stopMotor(3);
command = "FORWARD"; }
#define PWM_FREQ 5000 else if ([Link]()) // RIGHT
#define PWM_RES 8 command = "REVERSE"; else if (command == "RIGHT") {
#define SPEED 180 else if ([Link]())
bool wasConnected = false; command = "LEFT"; driveMotor(1, HIGH, SPEED); // Front CCW
String lastCommand = ""; else if ([Link]()) stopMotor(2);
void setup() { command = "RIGHT"; driveMotor(3, HIGH, SPEED); // Right CCW
[Link](115200); else if (ps5.L1()) }
pinMode(FM_DIR, OUTPUT); command = "ROTATE_LEFT"; // ROTATE LEFT
pinMode(LM_DIR, OUTPUT); else if (ps5.R1()) else if (command == "ROTATE_LEFT") {
pinMode(RM_DIR, OUTPUT); command = "ROTATE_RIGHT"; driveMotor(1, HIGH, SPEED);
ledcAttachPin(FM_PWM, 0); // UP driveMotor(2, LOW, SPEED);
ledcSetup(0, PWM_FREQ, PWM_RES); if (command == "FORWARD") { driveMotor(3, HIGH, SPEED);
ledcAttachPin(LM_PWM, 1); stopMotor(1); }
ledcSetup(1, PWM_FREQ, PWM_RES); driveMotor(2, LOW, SPEED); // Left CW // ROTATE RIGHT
ledcAttachPin(RM_PWM, 2); driveMotor(3, HIGH, SPEED); // Right CW else if (command == "ROTATE_RIGHT") {
ledcSetup(2, PWM_FREQ, PWM_RES); } driveMotor(1, LOW, SPEED);
[Link]("E8:47:3A:36:ED:CA"); // DOWN driveMotor(2, HIGH, SPEED);
driveMotor(3, LOW, SPEED); else if (motor == 2) { else if (motor == 2)
} digitalWrite(LM_DIR, dir); ledcWrite(1, 0);
else { ledcWrite(1, speed); else if (motor == 3)
stopAll(); } ledcWrite(2, 0);
} else if (motor == 3) { }
delay(20); digitalWrite(RM_DIR, dir); void stopAll() {
} ledcWrite(2, speed); ledcWrite(0, 0);
void driveMotor(int motor, int dir, int speed) { } ledcWrite(1, 0);
if (motor == 1) { } ledcWrite(2, 0);
digitalWrite(FM_DIR, dir); void stopMotor(int motor) { }
ledcWrite(0, speed); if (motor == 1)
} ledcWrite(0, 0);
We explored the robocon teams bots and its techs on this evening
Day 7:
In day 7 we entered into a new domain Ai , I learnt the different types of modes like
supervised and unsuperevised learning in machine learning
and we downloaded a data set of Titanic - Machine Learning from Disaster
From kaggle .
And we done various steps in google collab for training the ai getting a trained data set
Importing libraries
Upload our file
Load the dataset
Basic info -gives first 5 rows
Survival rate - in percentage
Visualizations - graphical representations
Feature Engineering- adding 1 or 2 columns from the exissting columns
Create new features
Drop unnecessary columns
Split data
Train (Random Forest, XGBoost etc..)
Predictions
Evaluate - accuracy
DAY 8:
In day 8 we entered into computer vision (cv) that identifies the objects atonomusly by itself
atonomously.
Initially we downloaded the image data set from the software called roboflow
Next we used google collab to train it
In cell 1:
We installed the library files
In cell 2:
We included the data set by including the downloades data set file or by connecting the api
key,workspace name and project name without downloading the data set file
In cell 3:
We define the path, file data ,modified data file and the training code with parameters like
epochs etc
After execution we downloaded the [Link] the trained file
The downloaded file is included in a code for output in vs code to get the output and the
output is obtained with a bounding boxes.
And then I trierd to create a data set by myself in roboflow
I collected the images of cones
Next I uploaded the images as data in roboflow
Next in annotate assign the unassigned images
Next draw the bounding box for each image manually and give the object name for it if any
and add image to data set.
In preprocessing add image size
In Augmentation add flip , crop etc to improve the data set quality
Finally download the data set acording to the model used as zip file
DAY 9:
In day 9 we strted to an new domain ros robotic operating system
Initally we inatalled oracle virtual box for the dual os operating system in the laptop
Because ros can be installed in ubuntu os .
So we downloaded the os and installe it in virtual box
After the setup of the os now we come to the process of setting up the ros 2 :
[Link]
used this websit and followed the instructions to download the ros 2 .
A Huge thanks to the mentors and peears of iQube Qbotix team for giving me a wonderful
oppurtinity to gain knowledge in robotics.
Sandeepkumar B
25BMC053