My Favorite VS Code Extensions

Microsoft’s Visual Studio Code (VS Code) has quickly become my favorite IDE and hackable text editor since I first tried it in 2016. The immense flexibility with different languages and file formats makes it the ultimate swiss army knife for any software developer. Add in support for in-line and step-by-step debugging and you have my vote for my favorite IDE. However, stock VS Code is rather useless, and Microsoft has done this on purpose to mold your text editor in your style using extensions. Therefore, here are my top favorite VS Code Extensions I have installed on every computer I own and develop.

Note: This list is subject to change as I modify my preferences with VS Code. It serves as a list of extensions to install on a new computer for me. Honorable mentions are cool extensions I have found that I don’t usually use or have installed, but I thought may be useful for readers who come across this post.

C/C++

CMake Tools

Code Spell Checker

Docker

Jupyter

LaTeX Workshop

Prettier – Code Formatter

Python

Pylance

ROS

Todo Tree

YAML

alternative: docs-yaml by Microsoft

PlatformIO IDE

Making .desktop Files for Linux

Here’s a quick explanation on a tool I’ve been recently using more and more. As a linux user, you will often run into scripts or programs that don’t come packaged to be installed. Although this totally fine, often times it means that I can’t launch the script with my favorite launcher, Albert! In this case there are two main methods I have found to make custom .destkop files. For the following examples, I will be using the following .desktop file for Anaconda Navigator.

[Desktop Entry]
Name=Anaconda-Navigator
Exec=/home/alex/anaconda3/bin/anaconda-navigator
Terminal=false
Type=Application
Icon=/home/alex/anaconda3/lib/python3.7/site-packages/anaconda_navigator/static/images/anaconda-icon-256x256.png
Categories=Development;
Keywords=python;python3;anaconda;navigator;conda;
Comment=Anaconda GUI Navigator for Python 3

Recommended: Using Desktop-File tool

This tool is simple to use, and also allows you to put the .desktop file anywhere on your computer. Wherever that file is, simply change the directory to that file. Then run the following command, replacing the name of the .desktop file you just made:

sudo desktop-file-install anaconda.desktop

It may take a few seconds (20 – 40) to populate in your launcher, whether that is the standard Gnome search or a system like Albert. I will usually put this desktop file in the same location that the program files are to make it easy to find if I ever need to edit it. For example, for the case of Anaconda, the program files are found under ~/anaconda3/ so I will put the .desktop file there.

Alternative: Place Files In .local folder

An alternative to the above solution is to place the .desktop file under ~/.local/share/applications/ folder. This will be automatically be searched by the launchers when searching for a program, however I have had to restart Albert occasionally when it doesn’t find the program.

Other Resources

If you would like to learn more about .desktop files, the ArchLinux wiki has a great article. You can find out more about it here: https://wiki.archlinux.org/index.php/desktop_entries

3D Printing Filament Spool Weights

In order to get an accurate measurement of a partially used spool of filament, I am compiling the average weight for empty and full spools of different materials from different companies I’ve used over the years. The table below will be compiled with more data as I obtain it! If you would like to contribute, drop a comment below!

BrandFilament TypeSpool SizeFull Spool WeightEmpty Spool Weight
EryonePLA (White)1kg/NAN/AN/A
HatchboxPLA (Black)1kg/NA2.253

Ender 3 Upgrades + Tips/Tricks

I recently purchased an Ender 3, and want to share the tips and tricks:

Upgrades:

https://www.thingiverse.com/thing:2894097

https://www.thingiverse.com/thing:4096147/files

https://www.thingiverse.com/thing:3765594/files

https://www.thingiverse.com/thing:2917932

https://www.amazon.com/gp/product/B079JZ374W?tag=all3dp0c-20

https://www.thingiverse.com/thing:2920060

https://www.thingiverse.com/thing:2943218

https://howchoo.com/g/ntg5yzg1odk/using-octoprint-with-the-creality-ender-3-3d-printer

https://www.thingiverse.com/thing:3255518

SmallKat MQP

The SmallKat MQP is providing a quadrupedal robotic platform to help research and design new gaits, test sensors, and teach engineering students. Current options limit small companies, universities, and hobbyists due to their complexity, large size, and immense cost. SmallKat is a low-cost robotic platform with customizability and adaptability in mind. To allow for a multitude of gait designs, it is designed with 4-DoF legs controlled by powerful custom servo motors, 9-DoF IMUs, and custom microcontrollers. The body is constructed using additive manufacturing with PLA plastics, and even has a continuum tail for added body control. The higher-level controller runs on a single-board computer for added performance when computing kinematics and dynamics, and controlling different gaits. Future revisions of SmallKat could look to advance the basic gaits that were developed and add new sensors like a 3D camera.

Mechanical Design

4-DoF Legs powered by JX HV-5932MG for adaptability & maneuverability

  • Low cost ($30), high torque (32kg-cm stall), & simple communication system
  • Other options considered: Dynamixel AX-12a & XH430

Continuum Tail: 20 links, controlled by 4 braided fishing lines

  • 4 Maxon motors control the movement of the tail by tightening or loosening the string
  • 2 motors control the first half of the tail, other 2 motors control the second half

Polyurethane Feet add an increased coefficient of friction with the ground

  • Feet have integrated pressure sensors for force measurements
  • 3D printed molds created to attach polyurethane to the feet

Electronics

Custom Microelectronics:

  • Motor Controller
  • Custom foot sensors
  • Charger
  • Motherboard
  • Tail Driver and Controller
  • IMU

Communication Stack

  • Receives Updates wirelessly
  • Calculates IK of the robot
  • Updates joint angles
  • Returns joint angles, IMU data, Foot Sensor Data and battery voltage.

Software

Raspberry Pi 3 B+ connected to the microcontroller via HID over USBBowler Studio & Bowler Kernel for development environment & simulationBowler Kernel: underlying kernel, runs headless on the Raspberry Pi 3Forward kinematics & some dynamics are integrated in Bowler Studio

  • Developed inverse kinematics software for position control using Geometric approach

Basic Walking Gait with a Central Pattern Generator (CPG) for trajectory generation Dynamic walking gait by calculating the Wide Stability Margin and a CPG for trajectory generation

Development Environment & Simulator

Want more information? Read our Paper!

Follow Us on Github!

NASA Space Robotics Challenge Team WPI Finalists

What is NASA’s Space Robotics Challenge?

The NASA Space Robotics Challenge was an industry competition that tasked teams with developing and displaying the ability of an R5 robot to assist with the necessary tasks within a NASA mission, such as one on Mars. We used the Robot Operating System (ROS), and the virtual environment Gazebo to simulate the robot performing the tasks. Read more about the challenge here.

How did WPI’s team do?

The WPI Humanoid Robotics Lab team was among 20 finalists in the competition, beating out over 405 teams from 55 countries.

Team WPI Robot in 3 Days 2018

As a part of the WPI Robotics Club, we developed this 2018 FIRST FRC robot in 3 days! This robot is for hundreds of thousands of high school students around the world, who will now have a better understanding of what strategies to use when building their own robot in the next 6 weeks. To read the build blog, please visit here, and make sure to look at our videos below!

Poverty Stoplight Interactive Qualifying Project

This project is an Android application designed to help social workers in Paraguay better help people in poverty. The application was developed for FundaciĆ³n Paraguay and Poverty Stoplight, and consisted of developing a REST API and an Android application capable of syncing sensitive family data from a secure server.

This project was done as an Inquiry Qualifying Project at Worcester Polytechnic Institute, on a team of 4 students, requiring to solve real societal issues within a multidisciplinary team.

What is Poverty Stoplight?

Poverty stoplight is a multidimensional poverty system that is designed to improve the lives of impoverished families, and eventually get them above the poverty line. The system is currently expanding to several nations, including the United States, Great Britain, and Paraguay. If you would like to read more, please visit www.povertystoplight.org

Project Drogo Wins at HealthHacksRI

We developed a wearable device designed to assist elderly people through post-hip surgery recovery. The device has two main functions:

1. Looking out for prohibited motions

After a hip replacement, there are a number of motions you can’t do. For example, you can’t bend over, you can’t cross your legs, and you can’t shift your weight to that foot. The wearable watches out for all of these things in the background and can alert you (and a caretaker) if they happen in the days after surgery.

2. Guiding the user through rehab

Rehab begins almost immediately after surgery but can be quite expensive and difficult to remember when not under supervision. The app not only makes sure the rehab exercise is completed, but also makes sure the exercise is completed correctly without strain on the new hip.

I specifically worked on the software running on our microcontroller. It sent information to the iPhone over the internet like when a user crossed his legs and when a user correctly did his exercise.

This project was done at HealthHacks RI at the University of Rhode Island with Ben Hylak, Mark Landergan, and Andrew Nagal.

An example warning
An example guided exercise
Our team on 1st place at HeathHacksRI in 2017!