Skip to content
Snippets Groups Projects

Principles, Practices and Project Management

(old)

Week of 29 January 2020
Principles and Practices - notes + video
Project Management - notes + video

make making easier > tool / machine > robotic arm? > infinite axes > modular

I'm interested in making a robot of some kind. A machine that does a specific series of tasks. I read about kinds of robots according to application, geometry/axes. Instead of having limited axes for movement. I wondered if the arm could be modular and move in any direction possible. That's how I came to the idea of having robotic modules, that can be versatile for functions.

References

I found some projects that have done this in different ways. Many of them are educational toys for kids - meant to learn programming/ coding.

Some projects that do this in different ways:
Mblocks and Mblocks 2.0: are self-assembly cubes

Cubli can balance on it's edge and corner

Topobo by Tangible media, MIT, has kinetic memory. It can record and playback physical motion.

I read about self-reconfiguring robots, and discovered that while a cube can be combined with other cubes according to functions, the same cube cannot do multiple functions. Therefore, I want to design a cube that does multiple functions, that can be modified by chaning faces or edges or corners of the cube.

The modular approach that Machines that make project takes, so the application is up to the user is what I want to follow while making this robotic cube.

Maybe make a flying one? Like a ball drone?

2. Project management

This week I learned about version control, web development using SSGs, and sketched out an initial final project idea.

Git

I've used git a little for my Master's documentation. But till now, just used some basic commands like:
git init to initialise a new repo
git status to check what's happening with the current directory
git add . to add all changes from the working directory to the staging area
git commit -m "action msg" to commit changes from the staging area to the local repo
git push to push changes from the local repo to the remote repo
git pull to pull files from the remote repo to the local repo

I find this diagram very helpful to visualise the directory structure:

To learn more about branching, merging and other actions, I did a tutorial:

Found my existing SSH key using ~/.ssh/id_rsa.pub

Copied and added it to my FabCloud account.
Then I cloned the default repository to a local folder using:git clone git@gitlab.fabcloud.org:academany/fabacademy/2020/labs/barcelona/students/mitalee-parikh.git

Web Development

I recently learned how to make a website using HTML, CSS with a Bootstrap framework. To develop my webpage, I wanted to explore different Static Site Generators before fixing on one. So I started by setting up both Mkdocs and Jekyll. Hugo was another option I want to look into in the coming weeks.

Setting up jekyll

I followed this Jekyll tutorial by Giraffe Academy. Before installing jekyll, I checked if I had these supporting things, and updated them:
1. Homebrew: to easily install software packages
2. Ruby: programming language that jekyll is written in
3. RubyGems: package manager for ruby
4. Bundler: to track and install gems and versions in a group, for jekyll themes
Homebrew, Ruby and Gem were all pre-installed.
So I checked versions using
ruby -v and gem -v

I installed bundler with gem install jekyll bundler, but got a permissions error msg.
So, I tried it with sudo like so: sudo gem install jekyll bundler and it worked.
And then to make sure checked version: gem install jekyll bundler

To view the changes on my local server http://localhost:4000 I used bundle exec jekyll serve the first time and jekyll serve everytime after.

Setting up Mkdocs

Setting up Mkdocs was a similar process. Intalling and upgrading package manager pip pip install --upgrade pip to install mkdocs: pip install mkdocs

To view the changes on my local server http://127.0.0.1:8000 I used mkdocs serve

Themes

I tried to clone and modify some jekyll themes I downloaded from rubygems.org. While pushing it to gitlab, I wasn't sure what files to keep from the default fabcloud repo. So I replaced them all, but there was an issue with my pipeline. I think it has something to do with the config.yml file. While I figure that out, I'm using this default template to document my process.

Useful links

Misc Practices

Before pushing, I used ncdu to check sizes of files. To compress my images I installed and used ImageMagick. I found it very efficient to quickly convert or compress images for the web, and also to make quick GIFs.

After some trial and error, i figureed these basic commands and settings I can use for my workflow:

To compress photos taken from my phone:
convert IMGname.HEIC -resize 25% -quality 50% -density 72 jpg:extent=300kb IMGnewname.jpg

To compress images taken as screenshot from my computer:
convert Screenshot\ 2020-02-18\ at\ 10.54.27\ AM.png -resize 50% -quality 50% -density 72 jpg:extent=300kb newname.jpg

To make a quick GIF:
convert -resize 25% -delay 15 -loop 0 IMG_1380.HEIC IMG_1381.HEIC IMG_1382.HEIC IMG_1386.HEIC IMG_1387.HEIC IMG_1388.HEIC animation.gif

And to check the existing properties of an image:
magick identify -verbose focus.gif

I also check individual file sizes by changing current directory in terminal and using du -sh *|sort -n