India Automation Challenge 2021
OR
Problems faced- Due to growing road traffic, lack of doctors in many places and sometimes non availability of emergency wards, many people die because they do not get timely, proper surgical facilities. In border regions, there are very less hospitals for soldiers and in case they need it, fast treatment in these regions is sometimes not possible in heat of battle. In rural areas sometimes there are not good surgeons or surgical equipment available in case of emergency. To fix these issues very effectively and permanently I have created HealBot. Solution- The solution to these problems is HeatBot. It is a simple cartesian 3D based machine that is capable to do surgery via INTERNET. Very sophisticated systems such as CNC machine parts, Arduino with GRBL shield and stepper motors are used to make a human-controlled robot that can do any sort of surgery in 5D planes without any issue. The fact that it has possibility of multiple tool heads without need of access doctors using it in case of emergency is one of the many successes of this project. It costs in decimal fractions as compared to the American made surgical robot such as the Da Vinchi bot, where HealBot only costs 30000 INR. Another one of its advantages is that it can be modded anyhow doctors feel since there are no proprietary parts used in it because all parts and services/ programing language used is open source. There can be many further advantages added to it such as Motion tracking, colour tracking, AI related moves, etc. Project Hypothesis- 1) GRBL Processing- In terms of computer oriented motion dynamics, GRBL is the most used processing code for motion systems/tracking after ‘merlin advanced’. It marks minute point/coordinates that can be mapped along steps of a stepper motor which are then used to move along in space. 2) 5D Motion dynamics- This is the next step for motion systems where angular motion is added along x and y axis. Such motion is required for movement of surgical head as a surgery is quite complicated itself. 3)Parts used- 1. Arduino and GRBL Shield 2. Stepper motors and linear system 3. Servo motors 4. Aluminium extrusions and related 3)Construction of machine- This machine’s frame has been constructed from aluminium extrusions and sheets. All other parts are 3D printed. Working of the machine- This machine is partially human operated. A surgeon will be using it from another sides of the world via the internet. There is a user interface created on processing 3.0 which has full device controls along with camera and other outputs/ inputs that may be very helpful during surgery. For controlling the machine a gaming joystick has been used. All the necessary controls are present on the joystick. It has many fail safes incorporated like it remembers its last location on a reboot. User Interface- The user interface is very basic and easy to use. It consists of a video stream section and a buttons display area for the doctor to see if the joystick/tool head is working or not. The background colour also changes with the movement of the secondary tool head. Endless possibilities- This project has been solely based on open source platforms. This means that with community updates related to firmware coming regularly, there is an extremely low maintenance cost for creating new updates and software. As this machine is based on simple motion system physics, the end no. of tool head/helping hands can be attached to it. This machine can also incorporate motion tracking, colour tracking and many more features like that of A.I. which are present in modern expensive machines. Conclusion- The problems such as timely treatment and be fixed using HealBot at a very reduced cost. In a country like India price and durability of everything matter that is why this machine is built robust and can handle huge workloads. With a little bit of development and testing, this machine can be ready to take patients and heal them without any complications. This machine is so cost-effective that it cost fractions of the expensive surgery robot made in the U.S., moreover, it has the advantage of endless expansion and updates which are very frequent with new research and development.
Arduino UNO, GRBL Shield, Stepper motors and drivers, Servo motors, Gaming joystick, Aluminium Extrusions, GT2 timing belts, Nut bolts, threaded rod, POM Wheels, linear rails, etc.
Arduino IDE, Processing 3.0 IDE, Autodesk Fusion 360, Cura by Ultimaker.
Hardware- All open electronics such as Arduino, GRBL shield are been used in this project to ensure the low cost and durability of this project. For robust structure and further solidification of the frame, aluminium extrusions are being used which are cheap and lightweight as well. Software- For Arduino simple Arduino software that is Arduino IDE is used and for controlling the machine java scripting on Processing 3.0 is used.
The circuit is quite simple just like wiring a CNC machine except servo are also connected for tool head support.
import processing.sound.*;
import processing.video.*;
import processing.serial.*;
import net.java.games.input.*;
import org.gamecontrolplus.*;
import org.gamecontrolplus.gui.*;
import g4p_controls.*;
import cc.arduino.*;
import org.firmata.*;
ControlDevice cont;
ControlIO control;
Arduino arduino;
SoundFile sound;
ControlButton aButton;
ControlButton xButton;
ControlButton yButton;
ControlButton bButton;
ControlButton lbButton;
ControlButton rbButton;
ControlHat hat;
float thumb;
float thumb1;
Capture camera;
int aint;
int xint;
int bint;
int yint;
int dval;
int dval1;
int dval2;
int dval3;
int lb;
int rb;
int pro = 0;
int button = 0;
int oldbutton = 0;
PShape rectangle;
void setup() {
size(1080, 720);
frameRate(30);
rectMode(CENTER);
camera = new Capture(this, "pipeline:autovideosrc");
camera.start();
//sound = new SoundFile(this, "data/screenshotsound.mp3");
//sound.play();
control = ControlIO.getInstance(this);
cont = control.getMatchedDevice("test3");
if (cont == null) {
println("dude its not moving");
System.exit(-1);
}
//println(Arduino.list());
arduino = new Arduino(this, Arduino.list()[2], 57600);
arduino.pinMode(11, Arduino.SERVO);
arduino.pinMode(10, Arduino.SERVO);
arduino.pinMode(2, Arduino.OUTPUT);
arduino.pinMode(5, Arduino.OUTPUT);
// arduino.pinMode(3, Arduino.OUTPUT);
//arduino.pinMode(4, Arduino.OUTPUT);
//arduino.pinMode(6, Arduino.OUTPUT);
//arduino.pinMode(7, Arduino.OUTPUT);
//arduino.pinMode(11, Arduino.OUTPUT);
//arduino.pinMode(12, Arduino.OUTPUT);
//arduino.pinMode(13, Arduino.OUTPUT);
}
public void getUserInput() {
thumb = map(cont.getSlider("Cut").getValue(), -1, 1, 0, 180);
thumb1 = map(cont.getSlider("rotation").getValue(), -1, 1, 180, 0);
aButton = cont.getButton("led");
xButton = cont.getButton("led1");
yButton = cont.getButton("ybutton");
bButton = cont.getButton("bbutton");
lbButton = cont.getButton("fast");
rbButton = cont.getButton("slow");
hat = cont.getHat("led2");
dval = 1;
dval1 = 1;
dval2 = 1;
dval3 = 1;
lb = 1;
if (lbButton.pressed() == true) {
lb = 0;
}
if (hat.down() == true) {
dval = 0;
}