ROS2 Introduction - rhaschke/lecture GitHub Wiki
- middleware, i.e. inter-process communication
- hardware abstraction for robots
- message definitions (for RPC)
- package management system, tailored towards development
- collection of open-source software packages
- multi language: C++, Python, Java
- multi platform: (Ubuntu Linux), Windows 10, OSX
- topics (publish - subscribe)
- services (remote procedure calls)
- actions (preemptable, long-running tasks)
- nodes: logical computing components, several per process possible
- remapping: renaming of nodes, topics, etc.
- node parameters
- ROS2 packages use
ament, a series of build helpers that hook into or extend existing build tools (like cmake or python's setuptools) to facilitate building and package management - colcon is a meta build tool that crawls your workspace for packages and builds them
- hierarchical stacking of workspaces:
activate environment with:
/opt/ros/<distro> ⮤ /homes/juser/rossource <workspace dir>/setup.bash - workspace structure
- src/
- build/
- install/
- setup.bash
# create your ROS workspace
mkdir -p ~/ros/src
cd ~/ros/src
# clone lecture repository from github
git clone https://github.com/rhaschke/lecture
# install colcon-top-level-workspace to allow building from any folder in your workspace
pip install git+https://github.com/rhaschke/colcon-top-level-workspace
# source your parent ROS environment
source /opt/ros/<distro>/setup.bash
# once build in your workspace's root folder
cd ~/ros
colcon build- package.xml
- defines folder as a ROS package
- defines dependencies: build, test, run
- author, license, package information
- CMakeLists.txt
source /opt/ros/<distro>/setup.bash
ros2 topic pub chatter std_msgs/msg/String 'data: "Hello World"' &
ros2 topic echo chatterInspect ROS universe:
ros2 node list
ros2 topic list
ros2 service list
ros2 interface list
rqt_graph