This week was really interesting. I have created two lessons. I wanted to make my lessons understandable and explained every steps: not only “do these instructions”, but added a reason for every step. It is a nontrivial thing because we use rocon (multi-master ros). Rocon project has basic definitions and ideas which were not covered in the simulation tutorial. You can find links to the original tutorial in these lessons. Moreover, there are some other difficult topics: running several overlaying packages simultaneously, modifying launch files, using code from github repository.
Also I have changed the example application. Firstly, I thought that basic application it is the best solution. Then, I decided that using TurtleBot follower application is more interesting.
As I mentioned before the idea is to create comfortable tool for interaction between robot and user. There is such a tool in rocon project. There are some modifications: you can launch it on your computer or on your android device. When you launch this tool you can see the role chooser window.
You can be an admin or a user. Then you can see the list of applications that you can run.
Of course, the roles and applications list depends on developer and customer fantasy :).
The process of creating application which you can see in this list consists of two, or even three parts. First, writing the code of your application. Second, writing all information about how to launch this file, what parameters to use and other settings. This is the functional part of your application. The third part is called “creating interaction”. You have to write all information that you want to show user in this list: icon, name and description of the application, etc.
For better understanding watch this video :).
My internship will come to the end soon, but I have to do a lot of work before. The new phase is coming :).
This week was very productive!
I have finished “TurtleBot follower” lesson. Here is my video with TurtleBots. I am driving the first TurtleBot using joystick and the second one is following it.
Also we decided continue work with rocon (multi-master ros). There is a lesson named “Writing your first rocon application” (in progress). The second lesson will be
“Writing your first interaction”. The idea is that the user does not want to know all details of your application. User interacts with robot via gui. You can change the logic, the sequences of launches inside your application and the user always has working program.
In addition, this week I gave help on ros answers, and my suggestions worked :).
I have not mentioned yet that the midpoint of internship has been successfully reached! I want to tell you about teleworking. I think it is very difficult and some people are not well suited to work at home. It has advantages and disadvantages. Before the internship I thought it is not for me, but now I am not sure :).
You should control yourself: set goals, track progress, stay in touch with your mentor. Every participant has to blog about internship every two weeks. My mentor, Tully Foote, said I have to write about the results every week. It means that I will satisfy the requirements and it will be a report about my work. I think it is an excellent idea. I see the results from the start and moreover every week I have some finished tasks.
It saves your money and time. You do not spend time on the road (at least one-hour in the city) and money on your car or transport, lunch at the office. Also you have more flexibility.
I have not got any problems with my equipment or workspace. I am working at my room where I have a computer. I do not need a lot of space because I work with robots in simulation :). I have quite good Internet connection: I can find all information I need and discuss everything with Tully Foote via hangout.
To sum up, working at home is not bad. If you have an offer and the main problem is this is a remote job, try to do it maybe you will like it!
I think this week was one of the most difficult weeks in my internship. The idea to launch two TurtleBots in one simulation world is not random. We want to demonstrate following behavior. I can drive the first TurtleBot and the second will follow it. There is a follower package which works in real world. For instance, TurtleBot can follow a person or another robot. The package has not supported simulation. The script is the same for real and simulation world, but you can encountered some problems with launch parameters, settings and features which work only with real robot.
You should understand the structure of ros to find a problem. I will try to explain you idea. Firstly, you launch roscore. Roscore is the center of your system. It consists of three components: rosout, parameter server and master. Rosout is a standard output. Parameter server saves parameters. You can modify them.
You can visualize your system, find information about nodes and connections between them. Imagine that your system is a graph. Each node of this graph has logic and functionality. The edges connect nodes which can communicate. The master knows all information about this graph.
Here is a graph of default system. It is quite big, but it is not complicated to understand.
Here is a zoom of one part of this graph. If you select a node (node is an oval) then this node will be highlighted. There is a node named /mobile_base_nodelet_manager. Also there are inner and outer edges. Inner edges mean that the node subscribes to these topics. These topics are blue. Outer edges mean the node publishers data to these topics. These topics are green. There is a cyan topic. The node subscribes and publishers to this topic. More complicated system will have more nodes.
The better you know the system, the faster you find a problem. It takes a lot of time to find a problem. Now the follower demo works! I have to record video and write a new lesson. Then we will discuss a new challenge for the TurtleBot tutorial!
This weekend I participated in Django Girls event as a coach! Django Girls is a free one-day workshop for beginners, where everybody can learn how to build a website using Django and Python. Honestly, when I saw that event I wanted to apply. Then I found the tutorial and started to do it. It was very interesting. I decided to finish the tutorial and got prepared to be a coach. I met a lot of amazing people at the event. The girls in my team were very positive and eager for knowledge! I enjoyed this event!
I recommend you to participate in this event. You can be an attendee or a coach or even an organizer.
- If you want to be an attendee check the upcoming event list. You do not have to know Python or Django. Workshop is for people who are new to programming. If you are a woman and have a laptop — you can apply! At the event do not be shy and ask any questions you have! The tutorial is excellent and I am sure you will like it too.
- If you want to be a coach you should not be an expert in Python. You should have a desire and some time to go through the tutorial before the event.
- If you want to be an organizer you can find an organizer manual on the site. I do not know a lot about this role.
You can find all information on the official site. Moreover you can contribute to this project in other way (for instance, translate the tutorial in your language). Check “contribute” section on the site.
Learn new things and do not be afraid to ask questions!
This week I want to tell you about contribution to open source project. There are a lot of different tips “how to start contributing”, “how to find a project”, “how to install git (or other version control system)”. Here are some tips from my experience:
- The most important thing is to be interested in the project. You should want to improve it. For instance, you use some program. It is very useful. Then you want to upgrade it for your needs. If it is a useful feature you can share your changes with other users. There is another example: you want to learn some tools. You go through the tutorial step by step. You have a problem with a step and you understand that the author has skipped something or information is outdated. You spent a lot of time to find an answer. You can update this step (or even a line) and the next user won’t have the same problem. These are only two examples and your goal can be different.
- You should create an account on github or bitbucket, or anything else where the project is situated.
- You should search carefully for the instructions how to contribute to this project. It can save your time and time of other contributors. For instance, in gazebo tutorial you can find “Development” section. There are three lessons: “Add/Modify tutorials”, “Contribute code”, “Development process”. You can find rules there.
- The most common method is to fork the repository and then work with it. After finishing work you can create a pull request. Don’t worry if you change something wrong! Firstly, you can revert the changes. Secondly, your changes are available only for you. The pull request has to be approved before other users will be able to see your changes. Of course, check your changes twice before uploading them :).
- You can edit a file online. It is very comfortable when you want to edit articles. You can find instructions how to use this feature in bitbucket help page. You can edit the files on github in the similar way.
This week I have also learned how to launch robots (not TurtleBot) in gazebo world, how to move them. I have used the code from tutorial and I have had a problem: “the cube does not move linearly”. You can see it in this video:
Then my mentor and I discussed it. He advised to change the gravity in the world. The cube starts moving as I wanted. You can see it in this video:
I have not understood that physic rules really work in gazebo before this case. Then I have encountered with differential drive in code. And now I understand how it is realized!
I think that it is interesting to have two TurtleBots in one gazebo world. It takes some time to understand how simulation works. Now I am learning more complicated features of using gazebo.