Design timeline
Week 1
- The bioinspired snake is chosen as the foundation for our project.
- Past ideas considered included robot dogs, hybrid air/ground drones and even modified AR helmets which would grant greater ocular capabilities to rescue workers.
- The snake design was chosen to bring to reality an idea that would grant greater access to trapped victims during disaster and rescue operations. Working off an existing project would allow more resources to be directed towards experimentation and devising new movement/life-saving mechanisms.
Week 2
A discussion was held on the exact components needed:
- Battery: Get a larger battery capacity to do a wired snake first. If time permits, we could try and mount the battery on.
- Servos: MG996Rs for the snake for now until basic movements are proven and if budget permits.
- We should be buying materials for Phases 4 and 5 by Week 13 to not be late for the project deadline. An interview was conducted with a PhD student (Jiangtao), certain design insights were obtained:
- Battery: Get a larger battery capacity to do a wired snake first. If time permits, we could try and mount the battery on.
- Servos: MG996Rs for the snake for now until basic movements are proven and if budget permits.
- Planning: We should be buying materials for Phases 4 and 5 by Week 13 to not be late for the project deadline.
Week 3
- Initial ideas for payload delivery arose. The potential idea of using a delivery tube was mentioned but concerns regarding how immobile victims could utilize it were bought up.
- Following our interview with HTX, greater emphasis was also put on coming up with novel ideas for the aspect of mobility, given how the factor of mobility plays an essential roll when working with tight spaces.
- Other factors such as form factor, mobility, sensor placement and CG are also highlighted.
- Test out the functions and libraries of Arduino IDE
Week 4
Brainstorm session: (Mobility solutions and Movements we wanted to implement.
- Extendable wheels, mechanism to retract it to fit into tight spaces
- Tracks over 2 segments
- Sidewinding issues
- Free rolling wheels
- Being able to rise up and lift the whole snake body over an obstacle.
- Sidewinding up an uneven inclined gradient.
- Movement over flat surfaces (Quickly)
- A singular wheel on a rotating head off the snake robot that can retract and extend to selectively hide and grip onto surfaces.
- Perhaps it would be simpler to use the existing servo motors in the snake body to orient the wheels (One in the front (head) and one in the back (tail)) Design considerations:
- Snake body will likely have most of its mass focused in the head and in the tail. Will need to account for this during climbing as there could be much more moment on the servos in the middle of the snake robot body. -> WIll purchase 5 x SPT 35 kg/cm servo motors to test its viability.
- MG996R servo motors currently used in the main snake robot body may be too weak in the final design. Thus, SPT Servo 35kg/cm on AliExpress could be tested for use, either in parallel with MG996R servos or to replace their role entirely.
Week 5 to 6
No developments
Week 7
- Designing of CAD files to fit servo components has started (EG and EC)
Week 8
No Developments
Week 9
- Discussions on different control systems we may be able to implement (PS4 controller?)
- Granularity for each motion(Additional plans to augment the motion with wheel attachments were had but did not make it into the final prototype)
Week 10
- Sizing issues for 3D printed servo segments were resolved (EC)
- Designing of the CAD file for snake robot head started (EG)
- Test out bluetooth & WiFi function of ESP32 (YK)
Week 11
No Developments
Week 12
- To 3D design the shape of the head to fit the sensors
- Tethered for now, not battery powered
- Sensors need to be soldered
- Designing silicone scales may help the snake with traction (to test if it improves our design)
- EG designed and 3D printed a negative mould of a trapezoidal scale design with anisotropic (directional) friction for better grip when propelling the body forwards and less so when sliding the rear end of the robot towards the front.
- YK will work on the web browser of ESP32 cam
Week 13
- Cables tidied on snake
- Snake head design finalized, to be 3D-printed.
Week 14
- 3D Printed Frame for DC-DC Buck Converter
- 3D Printed TPU Cushions for Li-ion battery
- Temporarily taped the battery to the tail of the snake to test out the motion for inchworm, while waiting for the battery case to be designed and printed. Problem: Chaining of jumper wires Extension of servo wiring results in a voltage drop for the servos furthest from the PCA9685 board (due to length of the wires). Verified in the datasheet that the rated voltage to be (7V in and 4.5V out).
Update to designs:
- Head: Mounting point for the Prototyping PCB to power all sensors with 5V required. Buck converter mounting point on top of the head.
- Tail: (Hard) battery case with TPU mesh spacers surrounding the case for impact absorption.
- Motion Studies on Fusion360 explored by EG
Week 15
Design updates:
- The head will be redesigned to be longer (not necessarily taller, since it was mentioned by Prof Hanyang that doing so might interfere with the streamline structure of the snake). The design team will look into whether the lid can be improved upon to accommodate the prototype PCB board and the smaller buck converter alongside the walls of the head module.
- Design team will continue to work on H-shaped hook that runs on servo segment exterior wall to help support air hose as it runs towards the front.
- Build up AP station for ESP32 using a demo of LED light, figure out the basic logic of HTTP request and TLS handshake
- Develop the control web page for ESP32
- Customize the frontend code of HTML
Week 16
A few changes have been planned for the snake head design. They are as follows:
a) The head will be widened to make more space for the wires connecting to the components. This will more closely resemble an actual snake head as a bonus effect.
b) The head will be made slightly taller (2mm) to account for the new camera setup and the associated racks needed to mount them properly to the head
c) The mini-breadboard has been identified as a smaller replacement for the prototype PCB board. This reduces the need to extend the snake head excessively.
d) Two apertures were made in the roof of the snake head to accommodate the router antenna for better connectivity for the camera feed from the ESP32-CAM and to the ESP32-NodeMCU (Mainboard) used. However, the latter was deemed unnecessary at this stage as improving its movement capabilities was paramount at the time. Thus, it was used instead to run an air hose to pump breathable air to the victim.
- EC to design and print a frame to allow tail to freely rotate during motion.
- EG to design and print TPU cushions for the tail.
- Attaching silicone unidirectional friction pads to the snake (experimental method of increasing friction and improving forward motion)
Final design changes
- Added a free pivoting segment to the tail of the snake to stabilize the motion. (EC)
- Finalized head design and TPU tail spacers printed and placed around the battery case on the snake (EG)
e) Code integration
- Integrate backend code with the final version of movement code
- debug input factors and libraries on the final chosen ESP32\
Specific Design Notes (This mirrors what was discussed in the design section for the presentation)
Head Design
The head involved the greatest amount of reworking as the original design only accommodated the aesthetic of a snake: having a slender conical-like shape. Our head needed to have a suite of sensors in order to obtain meaningful data from its surroundings for navigation and search and rescue operations. As such, a more cuboidal shape was adopted for ease of mounting and many iterations were worked on from there.
Original head from the Bio-Snake.
Figure 2: 1st iteration of re-designed head for mounting sensors
Figure 3: Lengthening of head to better accommodate sensors and wiring.
Modular 2D Body Segments
In the process of designing this segment, rather than redesigning the wheel, we decided to take elements from the servo segments as well as the 3D printed servo motor covers. We mirrored the design of the current servo segment on the side holding the ball bearing, and made a solid component which would act as a free-pivoting “servo motor”. In addition, the solid component would come attached with a connection point which would remain compatible with the current design of the battery case.
Tail Segment
The initial goal of the design was to:
- Create an attachment which could carry the battery we had with ease
- Provide protection to the battery without interfering with the current tail design too much and the streamline design of the snake.
- It should also be easily accessible so that adjustments can be easily made during the testing phase.
With these objectives in mind, we eventually with a snap fit case which would allow for easy access to the battery during testing. Another feature that was implemented was that it used an identical connection same as the tail in the original design such that minimal modifications were required to be made to the servo segment preceding the tail area, allowing us to redirect our resources to other areas as necessary.
However, after doing some tests with the new tail design, we soon found that we didn’t account for the massive increase in load that attaching the tail would cause. This had a negative impact on the performance of the servo motors and interfered with the movement code which was previously working, prompting us to come up with another solution which could minimize the negative impacts of this new addition.
Eventually, the answer we had to this problem was to add in an additional segment which would allow the battery attachment at the tail end to freely pivot up and down during the movement of the snake, indirectly reducing the load on the servos and partially alleviating the issue of excessive power draw due to overloaded servo motors. We eventually settled on current design you see on screen, which mimics the design of the servo segments currently in use, albeit with a few small changes.
CAD of the Whole Snake
Backup Camera
We explored the EZVIZ C1C camera as a backup to the ESP-32 Camera. This was because of the low frame rate and reliability of the ESP-32 Camera.
The considerations for the EZVIZ camera are as follows:
- Fit onto Snake Head Design
-
- Dismantle Stem
- Wifi connectivity
- Min 24 FPS, 720p HD Resolution
- IR for night vision
- Wide angle lens
- Speaker and Mic for 2 way comms
- Seamless and reliable app
However upon testing, the following are the issues.
- Large form factor require new head design
- Runs hot (-10 to 45deg)
Air Supply
We explored with both external(Bottom left, powered by mains) and on-board(Top, in green color, USB powered) air supply pumps.
The considerations for air supply pumps are as follows:
- Supply air to victims
- Avg human require 8.6 m3 of air per day (8600 litres/day)
- Pressure to provide ventilation
- Clean air
- Air supply cannot be too strong, or it will blow up dust
- Adjustable pressure
We stuck to the external air supply pump as it required clean air from the surface to be supplied underground.
The external pump we used was the Hailea fish tank air supply. Details are as follows:
- Flow rate 6480l/day
- Hailea 2psi pump up to 4 ft depth
- We have noted that this pump is on the weaker side – explore other stronger air supply options
- Mobile: Car tyre portable type
- Fixed: Air Supply for Miners
Power
Our robotic snake comprises many electronic components requiring a range of 5- 7 V. In order to ensure the steady operation of our snake, we came up with two options for powering it.
- Tethered power cables from the PSU
- Battery powered
Although our main goal is to have our robotic snake be mobile and powered by an onboard battery supply, however, during our testing phase we encountered some issues in regulating the voltage. Therefore, we decided to proceed with the tethered power option with the PSU as it can provide us with a constant voltage during the testing phase.
These are the electrical wiring diagram and the functionality diagram of our robotic snake.
Electrical Wiring
During our code testing phases, we encountered multiple issues with our robotic snake not moving as intended with the code. After multiple troubleshooting, we realised it was the electrical wiring that was causing the issue. Therefore we made a few iterations and finally solved the wiring issues.
Preliminary Wiring System
During our early stage of prototype testing, we connected all the servo motor wires by Dupont connection as it is very accessible and easy to connect. However, we realised that the connection points of the wires were all very loose and caused a huge voltage drop of more than 50% for the furthest servo motor from the power supply. After consulting with our friendly lab manager Mr Tony, we moved on and further improved our electrical wiring system.
Final Wiring System
Our final improved wiring system works like a busbar system where we have individual live and ground cables of the servo motors soldered onto 1 main cable line respectively. This essentially can provide all 10 servo motors with the voltage set on the PSU, ensuring very minor to no voltage drop at each servo motor during the testing phase.
With this final electrical wiring system, we managed to save a lot of our time being in a dilemma on whether the code or the power was the issue when our robotic snake did not perform as intended.