Introduction
This is the newbie guide for any new (or old!) members of the @Home-project. It consists of the concepts that a mentor will go through with you to get you up to par with the team, as well as goals that you immediately can get to work with in order to get started in the project.
Mentorship Checklist
- Competition (What, why, when?)
-
The Team
- Culture
- Events
- Roles and people
-
The System Architecture
- ROS framework
- The cross-disciplinary areas of development
- The system diagram and how it all fits together in our project
-
Your part in it
- What do you want?
- Why do you want it?
Newbie Goals
Here are a set of goals that you should accomplish in order to become confident in your ability to contribute to the project. And believe me, your eyes will be widely opened after going through the content! So put down the time needed and later reflect on the new knowledge you've acquired and the opportunities that you've unlocked in doing so.
The goals are in order. Pick them off one by one and ask for help whenever you need it. Especially if you want to discuss any ideas or if you'd like input on a subject to understand it better.
Goals
Introduction
- Write down goals that you want to accomplish in the project. This step is important, so make sure you don't skip it. Do you want to participate in the competition? Do you want to hang out with interesting people and learn a lot during the time you're on the team? Do you want to acquire skills to make you more attractive on the job market? Do you want to escape your insecurities, and realize that you too can accomplish great things once you put your mind to it?. Send your project goals in Slack to Simon W.S. (or email them to simst932@student.liu.se). Studies show you are more likely to commit to goals you share with others.
- Bookmark the ROS tutorials documentation page. You'll need it.
- Bookmark the ROS CLI Cheatsheet. You'll eventually need it too.
- Read the About ROS page. (2 mins)
- Look around the ROS tutorials documentation page to orient yourself. You can skim through it to disarm its complexity.
- Look through the titles of the pages on this wiki. Again, just to disarm it and give you an overview.
- Visit the Issues page. What is currently being worked on?
- Add your contact info here
Setting up your development environment
When you get to this stage, confirm that you have an account (user/pw) on fetdatorn by contacting the tech lead (currently Simon W.S.)
You can set it up in three ways. You either set it up on your own PC or through SSH on the common computer fetdatorn (either pure SSH or through VS Code). You can also do all.
For more information, look through the general README.md and INSTALL.md in the main repository to just get a grasp of the environment, no need to do anything with it.
(Option 1) Remote development (fetdatorn) through VS Code
The easiest and fastest way to get started is to set up your environment in VS Code through SSH on fetdatorn, you can go to this page.
(Option 2) Local development
- Follow these steps to get the containers installed.
- Install Docker here. Choose Docker Desktop if you are using Windows. Install on Linux using this tutorial
- Install an IDE of your choice. We recommend using VS Code which you can install from here.
(Option 3) Remote development (fetdatorn) through SSH
When being connected to SSH you will not have a graphical GUI. You'll hack around in vim, nano, or emacs as a text editor, so if you opt for this, look up some cheat sheets on those programs and become a guru.
- Simply open a terminal if you are using Linux, or install an SSH client such as Putty on Windows and connect to fetdatorn according to here
Get up to par with Git
Git is used for source version control and is the basis for cooperation with code (and now, pretty much any files with concepts such as Git-For-Everything!). You can read about Git here. The most used commands are
git status # Helpful info about unstaged changes, which branch you are on etc
git pull # Pulls down any changes from the remote
git add <file> # Add a new file or update an existing file before commiting
git commit -m "my commit message" # Commits your changes to the local repository, then you use git push
git push # Pushes your changes to the remote repository
git checkout -b <name> # Create a new branch from the current branch with name <name>
Git will help you if you do something wrong. You should also consolidate git --help
since all the information required is there as well.
Also check out how you contribute to the project in this guide.
Acquaint yourself with ROS
Time to get to work! For any tutorial where you need to make a package, we'll set up a docker container for you first! There'll soon be a link here to take you to a video tutorial on how to do that. Learning Docker is going to make you an attractive employee wherever you go. It's extensively used pretty much everywhere, and the technology (virtualization) it is based on is used virtually (haha, pun intended) everywhere as well.
Focus on reading the pages without attempting to follow along with any commands. There will come a point where you will set up an environment (in Docker) to later be able to follow through these tutorials. The first step is to just read and acquaint yourself with the material.
- Read the page about ROS Nodes (10 mins)
- Read about ROS Topics (5 mins)
- Read about ROS Services (5 mins)
- Read about ROS Parameters (5 mins)
- Read about ROS Actions (5 mins)
- Read and understand how a workspace is structured and what it is here (10 mins)
- Read about how you create a package in ROS here (10 mins)
- Create a docker development container by following this tutorial.
- Create your own temporary package according to the knowledge you got from the article above. Create a node through the CLI command in the article, either in Python or C++. Run it after the package is created to make sure your environment works.
-
By using inspiration from the tutorials, create a node that publishes information (like a string) either in Python or C++. Helpful CLI command is
ros2 topic list
to see that it runs when you run it.
Making Pepper Talk
Now once you've been acquainted with the technical side of the systems we use, it's time to get practical!
Pepper Basics
Turn on Pepper by pressing its chest button under the tablet. Do not hold the button as this will initiate a factory reset, and that's not good.
When Pepper has awoken, you can press the chest button again to hear Pepper talk about its problems or say its IP address. Pepper will complain about its "back left laser". You can disregard this as it will only make Pepper unable to move. Solve this by logging into Pepper from SSH if you need Pepper to move. The connection string is ssh nao@10.133.5.240
. Hit the up arrow until you find the command that turns off the "diagnosis effect".
Getting Started
To get Pepper to talk, you will start from the absolute basics, to eventually starting up the robot by yourself and starting up the necessary systems to have a crazy conversationalist robot. Are you excited?!
To help you, there is a video series on the subject. You can find a list of the videos here
Follow these steps!
- Look at the structure of the packages lhw_intelligence and lhw_nlp in src in our main repository. How are the packages connected? What nodes are responsible for speech, natural language processing, etc? What is GPT? Dialogflow? Take some time to understand how things fit together. (1 hour)
- Read the wiki page for running NLP here
- Go to the Lab, start up Pepper (press once on the chest button)
- Log into fetdatorn itself or to fetdatorn on your computer using SSH
- Run the required nodes according to the NLP guide
- Talk with Pepper and have fun!
- When done, turn off Pepper by holding the chest button for 2 seconds until Pepper says "nuknuk".