This project involves creating a ROS package that uses turtlesim. The objective is to create a simulation where one turtle is controlled by the user (using turtle_teleop_key) and the other turtle follows the controlled turtle without using the tf package. An idea of what this should look like can be seen below where the green turtle is controlled using turtle_teleop_key and the white turtle follows the green turtle.
In order to complete this task a basic understanding of ROS is required. You will need to complete the core ROS tutorials to solidify core concepts and understand the ROS packages/nodes you will use in this project (turtlesim, turtle_teleop_key, etc.).
This project was inspired by the intro tf tutorials. Although optional, I would recommend going through these tutorials to gain an understanding of how to solve this problem using tf's. And if you are interested, I would also recommend checking out the other ROS Navigation tutorials as they may also contain some helpful information for this challenge.
The challenge of this project is to replicate the turtle_tf_demo.launch
in the intro tf tutorials without using tf! Doing this will allow you to gain a solid understanding of the core concepts of ROS as well as appreciate the role and power of the tf package.
Finally, this project will get you familiar with Git/GitHub, and our code review workflow (PRs). Please consult our GitHub guide and feel free to ask the software leads any questions if you get stuck.
A demonstration of what is expected should have taken place in the first software meeting you attend. If you joined after the first software meeting, approach a software lead so they could show you what we expect from you. This project will not only help you understand how to work with ROS, but also how to navigate the ROS wiki and finding resources to help you in a project. "Googling" things is probably one of the most fundamental skills of a developer!
Once you finish this project, you will be considered a software team member and be expected to contribute towards AMP's codebase.
Note: This project assumes you know at least some basic git / version control. If you are stuck at any point in the project, feel free to reach out to the Software Leads for guidance.
- Install ROS Kinetic Kame on your Ubuntu 16.04 Virtual Machine per steps 1 and 2 of the instructions provided in the AMP ROS Learning Guide (This may change as there are talks to port v1 to Noetic) AND make sure you have gone through the core ROS tutorials.
- Initialize a ROS catkin workspace in the home directory of the VM, and name it
intro-project
. - Initialize git inside the project folder. Make sure that when you
ls
, you can see thebuild/
,devel/
, andsrc/
directories. - Checkout to a new branch which will contain all the files for your project. This can be done via the following command:
git checkout -b solution-dev
- Add and commit your initial workspace to this branch, you can name this commit
initial commit
.
git add . && git commit -m "initial commit"
- Fork this repository to your GitHub account, make sure the fork is public for code review.
- In your project, configure the remote repository by running the command:
git remote add origin <link-to-your-fork>
- Setup an upstream link and push the commit with the command:
git push --set-upstream origin solution-dev
- You can now work on the project and have it saved in a remote repository. This allows you to work on the project in multiple devices easily and protects your project from accidents!
- Make sure the branch
solution-dev
in your fork of this repository has your project. Make sure all files are in the branch by runninggit status
, it will tell you if there are any inconsistencies between your local project and the remote repository. - In this Repository's website (on github.com), create a pull request to merge your development branch into this repo's master branch. Add the GitHub users @zghera, @alanssitis, and @Reschivon as reviewers for your PR.
- Respond to any code-review comments until you have approvals from all code reviewers. Once things looks good, the software leads will give you our approval and then close the PR (your great solution can't sitting in the repo unfortunately).
- Be proud of your great work and get ready to contribute to the AMP codebase!
Here are some resources you may find useful: