A raspberry pi hexy
-
Upload
mithi-sevilla -
Category
Engineering
-
view
333 -
download
0
Transcript of A raspberry pi hexy
![Page 1: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/1.jpg)
Clean Code and Hexapod Robots
Prepared for National University Feb 12, 2016, DevCampus: Innovation For Excellence
![Page 2: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/2.jpg)
![Page 3: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/3.jpg)
![Page 4: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/4.jpg)
Arcbotics Hexy- 19 DOF- open-source, 5mm acrylic- funded on kickstarter, 2012- 168k+ USD 860+ backers,- 250 USD, 1/10th usual cost
![Page 5: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/5.jpg)
![Page 6: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/6.jpg)
Hexy Modifications- motivations- hardware- software
![Page 7: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/7.jpg)
What is robotics?Why is it so awesome?
![Page 8: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/8.jpg)
Robotics is the study, and applications of robots.(duh)
![Page 9: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/9.jpg)
![Page 10: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/10.jpg)
![Page 11: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/11.jpg)
![Page 12: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/12.jpg)
![Page 13: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/13.jpg)
Robots aregoal-oriented machines that sense, plan, and act in a continuous loop in effort to achieve their goal.
![Page 14: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/14.jpg)
- Consistent - Strong- Reliable- Robust - Don’t get tired or lazy
![Page 15: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/15.jpg)
Robots do things people:- Can't do (space, deep sea)- Won't do(boring, dull)- Shouldn't do (dangerous, unhealthy, risky)
![Page 16: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/16.jpg)
What is clean code?Why is it so awesome?
![Page 17: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/17.jpg)
"Clean code always looks like it was written by someone who cares. There is nothing obvious that you can do to make it better. All of those things were thought about by the code's author and if you try to imagine improvements, you are led back to where you are sitting in appreciation of the code someone left for you, code left by someone who cares deeply about the craft" - Michael Feathers, Working Effectively with Legacy Code
![Page 18: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/18.jpg)
![Page 19: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/19.jpg)
![Page 20: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/20.jpg)
Bad code can function. Yearly, countless hours and significant resources are lost because of poorly written code.
![Page 21: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/21.jpg)
Code is read at least 10x more than it is written.
![Page 22: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/22.jpg)
“Don’t just do something. Stand there.” - The Art of Linux
Programming
![Page 23: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/23.jpg)
- performs as expected- easy to understand and
consequently easy to reuse, modify, maintain or extend.
![Page 24: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/24.jpg)
- contains everything that it needs and nothing that it doesn't.
![Page 25: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/25.jpg)
- result of a coder who cares deeply about her craft.
![Page 26: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/26.jpg)
Clean code is really hard :(- learn by reading about ideas of
veteran coders and their code- get better through writing more with
intention (experience)
![Page 27: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/27.jpg)
![Page 28: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/28.jpg)
Hexy Modifications- Metal Gear Servo - Pi Zero- Drive Servo via I2C- Code from scratch!
![Page 29: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/29.jpg)
![Page 30: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/30.jpg)
![Page 31: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/31.jpg)
![Page 32: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/32.jpg)
![Page 33: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/33.jpg)
![Page 34: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/34.jpg)
![Page 35: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/35.jpg)
Raspberry Pi Zero - 1 Ghz Single Core Processor- 60 mm x 30 mm x 5mm- 5 USD only <3
![Page 36: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/36.jpg)
Do all processing on board.No need for an external computer or bluetooth.
![Page 37: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/37.jpg)
![Page 38: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/38.jpg)
![Page 39: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/39.jpg)
![Page 40: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/40.jpg)
Adafruit 16-Channel 12-bit PWM/Servo Driver - I2C interface - PCA9685
![Page 41: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/41.jpg)
![Page 42: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/42.jpg)
![Page 43: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/43.jpg)
![Page 44: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/44.jpg)
A Little Hexapod Robotics Theory
![Page 45: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/45.jpg)
Kinematics Inverse-Kinematics
![Page 46: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/46.jpg)
![Page 47: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/47.jpg)
Joint Angles <-> Robot Position
![Page 48: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/48.jpg)
![Page 49: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/49.jpg)
![Page 50: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/50.jpg)
GaitsLimb Movement
![Page 51: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/51.jpg)
![Page 52: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/52.jpg)
![Page 53: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/53.jpg)
Stance Phase | Power Stroke- leg is on the ground where it supports and
propels the body. - leg retracts or moves towards the rear of
the body
![Page 54: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/54.jpg)
Swing Phase | Return Stroke- leg lifts and swings to the starting position
of the next stance phase- leg protracts or moves towards the front of
the body
![Page 55: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/55.jpg)
Clean Code in a Hexapod Robot….
![Page 56: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/56.jpg)
Original Code: github.com/ArcBotics/PoMoCo
My Code (WIP): github.com/mithi/hexy
![Page 57: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/57.jpg)
Some Guiding Principles to Clean Code...four things!
![Page 58: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/58.jpg)
ONE Minimal DuplicationDRY. Refactor.
![Page 59: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/59.jpg)
Code refactoring is the process of restructuring existing computer code – changing the factoring – without changing its external behavior.
![Page 60: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/60.jpg)
Refactoring improves nonfunctional attributes of the software.
![Page 61: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/61.jpg)
TWO EXPRESSIVEMeaningful, distinct, intention revealing names.
![Page 62: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/62.jpg)
THREE SINGLE RESPONSIBILITY For classes & methods
![Page 63: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/63.jpg)
The first rule of functions is that they should be small. The second rule of functions is that they should be smaller than that.
usually verbs
![Page 64: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/64.jpg)
The first rule of classes is that they should be small. The second rule of classes is that they should be smaller than that.
usually nouns
![Page 65: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/65.jpg)
With functions, we measure size by counting physical lines. With classes, responsibilities.
![Page 66: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/66.jpg)
FOUR The best code is no code at all. less code == less bugs
![Page 67: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/67.jpg)
A Few Examples.
![Page 68: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/68.jpg)
![Page 69: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/69.jpg)
![Page 70: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/70.jpg)
![Page 71: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/71.jpg)
![Page 72: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/72.jpg)
![Page 73: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/73.jpg)
![Page 74: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/74.jpg)
![Page 75: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/75.jpg)
![Page 76: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/76.jpg)
![Page 77: A raspberry pi hexy](https://reader034.fdocuments.in/reader034/viewer/2022051520/5883cb911a28abb7308b55c9/html5/thumbnails/77.jpg)
Thank you for listening.