7.1.3 ROS-architectuur
ROS-bestandssysteem
De structuur van het ROS-bestandssysteem op de harde schijf is als volgt georganiseerd:
WorkSpace --- Aangepaste werkruimte
|--- build: Compileerruimte voor het opslaan van CMake- en catkin-cache, configuratie en andere tussenliggende bestanden.
|--- devel: Ontwikkelruimte voor het opslaan van gecompileerde doelbestanden inclusief headers, dynamische en statische bibliotheken, uitvoerbare bestanden, enz.
|--- src: Broncode
|-- package: ROS-pakket (basale ROS-eenheid) met meerdere nodes, bibliotheken en configuratiebestanden. Pakketnamen moeten in kleine letters zijn en bestaan uit letters, cijfers en underscores.
|-- CMakeLists.txt: Configuratie van compileerregels, inclusief bronbestanden, afhankelijkheden en doelbestanden.
|-- package.xml: Pakketinformatie zoals naam, versie, auteur, afhankelijkheden.
|-- scripts: Map voor Python-bestanden.
|-- src: Map voor C++-bronbestanden.
|-- include: Headerbestanden.
|-- msg: Berichtcommunicatie-formaatbestanden.
|-- srv: Servicecommunicatie-formaatbestanden.
|-- action: Actie-formaatbestanden.
|-- launch: Launch-bestanden om meerdere nodes tegelijk uit te voeren.
|-- config: Configuratiebestanden.
|-- CMakeLists.txt: Basisconfiguratie voor de compilatie.Sommige van deze mappen en bestanden zijn al besproken, zoals het aanmaken van pakketten, het schrijven van C++- en Python-bestanden in de mappen src en scripts, en het aanmaken van launch-bestanden in de map launch. De bestanden package.xml en CMakeLists.txt zijn ook al geconfigureerd. Andere mappen worden in latere tutorials geïntroduceerd.
package.xml
Het bestand package.xml definieert de eigenschappen van het pakket, zoals naam, versie, auteur, beheerder en afhankelijkheden. Het formaat is als volgt:
<?xml version="1.0"?>
<package format="2">
<name>hello_world</name>
<version>0.0.0</version>
<description>The hello_world package</description>
<maintainer email="xuzuo@todo.todo">xuzuo</maintainer>
<license>TODO</license>
<buildtool_depend>catkin</buildtool_depend>
<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
<build_export_depend>roscpp</build_export_depend>
<build_export_depend>rospy</build_export_depend>
<build_export_depend>std_msgs</build_export_depend>
<exec_depend>roscpp</exec_depend>
<exec_depend>rospy</exec_depend>
<exec_depend>std_msgs</exec_depend>
<export>
</export>
</package>CMakeLists.txt
Het bestand CMakeLists.txt is de invoer voor het CMake-buildsysteem en wordt gebruikt om het pakket te bouwen. Het bevat configuratie voor het compileren van C++- en Python-bestanden, evenals het definiëren van afhankelijkheden.
cmake_minimum_required(VERSION 3.0.2)
project(demo01_hello_vscode)
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
)
catkin_package(
)
include_directories(
${catkin_INCLUDE_DIRS}
)
add_executable(hellow src/hello.cpp)
add_dependencies(hellow ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(hellow
${catkin_LIBRARIES}
)
catkin_install_python(PROGRAMS
scripts/hello.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)Commando's voor het ROS-bestandssysteem
Veelgebruikte commando's om met het ROS-bestandssysteem te werken:
- Pakket aanmaken:
catkin_create_pkg <package_name> <dependency_1> <dependency_2> ... - Pakket installeren:
sudo apt install <package_name> - Pakket verwijderen:
sudo apt purge <package_name> - Pakketten weergeven:
rospack list - Pakket zoeken:
rospack find <package_name> - Naar pakket navigeren:
roscd <package_name> - Bestanden van pakket weergeven:
rosls <package_name> - Pakket doorzoeken:
apt search <package_name> - Pakketbestand bewerken:
rosed <package_name> <file_name>
ROS-commando's uitvoeren
- ROS Core starten:
roscore - ROS-node uitvoeren:
rosrun <package_name> <executable_file_name> - ROS-bestand starten:
roslaunch <package_name> <launch_file_name>
ROS computational graph
De computational graph in ROS vertegenwoordigt de runtimestructuur van een ROS-systeem en toont de gegevensstroom tussen verschillende nodes. Hij kan worden gevisualiseerd met rqt_graph:
rosrun rqt_graph rqt_graphIndien niet geïnstalleerd:
sudo apt install ros-<distro>-rqt
sudo apt install ros-<distro>-rqt-common-pluginsVervang <distro> door uw ROS-versie (bijv. kinetic, melodic, noetic).
Demonstratie van de computational graph
Vervolgens demonstreren we de computational graph met behulp van de in ROS ingebouwde schildpadsimulatie.
-
Voorbeeld uitvoeren: Volg de voorgaande instructies om de schildpadsimulatie uit te voeren.
-
Computational graph bekijken: Open een nieuwe terminal en voer in:
bashrqt_graphof
bashrosrun rqt_graph rqt_graph
U ziet een netwerktopologie-graaf die de relaties tussen verschillende nodes weergeeft, vergelijkbaar met onderstaande afbeelding.
