Python2 et catkin still seems to be needed for ROS2 Crystal
System Used: Docker Built Ubuntu 18.04
I followed the Linux Build ROS2 tutorial. My Dockerfile is mainly the development tools and ROS tools.
These steps were done in the container itself.
I got several issues:
I. Some packages can't be found
python3-vcstool and python3-colcon-common-extensions can't be located using apt and does't seems to exist when searching with https://packages.ubuntu.com/ . The workaround seems to be to install them with pip3
II. Why Python2 is still needed ?
Python3 should be the standard for ROS2, why python-rosdep is needed and not python3-rosdep (wich in reality, python3-rosdep2 is installed).
In anyway, when installing python3-rosdep, no alias are created in /usr/bin. Workaround: Installing python-rosdep (which install the whole python2 which is unwanted) and replace the python shebang line with python3.
III. Why catkin is still required as ROS2 should be using colcon/ament ?
Despite the differents workarounds, I encounter the same issue at this step:
sudo rosdep init
rosdep update
# [Ubuntu 18.04]
rosdep install --from-paths src --ignore-src --rosdistro crystal -y --skip-keys "console_bridge fastcdr fastrtps libopensplice67 libopensplice69 rti-connext-dds-5.3.1 urdfdom_headers"
I encounter the same error respectively Python2 or Python3
with Python3:
ERROR: Rosdep experienced an error: Unable to handle package.xml format version '3', please update catkin_pkg (e.g. on Ubuntu/Debian use: sudo apt-get update && sudo apt-get install --only-upgrade python-catkin-pkg)
Please go to the rosdep page [1] and file a bug report with the stack trace below.
[1] : http://www.ros.org/wiki/rosdep
rosdep version: 0.11.8
multiprocessing.pool.RemoteTraceback:
"""
Traceback (most recent call last):
File "/usr/lib/python3.6/multiprocessing/pool.py", line 119, in worker
result = (True, func(*args, **kwds))
File "/usr/lib/python3.6/multiprocessing/pool.py", line 44, in mapstar
return list(map(*args))
File "/usr/lib/python3/dist-packages/catkin_pkg/packages.py", line 106, in __call__
parsed_package = parse_package_string(xml, filename=filename, warnings=warnings)
File "/usr/lib/python3/dist-packages/catkin_pkg/package.py", line 457, in parse_package_string
assert pkg.package_format in [1, 2], "Unable to handle package.xml format version '%d', please update catkin_pkg (e.g. on Ubuntu/Debian use: sudo apt-get update && sudo apt-get install --only-upgrade python-catkin-pkg)" % pkg.package_format
AssertionError: Unable to handle package.xml format version '3', please update catkin_pkg (e.g. on Ubuntu/Debian use: sudo apt-get update && sudo apt-get install --only-upgrade python-catkin-pkg)
"""
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/rosdep2/main.py", line 137, in rosdep_main
exit_code = _rosdep_main(args)
File "/usr/lib/python3/dist-packages/rosdep2/main.py", line 383, in _rosdep_main
return _package_args_handler(command, parser, options, args)
File "/usr/lib/python3/dist-packages/rosdep2/main.py", line 436, in _package_args_handler
pkgs = find_catkin_packages_in(path, options.verbose)
File "/usr/lib/python3/dist-packages/rosdep2/catkin_packages.py", line 33, in find_catkin_packages_in
packages = find_packages(path)
File "/usr/lib/python3/dist-packages/catkin_pkg/packages.py", line 86, in find_packages
packages = find_packages_allowing_duplicates(basepath, exclude_paths=exclude_paths, exclude_subspaces=exclude_subspaces, warnings=warnings)
File "/usr/lib/python3/dist-packages/catkin_pkg/packages.py", line 153, in find_packages_allowing_duplicates
path_parsed_packages, warnings_lists ...