I am a co-founder of Artilect FabLab and Toulouse FabLab Festival. Artilect was the first FabLab create in France in 2009. I like to give access to people who like create things.
I am also a researcher in a lab of aerospace in Toulouse.
My Ph.D. was about evolving robot in 3D simulation. My post-doc was about how to build physical robots from modular bricks. For these research, I use a genetic algorithm to evolve: morphology, controller.
Why I do the Fab Academy
I would like to take the time to develop open hardware tools to democratize digital fabrication, iot device and robotics for everyone. The fab academy is the opportunity to learn, to share, to create and to document projects.
The goal of this project is to create plug & play electronic modules and rigid structures to build any type of robots, iot devices or machines.
Inspirations
Inspiration from others projects :
What it will do?
Plug and play, auto detect topology: self detect the electronic modules and display the modules and the physical connections (topology) on an application.
To prototype quicky and easily electronic or IOT devices
To build cnc machines
To build modular robots
Who will use it?
It could be use by maker to make new thinks.
Children to learn robotics.
FabLab to make modular cnc machines.
Startup to prototype IOT devices
Bill of Material:
- wood 10$-50$ for 1 to 5 modules
- acrylic 10$ 20$ for 1 to 5 modules
- electronic ~10$
For the licence, I think I will protect the name ORCAS, "Open Robotics Cross Achitecture System" like Arduino does. I will keep open source the design.
The protection will be also the website to load designs, applications, documentations, tutorials to how to build modules... Very similar to Arduino Website.
License :
- Design licensed under a Creative Commons Attribution Share-Alike license
- Name protection for ORCAS, "Open Robotics Cross Achitecture System"
git@gitlab.fabcloud.org: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Solution:
check if the key is inside your .ssh directory
Minimun of git's commands to know and to use at the beginning to upload files on gitlab:
Excute first a git status to know which files are new or modified or ..
$ git status
Add the new files to your git repository with the command add, neither they will be not uploaded:
$ git add namefile
Select what you want to upload with commit (-a for all the file) and comment your upload with -m:
$ git commit -a -m "your comment"
Upload the files on gitlab with the push command:
$ git push
Finish with a git status to know is every is fine and you upload everything:
$ git status
nothing to commit, working tree clea
Problem:
If you add files with the command add do commit : you will only commit the added files and not the modified files.
Don't forget the option -a to commit all files.
Additionnal Git Command
To rename a file or a directory
$ git mv oldfile newfile
My plan and ideas for my fabacademy webpage
Make a website like a file explorer: each directory and file will be displayed like inside Explorer or Finder with an icon or a block of texts or images.
The order of the items will be described by three numbers x,y, and z inside the name file x_y_z_name.extention. X.Y is the numbers to describe the order outside blocks. Z inside a block.
A block can display a gallery of pictures, a text of documentation, a step of a project, a plan, an idea, a problem. etc
What I learned?
I use to program in C, C++ with Emacs on Linux. I am less familiar with web development but I am very interested to learn javascript to develop web application and website.
I know a little HTML, and CSS but I am not a specialist. I would like to try to code from scratch to understand how HTML and javascript interact.
For the code editor, I plan to use Atom as the main editor. For the command line editor, I would like to learn to use vi. vi is very useful on Linux but I never spend the time to use it.
Vi editor
Vi is a text editor in text mode that can be executed in a terminal. It is very useful when you operate on a server or you want to edit quickly a config file.
The difficulties and the advantages of Vi are that you could not use a mouse and you need to know keyboard command.
Here the minimum commands to know to use vi:
i to insert text (insert mode)
ESC to leave insert mode
:w to save
:q to quit
Atom editor
Atom is a very modern text editor. I used to program with emacs text editor that is very nice far highlight code and completion. Atom has the same characteristics but more user-friendly.
What I did for the website?
I did the website from scratch in HTML and javascript. There are two javascript main functions: One is to format the style of the icon and another one to format the page. I don't use CSS because my goal was to learn javascript.
And I wanted to keep the possibility changed dynamically the design of the website.
Responsive website?
The website is in part responsive. The icon keeps the same size but its reorganize when the width of the page is smaller. Still some problem with the text block.
Some pictures need to be inserted here...
To inspire me I used the following website: http://jsbin.com/utupuw/5/edit?html
How to reduce or convert the size or the format of many images on MacOS X?
To convert pictures, screenshots or photos, I find sips. A command line tool very usefull. Here the command to convert all the png images from a directory with a width of 1024:
$ sips *.png --resampleWidth 1024
How to reduce or convert the size or the format of many videos on MacOS X?
To convert videos on Mac OS, the best is to use ffmpeg.
The next step will be to generate locally the tree structure of the website to know where the files are. This is not possible in HTML because you need to execute code on the server to do it. One way could be to generate from the yml file (To test).
The following command displays all the files and directories from the current directory that begin with a number and all the files inside these directories excluded the hidden files:
To Computer-Aided Design I propose to test OpenScad, FreeCad and Solidwork as a 2D and 3D tools.
2D
The goal is to sketch a part of our hexagonal module for the final project. Each module could be a fixe on a 3D structure. For this, we need small bumpers on the slide of the face.
FreeCAD
FreeCAD is a Wysiwyg open-source similar to Solidwork. The software is easy to install but it difficult to use for me. It's not enought an intitive software.
In this example, I tried to have a parametric design with variable like on OpenScad.
Conclusion FreeCAD:
I think FreeCAD is a nice alternative if you like interface software and solid 3D sofware design like Solidware or Catia. It is necessary
to spend more time to learn all the commands. Personnaly, I prefere command line software like Openscad
Photoshop
Photoshop is a very easy software to use. There is many tutorial on the web.
Openscad 2D
3D
Openscad
Modular design on OpenScad with inculed files (arduino, wheel, sensor, motor).
Learning I learn how to use photoshop
I try FreeCAD.
I improved my knowledge on OpenScad.
Achievements I did my final project presentation with Photoshop.
I did modular parametric modelisation of a robot on OpenScad.
Assignements characterize your lasercutter's focus, power, speed, rate, kerf, and joint clearance
Design, lasercut, and document a parametric press-fit construction kit, which can be assembled in multiple ways. Account for the lasercutter kerf.
For extra credit include elements that aren't flat.
Learning Design a press-fit kit on OpenScad.
Use vynilycutter.
Achievements
This week the goal is to use a laser cutter and a vynil cutter.
Realisation of a 2D construction kit with a laser cutter
My idea was to find a way to build any types of solids: cubes, pyramids with the same construction kit laser cut. For this problem, I start to find a solution for a simple cube. To assemble each face of my cube, I propose to use some connectors. The connectors are designed with OpenScad with a parametric code. The laser cutter used for this kit is a Chinese laser cutter machine from Columbia's University Makerspace. (Thanks, Mo to allow me to use this machine). Usually, I use a Trotec or an Epilog laser machine. So this is nice exercise to use different machines for the same job.
Parametric design on OpenScad
The connector model is parametric. You can add connectors with parametric angels, chamfer. The thickness of the material could be changed also with various other parameters.
segmentSize=50; //mm
tickness = 3; //mm material
resolution=50; //number of segment $fn
connectorLength=10;
deepBump=0.5;
widthBump=0.2;
chamfer=1;
chamferOffset=0;
chamferConnector=1;
chamferConnectorOffset=0.5;
offSetLaser=-0.05;
First test on the laser cutter
The first test is to calibrate the laser offset and to check if our model works. To test, we need to export our 3D model in 2D vectors. With OpenScad, we can use the function projection() to get a 2D vectorial projection and the function export as DXF from the file's menu. Import your dxf file, with your laser cutter software and apply the material to cut your matérial. Depending on the thickness and the machine but to cut acrylic, we use:
My parameters on Trotec speedy 500 120Watts
power: 100%
speed: 1%
frequency : 10000
My parameters on Epilog 40Watts
power: 100%
speed: 12%
frequency : 5000
Adjustment of the parameters
After a first assemblage, we can see that the connectors are moving and do not fit. In fact, after control, the thickness of the acrylic is not 3mm but 2.85mm. After an adjustment of the thickness, the result is much better.
Final Results
For the final cut, I chose a transparent acrylic. The width was first not correct. I adjust two time before to get the good value.
Improvements
The last change was not the good one. The laser offset was too much increase and too large to be assembled nicely. A lot of connectors were broken before to get a correct assemblage.
This could be improved. The code could be improved too. The last version of the source code: OrcasConstructionKit_7.scad.
The goal is to realize a sticker with the logo of Artilect FabLab Toulouse. The logo from a jpg image. The first step was to convert the raster logo into a vectorial representation. The conversion is getting with a tool that converts the logo in black & white by contrast.
The second step is to setup the vynil cutter and cut the vynil. I apply two times the process to be sure the vinyl is cut correctly. Slowly I removed the negative par. Be careful, some small letters can move. Remove the small part with a small knife. Clean the surface where the sticker will be applied and use the transfer paper to do it. To get the expected results I repeat all the process three times but with the experience, you find the good way to do it.
Parameter:
To parameter the knife, you can try to cut manullely some vinyl. Adjust the size of the knife until you cut correclty.
The vinyl cutter I used was the Roland Camm-1. (see the photo)
Assignements
Characterize the design rules for your PCB production process
Make an in-circuit programmer by milling the PCB, program it, then optionally, trying other processes.
I produce my Fab ISP I am inspired from the page of Brian. To design the Fab ISP I used eagle.
A 0.2 mm universal cutting tool
A micro cutter 0.1 mm to 0.15 mm
0.8mm , 1.0 mm and 2.0 mm end mills
2mm contour routing tools
Characterize the design rules for your PCB production process
Make an in-circuit programmer by milling the PCB, program it, then optionally, trying other processes.
I produce my Fab ISP I am inspired from the page of Brian. To design the Fab ISP I used eagle.
To produce the board, I used a LPKF CNC machine. I did 4 tests to find the good paraemeters.
Problem :
My pcb was not engrave enougth.
solution:
At first, I remove only 18microns of copper but remove 40microns was necessary
Problem :
The pcb was to large to be plug inside a usb port.
Solution:
I redesign the PCB to have a smaller usb connector.
Finaly, I was able to assemble my PCB. I used an attiny85V and try with an attiny45v.
Problem :
I spend many days to program my Fab ISP with an arduino as ISP. My board was not reconize. I dont why...
solution:
First I add some pins connect an external oscilator. Finaly this was not necessary. But I keep on the pcb the possibily to add it.
I tried again and again from scratch... I think my problem come from of one of my head pins.
The command line, I used to finaly programm the FabISP.
Assignements
Test the design rules for your printer(s)
Design and 3D print an object (small, few cm3, limited by printer time) that could not be made subtractively
3D scan an object (and optionally print it)
Learning
Scanning an object with a phone is possible but it is difficult to exploit the objects.
I tried different application on Iphone to 3D scan a small plane : QLone, Capture and 3D ScanR.
QLone
This application is very easy to use. You just go around your object with your camera. A VR mention the missing part. The scanner uses a matrix to scan object. The main difficultie is to get a complet object (under the object). The resolution is good enougth to print but not without reparation of the file. You get all the mapping.
The scanned object could be upload to SketchFab.
Capture
Capture uses the IR scanner from the Iphone XR, same technologie as Face ID from Apple. It is still difficulte to scan a complete object with this application.
3DScanR
The last application use only visual camera to track the object and build the 3D. Same as before, we dont have a complete object and it is difficult to keep the tracking when we slowly move around the object.
Assignements
Use the test equipment in your lab to observe the operation of a microcontroller circuit board
Redraw the echo hello-world board, add (at least) a button and LED (with current-limiting resistor), check the design rules, make it, test it.
Extra credits: Simulate its operation. Render it.
Learning
I select Eagle to Design my PCB. It is very easy to install. I did'nt know how to use it before the Fab Academy. It was the first time, I used a software like Eagle. I still need to learn lot of things from it.
I just use component from libraries. The next step is to learn how to integrate new component inside the library.
For my first Hello World PCB, I wanted to use an attiny85 instead of attiny44.
The goal of my PCB is to be programmed by a Fab ISP. For the communication, I plan to use I2C instead FDTI to communicate with a raspberry PI or a PC.
My goal was to have to side board with 2 PCB. One main side with PCB with the microcontroller and one side with one sensor or one activator.
For the communication between the PCB, I wanted to use the small holes in the middle of the board... but they are too small...
Make a new version with long pins head through the board.
Learning: If you use a cnc you learn how to calcul:
- select tool 6mm of Diamater, 1 flute, length of cut (50mm - That was to long, I broke it quickly. I changed of one of 20mm)
- the speed of the spindle Speed: 3cm/s in our case
- RPM : 20000
The design is parametric to be adapted to the widness of the wood, tool...
thickness=18; //Thickness wood
L=250;
H=250;
roofH=250;
hole=70;
explode=0;
drill=6; //tool diameter
holeBlock=8;
laser=0; //1 to generate DXF - 0 for 3D view
Assignements
Compare the performance and development workflows for other architecture
Read a microcontroller data sheet.
Program your board to do something, with as many different programming languages and programming environments as possible.
What this program do ?
This programe use a library from Adafruit to turn on RGB led.
The setup initialize the led strip (3 leds).
The loop is the main. It will be repeated until you unpowerd or reset the board.
For each step the n variable will be added of one. This will changed the color of each led each second.
This is do a rotation of the red, green and blue color one each led.
Assignements
Review the safety data sheets for each of your molding and casting materials
Make and compare test casts with each of them
Design a 3D mould around the stock and tooling that you'll be using, mill it (rough cut + (at least) three-axis finish cut), and use it to cast parts.
Learning:
At the beginning I was planning to cast the same plane 3D print. But the plane seem a bit to complex to cast with only one mold.
So I selected a simplest model. I Choice a face.jpg to transform into 3D gcode file with Fab Module.
Achievements :
- generation a 3D gcode file for the CNC machine.
- Moulding with CNC
- Casting with resine and alginate
Source Files :
Face : (Gcode) Face First Steps : (nc) Face Smooth Steps : (nc)
Assignements
Probe an input device's analog levels and digital signals
Measure something: add a sensor to a microcontroller board that you have designed and read it.
Assignements
Measure the power consumption of an output device
Add an output device to a microcontroller board you've designed and program it to do something
Assignements
Your project should incorporate 2D and 3D design,
additive and subtractive fabrication processes,
electronics design and production,
microcontroller interfacing and programming,
system integration and packaging
Where possible, you should make rather than buy the parts of your project
Projects can be separate or joint, but need to show individual mastery of the skills,
what will it do?
The goal of this project is to create plug & play electronic modules and rigid structures to build any type of robots, iot devices or machines.
Plug and play, auto detect topology: self detect the electronic modules and display the modules and the physical connections (topology) on an application.
To prototype quicky and easily electronic or IOT devices
To build cnc machines
To build modular robots
who has done what beforehand?
See final project page
What will you design?
See final project page
what materials and components will be used?
I will use wood, plexiglas, ABS
where will they come from?
The wood from France, plexiglass from French Shop RichardSon, ABS from
how much will they cost?
In total around 100$ by module 20$
what parts and systems will be made?
All the system will be made
what processes will be used?
Laser cutting, engraving, electronic
what questions need to be answered?
Can we evoluve the project in the future
how will it be evaluated?
If it is easy to use, open to be modified
Assignements
Send a message between two projects (assignments made by different students)
Design, build, and connect wired or wireless node(s) with network or bus addresses
Assignements
Design a machine (mechanism + actuation + automation)
Build the mechanical parts and operate it manually.
Document your individual contribution.
Actuate and automate your machine.
Document the group project
Document your individual contribution.
Achievements
I designed the main module and the concept of the printer on Openscad. Kevin Hové design a solidwork version and the header.
Louis Connel did 3d rendering with Rhino.
We assemble and test the printer together.
Problem and next steps :
The machine is complex to assemble, there is lot of parts... but is completely modular.
A PMMA boxe around structure of the printer should be better for the rigidity of structure, to enclose the temperature inside the printer.
Learning
I learn who to create a server with node.js.
I used three.js to display realtime 3D.
A parametric model interpreted by openscad is used to dynamically changed the model.
I used interface to change the variables dynamically.
I map dynamically the new geometry of the 3D model with a texture.
Achievements
That's work on pc. Should works on Raspberry Py. The goal still to connect my electronic module to control 3D models by I2C.
Design and produce something with a digital fabrication process (incorporating computer-aided design and manufacturing) not covered in another assignment, documenting the requirements that your assignment meets, and including everything necessary to reproduce it. Possibilities include (but are not limited to composites, textiles, biotechnology, robotics, folding, and cooking.
Achievements
This pump was done with a collaboration with Kevin Hové.
Video
Achievements
The pumpe works but still very slow and could be improve. The material could be improve with more time.
Contribution is the structure of the module, stepper motor connector. Kevin design the mechanical pump.
For the licence, I think I will protect the name ORCAS, "Open Robotics Cross Achitecture System" like Arduino does : restrict use of the name "ORCAS" to the official boards. I will keep open source the design licensed under a Creative Commons Attribution Share-Alike license, which allows for both personal
personal and commercial derivative works, as long as they credit Arduino and release their designs under the same license.
The documentation will be also on the website to load designs, applications, documentations, tutorials to how to build modules... Very similar to Arduino Website.
- The goal will be to design more modules with sensors and activators.
- The surface resolution was not so smooth. This is because I didn't select the good diameter of the tool.
Anyway, I keept it like this to see if we can get these details during the casting with the resine.
License :
- Design licensed under a Creative Commons Attribution Share-Alike license
- Name protection for ORCAS, "Open Robotics Cross Achitecture System"