Welkom terug, ik weet het is al weer even geleden sinds we ROS geinstalleerd hebben, maar we gaan dan eindelijk nu iets met ROS doen.
Waar bestaat ROS uit.
Als je ROS Deel 1 hebt uitgevoerd, dan staat er nu al een compleet werkend ROS systeem op de computer. Dit allemaal is geinstalleerd in /opt/ros/kinetic/
, deze installatie is read-only. Dus hoe kunnen we dan eigen programma's aan ROS toevoegen. Wel dat kunnen we doen door een werkruimte (Workspace) te maken. Laten we dat nu als eerste gaan doen.
Als we kijken naar onze Omgevings variabelen die horen bij de installatie van ROS, heb je 2 belangrijke variabelen voor de werkruimtes namelijk ROS_ROOT en ROS_PACKAGE_PACK. Deze zien er nu als volgt uit.
$ printenv | grep ROS_
ROS_ROOT=/opt/ros/kinetic/share/ros
ROS_PACKAGE_PATH=/opt/ros/kinetic/share
De ROS_PACKAGE_PATH variabele zorgt er voor dat men werkruimtes kan toevoegen, en dit gaan wij ook nu doen. De werkruimte die wij gaan toevoegen gaan wij hcc_ws noemen.
$ mkdir -p ~/hcc_ws/src
$ cd ~/hcc_ws/
$ catkin_make
Na het uitvoer van de opdrachten, is er een werkruimte gecreerd. in hcc_ws, zijn de volgende mappen te vinden, build, devel en src. De eerste twee, zijn gemaakt door het catkin build systeem dat ROS gebruikt. Daar in komen de gecompileerde programma's enzo voort. in src map kunnen wij zelf onze pakketten toevoegen aan ros.
Om onze werkruimte aan ROS toe te voegen, gebruikt men de volgende opdracht. $ source ~/hcc_ws/devel/setup.bash
. Dit is echter tijdelijk, en het vervelende is, dat men dit voor elke commandprompt moet uitvoeren. Een beter oplossing is, om deze opdracht aan het startup bestand van je commandprompt toe te voegen. In ons geval bash.
Dit kan men doen met de volgende opdracht $ echo "source ~/hcc_ws/devel/setup.bash" >> ~/.bashrc
. Nu iedere keer als een nieuwe commandprompt wordt geopend, wordt automatish de werkruimte toegevoegd aan ROS. Dit kan men als volgt zien.
$ printenv | grep ROS_
ROS_ROOT=/opt/ros/kinetic/share/ros
ROS_PACKAGE_PATH=/home/{user}/hcc_ws/src:/opt/ros/kinetic/share
{user} is de gebruikers naam waarmee is ingelogd.
Zoals je dus nu ziet, is je eigen werkruimte toegevoegd aan ROS_PACKAGE_PATH. Dus als ROS naar een pakket zoekt, zal hij eerst in jouw werkruimte zoeken, en als hij deze daar niet kan vinden, zal hij zoeken in zijn eigen readonly werkruimte.
Overzicht ROS Systeem.
In een ROS systeem, heb je dus als eerste een werkruimte, in deze werkruimte kan men dus pakketten maken. Maar wat zijn nu precies pakketten. Een pakket is een verzameling van uitvoerbare bestanden en configuratie bestanden, die meestal gerelateerd zijn aan elkaar. Ik ga niet uitleggen welke bestanden dat allemaal zijn, we zien deze allemaal verschijnen als we ze maken en/of nodig hebben.