Category Archives: Open Source

TurtleBot 2

ROBOTIS and OSRF, recently announced a TurtleBot 3 (TB3), that will cost around $500. This got me thinking about the previous version, TurtleBot 2(TB2), which was really an evolutionary approach to a creation, driven by a desire for affordability.

The TB2 utilizes a Kobuki Base, for a standalone cost of approximately $350, plus $55 for a charging station(formerly an iCreate 2 base, with an associated cost of $200 inclusive of base).

There are two distributors in North America, Clearpath Robotics, and Dabit Industries, both offer an “essentials kit” as follows.

TurtleBot 2

Features ClearPath Robotics Dabbit Industries
Cost: $1,049 USD Cost: $1,050 USD
Base Kobuki Kobuki
Battery 2200 mAh Li-Po Battery 4400mAh Battery
Charger Fast Charger Docking Station
Mounting Hardware Yes Yes
Other USB TurtleBot Installer USB TurtleBot Installer

Computer Engineering “Prerequisites”

Based on my last post, I determined MIT’s OpenCourseWare project does not contain a desirable level of Computer Science and Electrical Engineering courses to fulfill a curriculum. Therefore to continue on my path to a free education I decided to look first at basic institution requirements for Computer Engineering and then look for other platforms that provide these courses free and online. I first searched for Computer Engineering School rankings and found the following:

Rank USNews Business Insider
1) MIT California Technical Institute
2) Stanford Massachusets Institute of Technology
3) UC-Berkeley Stanford
4) Carnegie Mellon Rensselaer Polytechnic Institute

MIT’s and Stanford were the only two institutions on both lists so I compared both curricula and identified those mandatory, non-elective, institution requirements.

Stanford’s curriculum is here and MIT’s is here.

The requirements, in summary, were as follows:

Stanford MIT
Dept Course Title Dept Course Title
Math 41 Introductory Calculus Chem 3.09/5.11 Introduction to Solid State Chemistry
Math 42 Calculus Bio 7.01 Fundamentals of Biology
CS 103 Mathematical Foundations of Computing Math 18.01 Single Variable Calculus
CS 109 Introduction to Probability for Computer Scientists Math 18.02 Multivariable Calculus
Phys 41 Mechanics Concepts, Calculations, and Context Phys 8.01 Physics I
Phys 43 Electricity and Magnetism Phys 8.02 Physics II: Electricity and Magnetism
CS 106 Programming Abstracts CS 6.004 Computation Structures
ENGR 40 Introductory Electronics CS 6.005 Elements of Software Construction
CS 107 Computer Organization and Systems CS 6.006 Introduction to Algorithms
CS 110 Computer Organization and Systems 5
CS 161 Design and Analysis of Algorithms

There were some similarities, but not enough at the surface to identify a consistent curriculum of institutional requirements.

Computer Science and Engineering Curriculum Through Open Courses?

I have been interested in going back to school for some time now, but have been stuck weighing the benefits against additional student debt. I was curious to determine how much of the curriculum could be accomplished through open courses and self-directed learning.

I took the EE/CS curriculum, and cross referenced MIT’s OpenCourseWare to identify those courses with audio lectures available online.

The following was taken from MIT’s Electrical Engineering and Computer Science Curriculum (90 units in total). In general it appears as though some lower level classes are available — but not nearly enough. Any links in the Video/Audio/Materials column indicate that course’s are available online and on-demand in some capacity.

Category ID Subject Video/Audio Available? Book
Introductory
6.01 Introduction to EECS I 2011 course from MIT N/A
6.02 Introduction to EECS II 2012 MIT course
Mathematics (pick two)
18.03 Differential Equations OR the following 2010 course from MIT N/A
18.06 Linear Algebra; AND 2011 course from MIT
6.042J Mathematics for Computer Science 2010 course from MIT N/A
Foundations
6.004 Computation Structures N/A
6.005 N/A Elements of Software Construction N/A
6.006 Introduction to Algorithms 2011 course from MIT
Department Lab (pick one)
6.141 Robotics: Science and Systems I
6.170 Software Studio N/A
6.172 Performance Engineering of Software Systems 2010 course from MIT N/A
6.173 Computer Language Engineering
6.035 Computer Language Engineering Selected 2005 lectures from MIT N/A
6.813
6.828
Headers (pick 3)
6.033 Computer System Engineering 2009 course from MIT
6.034 Artificial Intelligence; Or the following 2010 course from MIT N/A
6.036 Introduction to Machine Learning N/A
6.046 Design and Analysis of Algorithms
Advanced Undergraduate Studies (pick two)
6.022J Quantitative Systems Physiology N/A
6.023J Fields, Forces and Flows in Biological Systems N/A
6.025 Medical Device Design N/A
6.035 Computer Language Engineering 2005 course from MIT – selected lectures only N/A
6.045J Automata, Computability and Complexity N/A
6.047 Computational Biology: Genomes, Networks, Evolution N/A
6.049 Evolutionary Biology N/A
6.061 Introduction to Electric Power N/A
6.111 Introductory Digital Systems Laboratory N/A
6.115 Microcomputer Project Laboratory N/A
6.131 Power Electronics Laboratory
6.141J Robotics: Science and Systems I
6.170 Software Studio N/A
6.172 Performance Engineering of Software Systems 2010 course from MIT N/A
6.207 Networks N/A
6.301 Solid-State Circuits
6.302 Feedback Systems N/A
6.502J Introduction to Molecular Simulations
6.503 Foundations of Algorithms and Computational Techniques in Systems Biology N/A
6.701 Introduction to Nanoelectronics N/A
6.717 Design and Fabrication of Microelectromechanical Systems N/A
6.801 Machine Vision N/A
6.802 Computational Systems Biology N/A
6.803 The Human Intelligence Enterprise N/A
6.804J Computational Cognitive Science N/A
6.805 Ethics and the Law on the Electronic Frontier N/A
6.813 User Interface Design and Implementation N/A
6.814 Database Systems N/A
6.815 Digital and Computational Photography N/A
6.835 Intelligent Multimodal User Interfaces N/A
6.837 Computer Graphics N/A
6.857 Network and Computer Security

EDIT: If you have gotten this far, check out the MIT CHallenge

I Feel The Need. The Need for… C. (Arduino Uno Programming in C)

I read a great post from Balau’s blog related to programming in C with Arduino. It was very helpful, however, as a Windows 8 user I had to make a few tweaks.

Download the windows version of the AVR compiler, here http://sourceforge.net/projects/winavr/files/latest/download?source=files and run the exe.

Download this copy of avrdude http://download.savannah.gnu.org/releases/avrdude/avrdude-6.1.tar.gz unzip and then save to your root, i.e. “C:”

I cut and paste his code:


#include
#include

enum {
BLINK_DELAY_MS = 1000,
};

int main (void)
{
/* set pin 5 of PORTB for output*/
DDRB |= _BV(DDB5);

while(1) {
/* set pin 5 high to turn led on */
PORTB |= _BV(PORTB5);
_delay_ms(BLINK_DELAY_MS);

/* set pin 5 low to turn led off */
PORTB &= ~_BV(PORTB5);
_delay_ms(BLINK_DELAY_MS);
}

return 0;


into a notepad++ file, called “led.c” and saved at the root was well.

I ran his commands verbatim in my Windows 8 command prompt, with the exception of the last line which I modified as follows.

Balau’s command: C:\> $ avrdude -F -V -c arduino -p ATMEGA328P -P /dev/ttyACM0 -b 115200 -U flash:w:led.hex

My command: C:\> $ avrdude -F -V -c arduino -p ATMEGA328P -P COM5 -b 115200 -U flash:w:led.hex

I had to identify the port (USB) that my Arduino Uno was plugged into, in my case COM5. You can discover which port to use by opening your control panel and going into your device manager. The COM will be displayed next to your device as demonstrated below.

My Arduino Com Port

My Arduino Com Port

After all that, your bragging rights will look a little like this… a blinking light…