Machen Sie es sich zur Gewohnheit, gemeinsam zu schreiben! Dies ist der 12. Tag meiner Teilnahme an der „Nuggets Daily New Plan · April Update Challenge“, klicken Sie hier, um die Details der Veranstaltung anzuzeigen .
1 Einführung in ROS
1.1 Was ist ROS?
ROS (Robot Operating System) ist ein Open-Source-Meta-Betriebssystem für Roboter. Es bietet die Dienste, die von einem Betriebssystem erwartet werden, einschließlich
- Hardware-Abstraktion
- Low-Level-Gerätesteuerung
- Implementierung gemeinsamer Funktionen
- Nachrichtenübermittlung zwischen Prozessen
- Paketverwaltung
- Tools und Bibliotheksfunktionen, die zum Abrufen, Kompilieren, Schreiben und Ausführen von Code auf mehreren Computern erforderlich sind
1.2 Warum ROS verwenden?
Das Hauptziel von ROS ist die Unterstützung der Codewiederverwendung für die Robotikforschung und -entwicklung . Einfach gesagt, vermeiden Sie es, das Rad neu zu erfinden.
Warum kann ROS die Wiederverwendungsrate von Code verbessern?
Da ROS das Konzept von Paket und Funktionspaket , das Konzept von Analogie und C++
/oder python
Bibliothek hat, lassen sich diese Pakete einfach teilen und verteilen, und ROS unterstützt auch eine Art Föderationssystem ähnlich dem Code-Repository, das auch die Projektzusammenarbeit realisieren kann und freigeben. Dieses Design kann die Entwicklung und Implementierung eines Projekts vollständig modular gestalten, und gleichzeitig können alle Projekte durch die grundlegenden Werkzeuge von ROS integriert werden.
Darüber hinaus hat ROS folgende Vorteile:
- Schlank: ROS wurde so konzipiert, dass es so schlank wie möglich ist und sich leicht in andere Robotik-Software-Frameworks integrieren lässt
- Sprachunabhängigkeit: Um mehr Anwendungsentwicklung und Transplantation zu unterstützen, ist ROS als Rahmenstruktur mit schwacher Sprachkorrelation konzipiert. Eine neutrale Definitionssprache beschreibt die Nachrichtenschnittstelle zwischen Modulen,
Java
undC++
ROSPython
kann entwickelt werden. - Große Anwendungen: ROS eignet sich für große Laufzeitsysteme und große Entwicklungspipelines
- 丰富的组件化工具包:ROS可采用组件化方式集成一些工具和软件到系统中并作为一个组件直接使用,如RVIZ、Gazebo等,后面都会介绍。
- 免费且开源:开发者众多,功能包多
2 ROS发展历程
ROS是一个由来已久、贡献者众多的大型软件项目。
在ROS诞生之前,很多学者认为,机器人研究需要一个开放式的协作框架,并且已经有不少类似的项目致力于实现这样的框架。
2007年,柳树车库(Willow Garage)提供了大量资源,用于将斯坦福大学机器人项目中的软件系统进行扩展与完善,同时,在无数研究人员的共同努力下,ROS的核心思想和基本软件包逐渐得到完善。
ROS的发行版本指ROS软件包的版本,其与Linux的发行版本(如Ubuntu)的概念类似。推出ROS发行版本的目的在于使开发人员可以使用相对稳定的代码库,直到其准备好将所有内容进行版本升级为止。因此,每个发行版本推出后,ROS开发者通常仅对这一版本的bug进行修复,同时提供少量针对核心软件包的改进。
建议安装的发行版版本: noetic
、melodic
或kinetic
3 ROS安装
3.1 基本安装
ROS的安装步骤如下
- 设置软件源
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' 复制代码
- 设置秘钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 复制代码
- 更新软件源
sudo apt update 复制代码
- 安装ROS(推荐安装桌面完整版安装——包含
ROS
、rqt
、rviz
、2D/3D仿真器等)# kinetic sudo apt install ros-kinetic-desktop-full # noetic sudo apt install ros-noetic-desktop-full # melodic sudo apt install ros-melodic-desktop-full 复制代码
- ROS环境变量配置
# kinetic echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc # noetic echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc # melodic echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc 复制代码
- 卸载ROS
sudo apt remove ros-* 复制代码
3.2 初始化rosdep
rosdep
Es ist ROS
ein Befehlszeilentool zum Installieren ROS
von Systemabhängigkeiten. Bei der Installation des ROS
Systems wird es rosdep
automatisch installiert, sodass es nicht separat installiert werden muss, sondern initialisiert und aktualisiert werden muss.
sudo rosdep init
rosdep update
复制代码
Wenn ROS zum ersten Mal in China installiert wird, tritt in 90 % der Fälle bei der Initialisierung von rosdep ein Timeout-Fehler auf. Die neueste Lösung ist hier aufgezeichnet.
Gehen Sie zum Download von rosdistro.gitrosdistro-master.zip
und legen Sie ihn beispielsweise in das Projektverzeichnis
~/Project/ROS
复制代码
Ändern 20-default.list
, ausführen:
sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list
复制代码
Ersetzen Sie alle darin verlinkten Inhalte raw.githubusercontent.com
durch den Link zur lokalen Datei, und 20-default.lis
der Inhalt des letzten t lautet:
# os-specific listings first
yaml file:///home/winter/Project/ROS/rosdistro-master/rosdep/osx-homebrew.yaml osx
# generic
yaml file:///home/winter/Project/ROS/rosdistro-master/rosdep/base.yaml
yaml file:///home/winter/Project/ROS/rosdistro-master/rosdep/python.yaml
yaml file:///home/winter/Project/ROS/rosdistro-master/rosdep/ruby.yaml
gbpdistro file:///home/winter/Project/ROS/rosdistro-master/releases/fuerte.yaml fuerte
# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.y
复制代码
Ändern Sie dann die folgenden Dateien und raw.githubusercontent.com
ersetzen Sie auch den gesamten verknüpften Inhalt durch Links zu lokalen Dateien. Jede Datei hat eine Stelle, die geändert werden muss.
1. /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
FUERTE_GBPDISTRO_URL = 'file:///home/winter/Project/ROS/rosdistro-master/releases/fuerte.yaml'
2. /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
REP3_TARGETS_URL = 'file:///home/winter/Project/ROS/rosdistro-master/releases/targets.yaml'
3. /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py
DEFAULT_SOURCES_LIST_URL = 'file:///home/winter/Project/ROS/rosdistro-master/rosdep/sources.list.d/20-default.list'
4. /usr/lib/python2.7/dist-packages/rosdistro/__init__.py
DEFAULT_INDEX_URL = 'file:///home/winter/Project/ROS/rosdistro-master/index-v4.yaml'
复制代码
3.3 Test-ROS
Klemmeneingang
roscore
复制代码
Die folgenden Informationen werden angezeigt, um den ROS-Master-Manager erfolgreich auszuführen
Dann machen Sie den klassischen Schildkrötentest , geben Sie ein:
rosrun turtlesim turtlesim_node
复制代码
Der Turtle-Emulator erscheint
Eingabe
rosrun turtlesim turtle_teleop_key
复制代码
Fokussieren Sie die Maus auf das dritte Terminalfenster und verwenden Sie dann die Pfeiltasten auf der Tastatur, um die Schildkröte so zu steuern, dass sie sich bewegt und eine Spur auf dem Bildschirm hinterlässt
Bisher ist die grundlegende Installation und Konfiguration von ROS erfolgreich.
4 Häufig gestellte Fragen
-
roscore cannot run as another roscore/master is already running. Please kill other roscore/master processes before relaunching.The ROS_MASTER_URI is http://ubuntu:11311/The traceback for the exception was written to the log file
==Lösung==: Beenden Sie den vorhandenen ros-Knotenmanager
killall -9 roscore && killall -9 rosmaster 复制代码
-
E: Unable to locate package ros-kinetic-desktop-full
==Lösung==: Unterschiedliche
ros
Distributionen entsprechen unterschiedlichenubuntu
Versionen:Ubuntu16.04
Entsprechenros-kinetic
,Ubuntu18.04
Entsprechenros-melodic
,Ubuntu20.04
Entsprechenros-noetic
. -
rosdep: command not found
==Lösung==:
ros
Keine automatische Installation während der Installationrosdep
, manuelle Installation# Ubuntu20.04 sudo apt-get install python3-rosdep # Ubuntu18.04 sudo apt-get install python-rosdep 复制代码
Für weitere Inhalte beachten Sie bitte meinen KI-Kanal "AI Technology Club".