Challenge 1: Getting Set Up
All of our development is done on Linux, more specifically Ubuntu. So, your first challenge is to get Ubuntu and our software stack up and running. We've written some instructions to help you along, which can be found in our github repository.
Note: If you can complete the challenges through something other then a native Ubuntu install, such as through a VM or other Linux distro, that's fine too, but we're not going to offer any help getting non-native Ubuntu setup's running.
Challenge 2: TurtleSim Sine Wave
OK, for this challenge, you'll need some pretty advanced mathematical skills. We're talking basic knowledge of what a sine function is... and that's about it. Seriously though, you don't need to know any advanced maths to join this team. Like I said in the intro, we're looking for people willing to learn
As such, your challenge is to have turtlesim draw out a sine wave.
Since the build system for ROS can be kinda complicated, we've provided you most of the framework for what you'll need.
~/Software_Challenge/src/challenge/src/solution.cpp you'll find a skeleton project, with a main
function and a while loop, alongside a bunch of resources down below. You don't
have to use this skeleton project, but we'd recommend it. You should be aiming for a final result that
looks something like this:
Note: Please don't just use the keyboard controls to draw this. Yes. We thought of that. As pretty as I'm sure yours is, we're more concerned with your code!
Note 2: You can also write your solution in python get started here, but the resources below are C++ focused, and that's the language we'd prefer you use.
We've done a lot of this stuff already, but it's important that you at least understand it. In particular, #5-6, #11, and #13 are important for this challenge. After that, you should be pretty much ready to start! To run the skeleton project we've provided, first source the project by running:
$ cd ~/Software_Challenge && source devel/setup.sh
$ rosrun challenge solution
While you're working, we'd suggest you have the turtlesim reference open (mostly for 2.1.1 and 2.1.2). It also contains some video tutorials, which may be of use. Make sure to take a look at the references for:
- geometry_msgs/Twist (The command you send to the turtlebot)
- turtlesim/Pose (what the turtlebot is sending you).
Note: You might however, not have to use the turtlesim/Pose, as there are several ways to solve this problem.
Bonus: Make The Turtle Do Something Else
The title sums this one up pretty nicely. You don't have to do this challenge, if you've gotten to this point, you've already done pretty well; but we encourage people to try things out and bring it to the interview, it helps us know how familiar you are with our system.
Super Bonus: Testing
This one's a fair bit harder, than the previous ones, so don't worry if you don't get it.
For this, we want you to re-write the Challenge package into the non-simple configuration specified in the README (the one with testing) and write (and run) some unit tests for your solution!