# ROS 2 ## First steps 1. Install [Ubuntu 24.04](https://releases.ubuntu.com/jammy/), upgrade all packages and reboot. 2. Install **ROS 2 Jazzy** following the [official instructions](https://docs.ros.org/en/jazzy/Installation/Ubuntu-Install-Debs.html). Please use `ros-jazzy-desktop` and install the dev tools. 3. Install RoboKudo apt dependencies and tooling: ```bash sudo apt install ros-jazzy-py-trees ros-jazzy-py-trees-ros ros-jazzy-py-trees-ros-viewer ``` 4. Creating a ROS 2 workspace: 1. Source the ROS 2 installation: ```bash source /opt/ros/jazzy/setup.bash ``` Do this once per shell instance or automate this by adding the above line at the end of your `~/.bashrc`. 2. Create a ROS 2 workspace for RK development ```bash mkdir -p ~/robokudo_ws/src cd ~/robokudo_ws colcon build --symlink-install source ~/robokudo_ws/install/setup.bash ``` The workspace has to be sourced after re-building it. However, by using the `--symlink-install` option all python scripts are symlinked instead of copied. This means that changes to python scripts will not require a rebuild of the workspace and thus also does not require sourcing it again. When changing C++ code, you will still have to rebuild and source the workspace. 5. Clone the RoboKudo repository into the workspace: ```bash cd ~/robokudo_ws/src # as a user: git clone --recurse-submodules -b ros2_jazzy https://gitlab.informatik.uni-bremen.de/robokudo/robokudo.git # or as a contributing developer with privileged access to the repo: git clone --recurse-submodules -b ros2_jazzy git@gitlab.informatik.uni-bremen.de:robokudo/robokudo.git ``` 6. Install python dependencies using pip: ```bash sudo apt install virtualenvwrapper python3-pip echo "export WORKON_HOME=~/venvs" >> ~/.bashrc echo "source /usr/share/virtualenvwrapper/virtualenvwrapper.sh" >> ~/.bashrc source ~/.bashrc mkdir -p $WORKON_HOME mkvirtualenv robokudo --system-site-packages workon robokudo pip install -r ~/robokudo_ws/src/robokudo/requirements.txt ``` Execute `workon robokudo` in every new shell to activate the virtual environment before running robokudo commands. 7. Build the Workspace again to get RK components compiled and source workspace: ```bash cd ~/robokudo_ws python3 -m colcon build --symlink-install ``` Using `python3 -m colcon` is necessary so that the correct python interpreter is used for ROS commands. If you want to setup a development environment with our recommended settings, continue with the following section. You can also do this step later. **Note:** ROS2 comes with new commands and `roscore` no longer exists. To follow the tutorials replace `rosrun` with `ros2 run`, `roslaunch` with `ros2 launch` and `rosbag` with `ros2 bag`. ## IDE Setup - Download [Pycharm for Linux from Jetbrains](https://www.jetbrains.com/pycharm/download/#section=linux) into your home directory. - Extract the archive to `~/pycharm-`: ```bash tar -xzf ~/pycharm-.tar.gz -C ~/ ``` - Create a symlink to `~/pycharm.sh` for convenience: ```bash ln -s ~/pycharm-/bin/pycharm.sh ~/pycharm.sh ``` - Start Pycharm: ```bash source /opt/ros/iron/setup.bash # if you don't source it automatically in your .bashrc source ~/robokudo_ws/install/setup.bash ~/pycharm.sh ``` - Open the workspace as by clicking `Open` on the welcome screen and selecting `~/robokudo_ws`. - In the folder view, right-click on `build` and select *Mark Directory as* → *Excluded*. Repeat this for `install` and `log`. - Make pycharm use the venv if created in step 6 of [First steps](#first-steps): - Go to *File* → *Settings* → *Project* → *Python Interpreter*. - Click on *Add Interpreter* and select *Add local interpreter*. - Select *Select Existing*, click on the small folder icon next to the current python path and select `~/venvs/robokudo/bin/python3`. - **Make sure to select the virtualenv interpreter as the default for the project.** - Restart PyCharm before continuing. ## Get data for development Currently, we are working with the standard RoboSherlock tutorial bag file. Please download the ROS bag file from [here]() to you `~/Downloads/` folder and unpack the archive: ```bash cd ~/Downloads wget "" tar -xzf test.tar.gz -C ~/Downloads/test ``` ## Start development - Start PyCharm as explained above: ```bash source ~/robokudo_ws/install/setup.bash ~/pycharm.sh ``` - Open a new terminal and execute: ```bash ros2 bag play ~/Downloads/test --loop ``` - Open a new terminal and execute: ```bash ros2 run robokudo main _ae=demo ``` ## PyCharm Plugins Just a list of PyCharm plugins that might be useful for development: - Grep Console - IdeaVim (for all the vim lovers) - Line Profiler