Nadya is here :). This week was different from the previous weeks.
In the beginning I made some minor edits in the last posts. After it has been done, the new phase was began. I have finished the basic tutorial. It tells how to install software on your computer, how to test if installation was correct, how to navigate, create a new map and other things. You cannot create a complicated application without this knowledge.
The new phase of my internship is a creative phase. There are no strict rules or restrictions. I have to create an interesting application. It should demonstrate the advantages of TurtleBot in real life. The main tutorial explains how to create a CoffeeBot. It contains lessons how to configure the web server, install chrome extension or web application, launch program. It is understandable and useful, you can do it at your home, at work or at university without any very special equipment. I need to create an application like this in simulation.
I have read a lot about using robots like TurtleBot. There is an overview of ideas that I think are quite interesting.
1. Robot waiter.
As an example I want to add TurtleBot official video:
Robot waiter can help you with household chores or be used in industry. It can look like a person. You can watch this video:
2. Robot loader.
For instance, the Kiva robot system, which is essentially a really strong TurtleBot.
3. Robot observer.
It can take photos from different positions or measure some parameters (like temperature or humidity or presence of dangerous gas) in different places.
We haven’t decided yet what to choose. The discussion is in process.
This week I have written four posts. All of them were about autonomous navigation. Firstly you should create a map. Then you can send a goal in rviz manually or write a program. You can experiment with navigation in rviz but it is more comfortable to write a program because in this case it will let you do the same actions again and again. Here is a picture of the map:
You can see the TurtleBot in the centre. There are also a collection of arrows which show the position of the TurtleBot. You can see five objects on the map too, there are borders of different colors around every objects which show how close the TurtleBot is to the objects.
You can choose a point at the map and TurtleBot will go to this point avoiding obstacles. If the path or goal is blocked it can fail. You cannot repeat the same action every time and you can write a python script. These scripts are quite small.
It has been a month since my internship was started. I have written ten lessons and one unfinished lesson (I encountered some problems during creating it and decided to return to it later). Every lesson consists of brief introduction, instructions with pictures and video with all steps.
I have refreshed all my knowledge about git and learned new good tips, I understood how to push commits on the github, create a pull request, add new commits in the existing pull request, comment it and create an issue. I learned a lot about TurtleBot, ROS organization and tools such as gazebo and rviz. I think this month was really productive.
This week I’ve written two posts: Editing the Simulated World and Writing Your First Script. Also I’ve done minor edits in previous posts. I’ve learned some tips:
- Youtube annotations. Time in video manager and in result video may be differ. It is more effective to see the time in result video (on youtube video link) and type the proper time in notes.
- Terminal. Use Ctrl+R combination to invoke ‘reverse-i-search’. Type letters, ‘gaz’ for instance, and you’ll get a match for the recent command in your history that has ‘gaz’. You can press Ctrl+R again to go to the previous command in this search. When you see the proper command press Enter to execute it or Right Arrow to choose this command for editing.
- Terminal. You can pre-configure your terminal by editing file ~/.bashrc.
- Git. Commands ‘git reflog’ and ‘git cherry-pick’. I use them in this such case: I work on my local computer and I want to copy some commits from test branch to master branch. If current branch is master I can’t see the commits from the test branch. I don’t want to use the command ‘git merge’ because I want to sort commits in logic sequence. If I run ‘git log’ I will see the previous commits only in the master branch. So I can run ‘git reflog’ to see the commits from all branches, copy the proper commit’s hash and run ‘git cherry-pick hash’. If you know simpler way, please tell me :).
- Git. Command: ‘git stash’. If you want to delay current work and do some more important tasks you can hide current changes using ‘git stash’, work with clean workspace, and then return changes using ‘git stash pop’. It is a very brief description. You can read more about ‘git shash’ here.
- Git. I’ve installed qgit, Qgit – is a git GUI. With QGit you will be able to browse revisions history, view patch content and changed files and different development branches. You can install qgit from the ubuntu repository using this command:
sudo apt-get install qgit
I like my work. I think it is very important to do something you like.
Firstly, I don’t wait the end of my work day. It is perfect. I said before that I had created two users: one for work with simulation tools and one for all other activities. Then I decided to use ssd disk for simulation. I have installed ubuntu on that disk. Here I experiment with simulation tools. Also I record video here therefore I removed the clock from panel. I started working with new tutorial that day. In the evening I decided to work a little bit more. When I finished my work I looked at the clock on my phone and I was really surprised. It was nearly morning. I just wanted to finish some tasks but I took no account of time.
Secondly, I can explain my parents what I do. My mother is a programmer too. I tried to explain my mother what I did at my previous job. I explained her something of course, but frequently it sounds like: “I optimize some functionality”. Now I can show her what I do.
I decided to add some pictures in my blog for better understanding.
Firstly, I launch a gazebo world. Here is a standard world:
You see some objects and TurtleBot.
As I wrote before I created a lesson how to modify world: add new objects and remove objects. For example, you can create a world like this:
Then I launch Rviz. Rviz is a 3D visualization environment for the ROS. Rviz lets us see what the robot is seeing, thinking and doing. Visualizing and logging sensor information is an important part in developing and debugging.
Next article will be about creating a map which is essential to navigate autonomously. I am looking forward to write you about results.
This week I want to tell you more about recording video in ubuntu. Here is a small tutorial :). On Monday I had to update tutorial video for the previous post. I had to increase font size, add notes and tips, make video slower in order to give the user enough time to realize what had been changed. Moreover I wanted to do some other improvements.
- Preparation. You should have clean desktop, panel without clock (if you want to stop and then continue recording, it can be confusing for user to see different time). The wallpaper should be simple and suitable (not your family or your friends). You can use two workplaces, but it’s difficult to set them up properly (for instance, use different font size). So firstly, create a new user, setup suitable wallpaper, increase font size (not only in terminal, but in applications windows too), remove folders from the desktop.
- Recording video. Last week I wrote about using “kazam” as a recorder program. Now I prefer “simplescreenrecorder”. You should create two workplaces: the first for launching “simplescreenrecorder” and the second for recording your video. This program has hotkeys (start/pause recording). It’s very useful! You don’t have to cut off some parts of a record. This program has only a small icon on your panel. You can choose different containers and codecs. I prefer “MKV” and “H.264”.
- Editing video. The simple way to edit video is to upload it to youtube and use its tools. If you record video without audio (like me) you have to add annotations. Remember that user can’t see which hotkeys you use. You can choose proper color, size of notes and font size.
I had seen some video tutorials before but I didn’t know that it takes so much time to create a good video. You have to understand how to place windows on desktop, sequences of activities. You shouldn’t do unnecessary actions. Don’t forget to book some place for notes. Then you should look through the video and add annotations.
To sum up, it took more time that I expected but I like the results! I’m happy to finish preparation for recording video. Today I’ve created two more videos. It didn’t take as much time as the first one.
This week I wrote a post about teleoperation, finished the previous post (updated video) and did some preparations for post about using Kinect. I had some problems with software while I was writing Kinect post. I had to install developer version of package to test it. I had some progress, but I have to continue work with it.
Today I’d like to make an overview of my project and goals. The goal is creating a tutorial for simulation of a robot named TurtleBot. Why is it important? It will help to make a quick start in learning to manage TurtleBot in simulation using Gazebo. The simulation makes robot studying more accessible to people who don’t have a real robot but at least have a computer which can simulate it.
There is ”A Getting Started Guide for Developers Interested in Robotics” on http://learn.turtlebot.com/. In this tutorial you can learn how to install software, setup tools, write you first program. At the end of this tutorial you will be able to create a working program with delivering coffee.
In my project I’m making simulation tutorial. It will help you to install all software, and learn how to create and change simulation world, how to move through it, how to create the map of the world and lots of other things. We haven’t decided yet what would be the final program in our tutorial, but we have some ideas.
I want to tell you about my mentor. His name is Tully Foote. He is the ROS Platform Manager at Open Source Robotics Foundation and also the co-creator of the TurtleBot robot. I’m glad that he is my mentor and I like working with him. I hope that he likes it too :).
Now about my achievements this week.
I used git before but it was my local repository. Now I’ve signed up in Github and made my first pull request! There are some tips I want to share with you:
Defining upstream branch
Specify a remote upstream repository that will be synced with the fork:
git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
Deleting remote branches
Suppose you’re done with a remote branch — say, you and your collaborators are finished with a feature and have merged it into your remote master branch. You can delete a remote branch:
git push origin :fixbranch
Merging vs Rebasing
If you use git I think that you know merge, but might not encounter with rebase. I think it would be interesting for you. You can read about it here.
I’ve installed different software:
- atom — editor;
- shutter — tool for creating and editing screenshot;
- kazam — screen recording program;
- pitivi — editing video program.
I’ve created three articles for the tutorial! Moreover I’ve learned a lot of new information about ROS, Gazebo and robot simulation and why they are so useful.
Welcome to my blog! I’m an Outreachy intern now! My internship will start next week on 7, December. I will work at Open Source Robotics Foundation on the TurtleBot User Experience project.
I’d like to tell you about Outreachy program. It is intended to help newcomers and contributors who are relatively new to the Free and Open Source Software (FOSS) community to get more involved. This is a full-time internship for three months. Participants work remotely from home.
“Outreachy internships were inspired in many ways by Google Summer of Code and by how few women applied for it in the past”. The internships activities are not limited to coding. They also include user experience design, graphic design, documentation, web development, marketing, translation and other types of tasks needed to sustain a FOSS project. There are two rounds during a year starting in December and May.
You have to meet some requirements to participate in this program. First of all you should choose a project and make an initial contribution then you need to submit an application and wait for results. You can find more information on the official Outreachy site.
Now I want to tell you a little about myself. I love teaching and explaining complicated things in easy way. Moreover I like coding. I managed to find a project which suited all my requirements. This was a TurtleBot User Experience project in Open Source Robotics Foundation (OSRF). I made the initial contribution, discussed a project with future mentor and submitted the application. In addition, I have to say that this is my first experience in open source project. So, I looked forward to the list of accepted participants.
To Sum up, I’m very happy to be accepted for Outreachy! I’m sure it will be a great internship for me. I hope it will be good work for OSRF community!
I will write more about my project and plan after discussing with my mentor :).