diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/404.html b/404.html new file mode 100644 index 00000000..71a8edb1 --- /dev/null +++ b/404.html @@ -0,0 +1 @@ +
Many thanks for taking the time to read this and for contributing to RoboStack!
This project is in early stages and we are looking for contributors to help it grow. The developers are on gitter where we discuss steps forward.
We welcome all kinds of contribution -- code or non-code -- and value them highly. We pledge to treat everyones contribution fairly and with respect and we are here to help awesome pull requests over the finish line.
Please note we have a code of conduct, and follow it in all your interactions with the project.
We follow the NumFOCUS code of conduct.
You can open a pull request that will get build automatically in our CI.
An example can be found here. Simply add the required packages to the vinca_*.yaml
files, where the * indicates the desired platform (linux_64, osx, win or linux_aarch64). Ideally, try to add packages to all of these platforms.
Sometimes, it may be required to patch the packages. An example of how to do so can be found in this PR.
vinca
boa
. You can verify that the package compiles in the current state to ensure that any eventually arising problem is only due to your changes, but it is not required.$MAMBA_ROOT_PREFIX/envs/robostackenv/conda-bld/<package name>/work/<package name>/src/work
git diff > changes.patch
patches
directory of this repository, renaming it according to the naming convention. If the changes are portable across all supported operating system, the file should be called <package name>.patch
; otherwise, <package name>.<win/linux/osx>.patch
boa
to ensure that the patching succeeds and the package builds without errorsThe procedure to create a new patch file still applies, with a caveat.
The git repository of the package cloned by boa
will be in a dirty state. The changes of the working tree should amount to the patches already existing for the package. Running git diff
will result in a patch which intermingles the new changes to the old ones. This would allow to just swap the new resulting patch file for the old one, but this may make code review difficult if the order of the hunks changes.
To make code review easier, please consider manually porting the new hunks into the existing patch file. This can be made easier by running git reset --hard
before applying the new changes to the source code.
# First, create a new conda environment and add the conda-forge and robostack channels:
+
+# For ROS2:
+conda create -n robostackenv python=3.10
+# For ROS1:
+conda create -n robostackenv python=3.9
+
+# For both ROS1+2
+conda activate robostackenv
+conda config --remove channels defaults
+conda config --add channels conda-forge
+conda config --add channels robostack-staging
+
+# Install some dependencies
+mamba install pip conda-build anaconda-client mamba conda catkin_pkg ruamel_yaml rosdistro empy networkx requests boa
+
+# Install vinca
+pip install git+https://github.com/RoboStack/vinca.git@master --no-deps
+
+# Clone the relevant repo
+git clone https://github.com/RoboStack/ros-humble.git # or: git clone https://github.com/RoboStack/ros-noetic.git
+
+# Move in the newly cloned repo
+cd ros-humble # or: cd ros-noetic
+
+# Make a copy of the relevant vinca file
+cp vinca_linux_64.yaml vinca.yaml # replace with your platform as necessary
+
+# Now modify vinca.yaml as you please, e.g. add new packages to be built
+code vinca.yaml
+
+# Run vinca to generate the recipe; the recipes will be located in the `recipes` folder
+vinca --multiple
+
+# Build the recipe using boa:
+boa build recipes -m ./.ci_support/conda_forge_pinnings.yaml -m ./conda_build_config.yaml
+
+# You can also generate an azure pipeline locally, e.g.
+vinca-azure -d recipes -t mytriggerbranch -p linux-64
+# which will create a `linux.yml` file that contains the azure pipeline definition
+
vinca.yaml
file specifies which packages should be built. packages_select_by_deps
. This will automatically pull in all dependencies of that package, too.skip_existing
will be skipped. You can also add your local channel to that list by e.g. adding /home/ubuntu/miniconda3/conda-bld/linux-64/repodata.json
. packages_skip_by_deps
.skip_all_deps
to True
, you will only build packages listed under packages_select_by_deps
but none of their dependencies.packages_remove_from_deps
list allows you to never build packages, even if they are listed as dependencies of other packages. We use it for e.g. the stage simulator which is not available in conda-forge, but is listed as one of the dependencies of the ros-simulator metapackage.skip_existing
. You probably want to set skip_all_deps: true
, otherwise all dependencies will be rebuilt in this case.ros-$ROSDISTRO-$PACKAGENAME.patch
in the patch
directory (replace $PACKAGENAME
with the name of the package, and replace any underscores with hyphens; and replace $ROSDISTRO
with "noetic" or "galactic"). You can also use platform specifiers to only apply the patch on a specific platform, e.g. ros-$ROSDISTRO-$PACKAGENAME.win.patch
.robostack.yaml
and packages-ignore.yaml
files are the equivalent of the rosdep.yaml and translate ROS dependencies into conda package names (or in the case of the dependencies listed in packages-ignore.yaml
the dependencies are ignored by specifying an empty list).When running catkin
or catkin_make
I get errors that "Multiple packages found with the same name", e.g.
/Users/me/miniconda3/envs/robostackenv/share/catkin/cmake/em/order_packages.cmake.em:23: error: <class 'RuntimeError'>: Multiple packages found with the same name "catkin":
+- pkgs/ros-noetic-catkin-0.8.10-py38hb43b470_10/share/catkin
+- share/catkin
+
robostackenv
. However, conda and mamba should only be installed in your base
environment. Try setting up a new environment without conda
and mamba
installed into that environment. When trying to build packages, you get CMake errors that packages could not be found, such as
CMake Error at /Users/me/miniconda3/envs/robostackenv/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
+ Could not find a package configuration file provided by "std_msgs" with any
+ of the following names:
+
+ std_msgsConfig.cmake
+ std_msgs-config.cmake
+
mamba install ros-noetic-std-msgs
. You can use rosdep
to install dependencies. Second, make sure that your CMAKE_PREFIX_PATH
points to your robostackenv
, in the example case you could achieve this by export CMAKE_PREFIX_PATH=/Users/me/miniconda3/envs/robostackenv/
. This might happen if CMAKE_PREFIX_PATH
is not empty when you activate your robostackenv
. You will need to install https://github.com/conda-incubator/conda-zsh-completion
RoboStack is based on conda-forge and will not work without conda. However, check out rospypi which can run in a pure Python virtualenv. rospypi supports tf2 and other binary packages.
It is possible that if you are having problems in finding the Python installed in your environment, and for some reason the Python of your system is found instead. To workaround these kind of problems, a trick is to explicitly specify which Python to use to CMake, via:
--cmake-args "-DPython_EXECUTABLE=$CONDA_PREFIX/bin/python -DPython3_EXECUTABLE=$CONDA_PREFIX/bin/python -DPYTHON_EXECUTABLE=$CONDA_PREFIX/bin/python"
+
-DPython_EXECUTABLE=$CONDA_PREFIX/bin/python -DPython3_EXECUTABLE=$CONDA_PREFIX/bin/python -DPYTHON_EXECUTABLE=$CONDA_PREFIX/bin/python
+
$CONDA_PREFIX/bin/python
with %CONDA_PREFIX%\python.exe
. RoboStack is a bundling of ROS for Linux, Mac and Windows using the conda package manager, based on top of conda-forge.
To get started with conda (or mamba) as package managers, you need to have a base conda installation. Please do not use the Anaconda installer, but rather start with miniforge
/ mambaforge
, which are much more "minimal" installers (we recommend mambaforge
). These installers will create a "base" environment that contains the package managers conda (and mamba if you go with mambaforge
). After this installation is done, you can move on to the next steps.
When you already have a conda installation you can install mamba with:
Do not install ROS packages in the base
environment
Make sure to not install the ROS packages in your base environment as this leads to issues down the track. On the other hand, conda and mamba must not be installed in the ros_env
, they should only be installed in base.
Do not source the system ROS environment
When there is an installation available of ros on the system, in non-conda environments, there will be interference with the environments. As the PYTHONPATH
set in the setup script conflicts with the conda environment.
PowerShell is not supported
At the moment on Windows only the Command Prompt terminal is supported, while Powershell is not supported.
mamba create -n ros_env
+mamba activate ros_env
+
+# this adds the conda-forge channel to the new created environment configuration
+conda config --env --add channels conda-forge
+# and the robostack channel
+conda config --env --add channels robostack-staging
+# remove the defaults channel just in case, this might return an error if it is not in the list which is ok
+conda config --env --remove channels defaults
+
mamba install compilers cmake pkg-config make ninja colcon-common-extensions catkin_tools
+
# Install Visual Studio 2017, 2019 or 2022 with C++ support
+# see https://docs.microsoft.com/en-us/cpp/build/vscpp-step-0-installation?view=msvc-160
+
+# Install the Visual Studio command prompt - if you use Visual Studio 2019:
+mamba install vs2019_win-64
+
+# Install the Visual Studio command prompt - if you use Visual Studio 2022:
+mamba install vs2022_win-64
+
micromamba install -c conda-forge compilers cmake pkg-config make ninja colcon-common-extensions
+
# Install Visual Studio 2017 or 2019 with C++ support
+# see https://docs.microsoft.com/en-us/cpp/build/vscpp-step-0-installation?view=msvc-160
+
+# Install the Visual Studio command prompt - if you use Visual Studio 2019:
+micromamba install vs2019_win-64
+
+# Install the Visual Studio command prompt - if you use Visual Studio 2022:
+micromamba install vs2022_win-64
+
After installation you are able to run rviz
and other ros tools.
In the conda environment activation is the ROS activation included. There is no need to add a source
command in the ~/.bashrc
ROS1
ROS2
Note
ROS2 has the benefit of not needing a roscore
, so only a single terminal is needed to run a tool.
The (de)activation of the ros workspace goes in together with the conda environment. So running the corresponding (de)activation command will also (un)source the ros environment.
We tightly couple ROS with Conda, a cross-platform, language-agnostic package manager. We provide ROS binaries for Linux, macOS (Intel and Apple Silicon), Windows and ARM (Linux). Installing other recent packages via conda-forge side-by-side works easily, e.g. you can install TensorFlow/PyTorch in the same environment as ROS Noetic without any issues. As no system libraries are used, you can also easily install ROS Noetic on any recent Linux Distribution - including older versions of Ubuntu. As the packages are pre-built, it saves you from compiling from source, which is especially helpful on macOS and Windows. No root access is required, all packages live in your home directory. We have recently written up a paper and blog post with more information.
If you use RoboStack in your academic work, please refer to the following paper:
@article{FischerRAM2021,
+ title={A RoboStack Tutorial: Using the Robot Operating System Alongside the Conda and Jupyter Data Science Ecosystems},
+ author={Tobias Fischer and Wolf Vollprecht and Silvio Traversaro and Sean Yen and Carlos Herrero and Michael Milford},
+ journal={IEEE Robotics and Automation Magazine},
+ year={2021},
+ doi={10.1109/MRA.2021.3128367},
+}
+
To install Jupyter-ROS and JupyterLab-ROS which provide interactive experiences for robotics developers in Jupyter Notebooks, please see the relevant repositories for Jupyter-ROS and JupyterLab-ROS.