About Me

About Me

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.









Final Project

Final Project

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









Project Management

Project Management

Git and GitLab

The first thing done was to install git on my mac from source forge.
Generate the ssh key from your email address

        $ ssh-keygen -t rsa -f id_rsa -C "user@emailaddress" -b4096
       
Copy your private and public keys in the .ssh directory

         $ cp key_name ~/.ssh/id_rsa
         $ cp key_name.pub ~/.ssh/id_rsa.pub
       
Give Permissions

        $ chmod go-rwx ~/.ssh/id_rsa
        $ chmod go-rwx ~/.ssh/id_rsa.pub
        $ chmod go-rwx ~/.config/
      
Add your key to ssh

       $ ssh-add ~/.ssh/id_rsa.pub
       


Problem
The size of the key is not the good one.

Solution
Don't forget the -b4096 to generate the good size of key. Copy ALL the content of file into your gitlab profile.


Problem
Give Permissions

       $ chmod go-rwx ~/.ssh/id_rsa
       $ chmod go-rwx ~/.ssh/id_rsa.pub
       $ chmod go-rwx ~/.config/
       
Add your key to ssh

       $ ssh-add ~/.ssh/id_rsa.pub
       
Try to clone your gitlab project with the following command (remplace nicolas-lassabe.git by the name of your project)

       $ git clone git@gitlab.fabcloud.org:academany/fabacademy/2018/labs/fablabdigiscope/students/nicolas-lassabe.git
       

Problem:


       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

       $ ls -la ~/.ssh/id_rsa
       $ ls -la ~/.ssh/id_rsa.pub
       
if not copy the key

       $ cp id_rsa ~/.ssh/id_rsa
       $ cp id_rsa.pub ~/.ssh/id_rsa.pub
       

documentation about gitLab
https://gitlab.fabcloud.org/help/ssh/README.md documentation about git
http://academy.cba.mit.edu/classes/project_management/archive.html
In French https://openclassrooms.com/courses/gerez-vos-codes-source-avec-git

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
Don't forget the option -a to commit all files.
If you add files with the command add do commit : you will only commit the added files and not the modified 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 include html, images and files?

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:

        $ find ./[0-9]* -not -path '*/\.*'
        ./0_About_Me
        ./0_About_Me/index.html
        ./0_About_Me/0.jpg
        ./1_Final_Project
        ./1_Final_Project/index.html
        ./1_Final_Project/0.jpg
        ./2_Project_Management
        ./2_Project_Management/1_0_0_Installation_of_git.step
        ./2_Project_Management/0_0_Plan_for_the_website.plan
        ./2_Project_Management/1_Atom.jpg
        ./2_Project_Management/0.jpg
        ./3_Computer-Aided_Design
        ./3_Computer-Aided_Design/index.html
        ./3_Computer-Aided_Design/1_3.png
        ./3_Computer-Aided_Design/1_2.png
        ./3_Computer-Aided_Design/1_0.png
        ./3_Computer-Aided_Design/1_1.png
        ./3_Computer-Aided_Design/2_0.png
        ./3_Computer-Aided_Design/0.jpg
        
The next command saves the result inside a tree.txt files.

        $ find ./[0-9]* -not -path '*/\.*' >> tree.txt
        
The next step is to read this file with javascript to display images and pictures.









Computer-Aided Design

Computer-Aided Design

To Computer-Aided Design I propose to test OpenScad, FreeCad, Fusion 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





3D

Openscad

Modular design on OpenScad with inculed files (arduin, wheel, sensor, motor).















Computer Controlled Cutter

Computer Controlled Cutting

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.

           offSetLaser=0.15;
           segmentSize=75; //mm
           tickness = 3.18;   //mm material
           resolution=50;
           connectorLength=10;
           deepBump=0.5;
           widthBump=0.2;
           chamfer=1;
           chamferOffset=1;
           chamferConnector=1;
           chamferConnectorOffset=0.5;
         

Realisation of a sticker

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.