Resources for Roboticists
Getting started: Learning the Ropes
New to the lab? Looking to join a new project? Just want to play with robots? Welcome!
In order to get yourself up to speed and ready to work on robots, there are a few things you'll need to get on your computer, get in your brain, and get ready to learn. Let's get started with the easy stuff first: setting up your development platform.
Development Platform
We often use one of two operating systems in the lab: Windows and Linux. We would recommend getting your computer partitioned with both a Windows and a Linux side, or at least getting a virtual machine of the system you aren't presently running. Windows 7+ is recommended, and Ubuntu 12.04+ is also recommended. If you are an Olin student, you can visit IT and get your hard-drive partitioned there if you're not comfortable doing that yourself.
Once you have your OS squared away, some basic installs to get you started - these will be applicable to either Windows or Linux distributions. Remember, for Windows you may want to use easy-install, pip, or manually download .tar files or executable programs for some of these suggestions. Everything will be downloadable using your typical command-line calls in Linux. New to the command-line in general? Check out this and this tutorial for Windows command prompt, and this one for the Linux command-line.
To set up your development system, you will want to get a text editor that you like: Notepad, Sublime, Vim, etc are all valid options. Next, you will want to make sure you have the ability to access git. Often the lab uses github to version control projects. You can learn about github and all set-up you will need for either OS here. On occasion the lab, or a SCOPE team, may set up a private server. In which case, we recommend using GitLab. If you are on Windows, you will want to download a git command line for this. Sometimes we use an SVN service instead of Git. Keep calm and download Tortoise. Lastly, it is often pretty nice to be able to read or record raw data from sensors or your robot without making a fancy program to do it. Download a terminal program like TeraTerm or PuTTy to use for this purpose.
Great - so now you have a text editor and git, now you'll want to select the programming language libraries you're going to want. There are so many options out there. The lab typically deals in Python, C/C++, Java, and Labview. Keep in mind that Labview is a Windows-Only application right now (it's a bummer, we know). In order to get Labview on your machine, talk to one of the robotics professors - you'll need a license. For the rest, you can visit their websites for downloading instructions. We suggest for Java applications at least, getting an IDE like Eclipse. For all of the languages and libraries we suggest running though the 'beginner' tutorials provided on the websites to get a feel for the IDEs, compiling, execution, using the command-line or command prompt, and so forth. Related to programming languages is ROS, the Robot Operating System by Willow Garage. While not a language in itself, it is an architecture often used with Python or C/C++ programs that allows for multi-threading, data handling, and brain building. You can download ROS here, and we suggest running through all of the beginning tutorials. You may also want to download catkin.
Electrical Prototyping Tools
There are several types of typical electrical assignments in the lab: road-kill development and PCB design. Road-kills are the assembly of all electrical components (often complete packages from a manufacturer) onto an independent board outside of the robot for testing. Road-kills are useful because they can be assembled quickly, offer easy access to components for testing, and can allow software development to begin without waiting for a physical chassis to be manufactured and outfitted. This task will require you to practice using wire strippers, crimpers, and hot air guns, in addition to using heat shrink, solder, electrical tape, various crimps, and learning to read wire gauges. Learning how to read data sheets is crucial to this job. To learn some of these basics, talk to your project PM about tool locations and trainings. Many of these skills you will have experienced in your first semester classes, but when in doubt ask to be retrained.
The second type of prototyping is in the development of printed circuit boards, or PCBs. This is when you design a circuit that will be routed onto a single plate, and then you will place and solder or reflow components onto it. Ask your PM if designing a PCB is useful for a task before spending time developing. There are often size, cost, or heating requirements that must be considered before ordering a board. for best development, we recommend downloading the free version of Eagle and going through the tutorial guide (hint: keyboard shortcuts are your friend).
In order to get yourself up to speed and ready to work on robots, there are a few things you'll need to get on your computer, get in your brain, and get ready to learn. Let's get started with the easy stuff first: setting up your development platform.
Development Platform
We often use one of two operating systems in the lab: Windows and Linux. We would recommend getting your computer partitioned with both a Windows and a Linux side, or at least getting a virtual machine of the system you aren't presently running. Windows 7+ is recommended, and Ubuntu 12.04+ is also recommended. If you are an Olin student, you can visit IT and get your hard-drive partitioned there if you're not comfortable doing that yourself.
Once you have your OS squared away, some basic installs to get you started - these will be applicable to either Windows or Linux distributions. Remember, for Windows you may want to use easy-install, pip, or manually download .tar files or executable programs for some of these suggestions. Everything will be downloadable using your typical command-line calls in Linux. New to the command-line in general? Check out this and this tutorial for Windows command prompt, and this one for the Linux command-line.
To set up your development system, you will want to get a text editor that you like: Notepad, Sublime, Vim, etc are all valid options. Next, you will want to make sure you have the ability to access git. Often the lab uses github to version control projects. You can learn about github and all set-up you will need for either OS here. On occasion the lab, or a SCOPE team, may set up a private server. In which case, we recommend using GitLab. If you are on Windows, you will want to download a git command line for this. Sometimes we use an SVN service instead of Git. Keep calm and download Tortoise. Lastly, it is often pretty nice to be able to read or record raw data from sensors or your robot without making a fancy program to do it. Download a terminal program like TeraTerm or PuTTy to use for this purpose.
Great - so now you have a text editor and git, now you'll want to select the programming language libraries you're going to want. There are so many options out there. The lab typically deals in Python, C/C++, Java, and Labview. Keep in mind that Labview is a Windows-Only application right now (it's a bummer, we know). In order to get Labview on your machine, talk to one of the robotics professors - you'll need a license. For the rest, you can visit their websites for downloading instructions. We suggest for Java applications at least, getting an IDE like Eclipse. For all of the languages and libraries we suggest running though the 'beginner' tutorials provided on the websites to get a feel for the IDEs, compiling, execution, using the command-line or command prompt, and so forth. Related to programming languages is ROS, the Robot Operating System by Willow Garage. While not a language in itself, it is an architecture often used with Python or C/C++ programs that allows for multi-threading, data handling, and brain building. You can download ROS here, and we suggest running through all of the beginning tutorials. You may also want to download catkin.
Electrical Prototyping Tools
There are several types of typical electrical assignments in the lab: road-kill development and PCB design. Road-kills are the assembly of all electrical components (often complete packages from a manufacturer) onto an independent board outside of the robot for testing. Road-kills are useful because they can be assembled quickly, offer easy access to components for testing, and can allow software development to begin without waiting for a physical chassis to be manufactured and outfitted. This task will require you to practice using wire strippers, crimpers, and hot air guns, in addition to using heat shrink, solder, electrical tape, various crimps, and learning to read wire gauges. Learning how to read data sheets is crucial to this job. To learn some of these basics, talk to your project PM about tool locations and trainings. Many of these skills you will have experienced in your first semester classes, but when in doubt ask to be retrained.
The second type of prototyping is in the development of printed circuit boards, or PCBs. This is when you design a circuit that will be routed onto a single plate, and then you will place and solder or reflow components onto it. Ask your PM if designing a PCB is useful for a task before spending time developing. There are often size, cost, or heating requirements that must be considered before ordering a board. for best development, we recommend downloading the free version of Eagle and going through the tutorial guide (hint: keyboard shortcuts are your friend).
Workflow in the Lab: Expectations
Once you've picked your project (it's ok to shop around for a few weeks if you need), you'll need to get set up with the software repository and directories you'll need to start doing work. Hopefully, everything will be on a git or SVN repository and pulling it will take just a few moments. For electrical and mechanical work, we expect you to follow the file naming system determined by the team. Only push work that you are sharing with another member or that is completed - keep working copies locally on your laptop unless requested to push them. For software, when trying something new create a new branch to develop on, and then once you've completed something create a merge request. Your PM will review the merge, you guys will work out something, and then once all the changes that are to be kept are integrated you can either delete that branch or continue developing on it.
Documentation and being on top of your email are a must to work in the lab. Your PM and team may not get a chance to meet all together very often (hopefully at least once a week), so email will be crucial for communicating. Documenting your work, perhaps on the team's google drive or whatever system you team has worked out, is also expected. No project is a success if the documentation is not kept well enough that a stranger can't execute everything relying solely on those documents. As the lab has grown and aged, we've found a number of 'lost' projects and robots which were clearly awesome when they worked, but the documentation is either poor or non-existent leaving us to resurrect the wheel instead of working on our own awesome things. Do a favor for your future self and the posterity of the lab by keeping a worklog of your development and documenting all completed work.
Documentation and being on top of your email are a must to work in the lab. Your PM and team may not get a chance to meet all together very often (hopefully at least once a week), so email will be crucial for communicating. Documenting your work, perhaps on the team's google drive or whatever system you team has worked out, is also expected. No project is a success if the documentation is not kept well enough that a stranger can't execute everything relying solely on those documents. As the lab has grown and aged, we've found a number of 'lost' projects and robots which were clearly awesome when they worked, but the documentation is either poor or non-existent leaving us to resurrect the wheel instead of working on our own awesome things. Do a favor for your future self and the posterity of the lab by keeping a worklog of your development and documenting all completed work.