Overzicht van de HelloWorld-implementatie
Programmeren in ROS gebeurt voornamelijk met C++ en Python. De meeste programma's kunnen in beide talen worden geïmplementeerd. Elke tutorial demonstreert voorbeelden in zowel C++ als Python, zodat gebruikers de implementatie kunnen kiezen die het beste bij hen past.
Het algemene implementatieproces in ROS is voor verschillende talen vergelijkbaar. Aan de hand van het HelloWorld-programma zijn de stappen:
- Een werkruimte aanmaken.
- Een pakket aanmaken.
- Bronbestanden bewerken.
- Configuratiebestanden bewerken.
- Compileren en uitvoeren.
Het belangrijkste verschil tussen C++ en Python zit in stappen 3 en 4. De volgende secties beschrijven de gemeenschappelijke stappen voor beide implementaties, met specifieke secties voor C++ en Python.
HelloWorld (C++-versie)
-
Werkruimte aanmaken en initialiseren
bashmkdir -p <workspace_name>/src cd <workspace_name> catkin_makeBijvoorbeeld:
bashmkdir -p seeed_ws/src cd seeed_ws catkin_make -
ROS-pakket aanmaken en afhankelijkheden toevoegen
bashcd src catkin_create_pkg <package_name> roscpp rospy std_msgsBijvoorbeeld:
bashcd src catkin_create_pkg hello_world roscpp rospy std_msgs -
Bronbestand bewerken
Ga naar de
src-map van uw pakket en maak een nieuw C++-bronbestand aan (bijv.hello.cpp):bashcd ~/<workspace_name>/src/<package_name>/src touch hello.cppbijvoorbeeld:
bashcd ~/seeed_ws/src/hello_world/src touch hello.cppkopieer de volgende code naar
hello.cpp:cpp#include "ros/ros.h" int main(int argc, char *argv[]) { ros::init(argc, argv, "hello"); ros::NodeHandle n; ROS_INFO("Hello World!"); return 0; } -
CMakeLists.txtbewerkenVoeg het volgende toe aan het einde van de
CMakeLists.txtvan uw pakket:cmakeadd_executable(<node_name> src/hello.cpp) target_link_libraries(<node_name> ${catkin_LIBRARIES})bijvoorbeeld:
cmakeadd_executable(hello src/hello.cpp) target_link_libraries(hello ${catkin_LIBRARIES})Let op: het hier genoemde
CMakeLists.txt-bestand bevindt zich in de map van het aangemaakte pakket, niet in de map van de werkruimte. -
De werkruimte compileren
bashcd <workspace_name> catkin_makebijvoorbeeld:
bashcd ~/seeed_ws catkin_make -
Het programma uitvoeren
Open een terminal en start ROS core:
bashroscoreOpen een andere terminal, source de werkruimte en voer de node uit:
bashcd <workspace_name> source devel/setup.bash rosrun <package_name> hellobijvoorbeeld:
bashcd ~/seeed_ws source devel/setup.bash rosrun hello_world hello
U zou de uitvoer moeten zien: Hello World!
HelloWorld (Python-versie)
-
Werkruimte aanmaken en initialiseren
bashmkdir -p <workspace_name>/src cd <workspace_name> catkin_makeBijvoorbeeld:
bashmkdir -p seeed_ws/src cd seeed_ws catkin_make -
ROS-pakket aanmaken en afhankelijkheden toevoegen
bashcd src catkin_create_pkg <package_name> roscpp rospy std_msgsBijvoorbeeld:
bashcd src catkin_create_pkg hello_world roscpp rospy std_msgs -
scripts-map toevoegen en Python-bestand aanmakenGa naar de map van uw pakket, maak een
scripts-map aan en een nieuw Python-bestand (bijv.hello.py):bijvoorbeeld:
bashmkdir ~/seeed_ws/src/hello_world/scripts cd ~/seeed_ws/src/hello_world/scripts touch hello.pypython#!/usr/bin/env python import rospy if __name__ == "__main__": rospy.init_node("hello") rospy.loginfo("Hello World!") -
Uitvoeringsrechten toevoegen
bashsudo chmod +x hello.py -
CMakeLists.txtbewerkenVoeg het volgende toe aan het einde van de
CMakeLists.txtvan uw pakket:cmakecatkin_install_python(PROGRAMS scripts/hello.py DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} ) -
De werkruimte compileren
bashcd <workspace_name> catkin_makebijvoorbeeld:
bashcd ~/seeed_ws catkin_make -
Het programma uitvoeren Open een terminal en start ROS core:
bashroscoreOpen een andere terminal, source de werkruimte en voer de node uit:
bashcd <workspace_name> source devel/setup.bash rosrun <package_name> hello.pyBijvoorbeeld:
bashcd ~/seeed_ws source devel/setup.bash rosrun hello_world hello.pyU zou de uitvoer moeten zien:
Hello World!
Opmerking
Om het sourcen van het setup-bestand van de werkruimte gemakkelijker te maken, voegt u het toe aan uw .bashrc:
echo "source ~/<workspace_name>/devel/setup.bash" >> ~/.bashrcDit zorgt ervoor dat de werkruimte automatisch wordt gesourced telkens wanneer een nieuwe terminal wordt geopend.