-
Notifications
You must be signed in to change notification settings - Fork 44
Workshop 1 Introduction and ROS Basics
- First (Re-)Boot in Ubuntu if your machine is running Windows (or nothing at all): reboot, quickly press F12, wait for boot loader to appear, select Ubuntu.
- Login as user
computing
Everything this year is deployed via docker containers. Hence, read using the module resources in docker#using-the-modules-docker-image, first.
-
Familiarise yourself with the module’s reading list on blackboard!
-
Read chapter 2 of Mahtani et al, “Effective Robotics Programming with ROS” (available on blackboard) Please note that the book talks about ROS kinetic, while we use a slightly newer version: noetic.
Work through the “Beginner Level” tutorials 1-7 at http://wiki.ros.org/ROS/Tutorials (working through does not mean you have to complete each one of them, but it may help you). If you have previous ROS experience, you may skip over the bits you already know, but be prepared to answer questions by the delivery team on the different concepts.
A computer is already seen as a central part of any robot. In ROS, different components are communicating with one another over topics. "Proprioceptive Sensing" refers to measuring the internal (as opposed to the external) state of a robot/computer. As a very simple example, the currently free memory (RAM) of a computer could be considered as part of the internal state. This information may well be relevant to another component in a robot, e.g. to decide if the resources available are adequate to run some algorithm. Hence, your first job is to write a Publisher for a topic called /freemem that continuously publishes the currently free memory of your computer. The type of the Publisher shall be std_msgs/String, i.e., you will just be publishing this as a text.
There are many different possibilities to achieve this:
- Use existing command line tools, such as
rostopic puband read the information from e.g./proc/meminfoand parse the relevant parts using command line tools - Write a small ROS python node that, e.g., uses
psutil(in general stackoverflow is a very valuable resource you might end up using a lot), creates arospy.Publisherand publishes the information required.
Whichever way you choose, this is already a typical example of how ROS is used in robotic systems: System information from hardware is read by components (sensors) and published regularly on a topic, making the information available to other components.
This task will require you to research some way to accomplish it on your own, but please discuss with your fellow students and the delivery team.
Get to know your robot companion for this module: roslaunch bacchus_gazebo vineyard_demo.launch
Consider installing Docker and using all the container on your own machine, check [[using the module resources in docker