Skip to content
Open
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 12 additions & 9 deletions .ci/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,19 @@ RUN groupadd --gid $USER_GID $USERNAME \
&& echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
&& chmod 0440 /etc/sudoers.d/$USERNAME

# Add LLVM repository for newer clang versions
# Add LLVM repository for newer clang versions.
# apt.llvm.org publishes LLVM 18 for Ubuntu <= 24.04 but only LLVM 21+ for
# Ubuntu 26.04 (resolute); use LLVM 22 (current stable) for that release.
RUN apt-get update && \
apt-get install -y wget gnupg lsb-release software-properties-common && \
wget https://apt.llvm.org/llvm.sh && \
chmod +x llvm.sh && \
./llvm.sh 18 && \
if [ "${UBUNTU_VERSION}" = "26.04" ]; then LLVM_VER=22; else LLVM_VER=18; fi && \
./llvm.sh ${LLVM_VER} && \
apt-get update && \
apt-get install -y clang-format-18 clang-tidy-18 \
&& ln -s $(which clang-tidy-18) /usr/bin/clang-tidy \
&& ln -s $(which clang-format-18) /usr/bin/clang-format
apt-get install -y clang-format-${LLVM_VER} clang-tidy-${LLVM_VER} && \
ln -s $(which clang-tidy-${LLVM_VER}) /usr/bin/clang-tidy && \
ln -s $(which clang-format-${LLVM_VER}) /usr/bin/clang-format

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is llvm 22 working with our code base without throwing errors?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @AndreasKuhner, thanks for pointing it out. Are you able to visualize the workflows?

fork workflows

The workflows appear to run successfully. Is this enough as a guarantee? Or are you thinking of runtime problems?
Screenshot From 2026-06-08 12-15-18

The pywheels failure is due to token problems related to publishing:

Screenshot From 2026-06-08 12-17-28

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

E.g. a newer version for clang-tidy usually comes with additional checks etc. which might make the build broke. But I think the workflows should be verifying that... :)


# Install necessary packages (without Python - we'll install specific version later)
# Note: pybind11-dev kept for devcontainer users (works with Ubuntu's default Python)
Expand Down Expand Up @@ -125,7 +128,7 @@ RUN git clone --depth 1 --branch 10.0.0 https://github.com/leethomason/tinyxml2.
RUN git clone --depth 1 --branch 1.0.2 https://github.com/ros/console_bridge.git \
&& cd console_bridge \
&& mkdir build && cd build \
&& cmake .. -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib \
&& cmake .. -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
&& make -j4 \
&& make install \
&& cd ../.. \
Expand All @@ -134,7 +137,7 @@ RUN git clone --depth 1 --branch 1.0.2 https://github.com/ros/console_bridge.git
RUN git clone --depth 1 --branch 1.0.5 https://github.com/ros/urdfdom_headers.git \
&& cd urdfdom_headers \
&& mkdir build && cd build \
&& cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib \
&& cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
&& make -j4 && make install \
&& cd ../.. \
&& rm -rf urdfdom_headers
Expand All @@ -144,15 +147,15 @@ RUN git clone --depth 1 --branch 4.0.0 https://github.com/ros/urdfdom.git \
&& cd urdfdom \
&& git apply /tmp/urdfdom.patch \
&& mkdir build && cd build \
&& cmake .. -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib \
&& cmake .. -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
&& make -j4 && make install \
&& cd ../.. \
&& rm -rf urdfdom

RUN git clone --depth 1 --recurse-submodules --shallow-submodules --branch v5.4.3 https://github.com/assimp/assimp.git \
&& cd assimp \
&& mkdir build && cd build \
&& cmake .. -DBoost_USE_STATIC_LIBS=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=OFF -DASSIMP_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib \
&& cmake .. -DBoost_USE_STATIC_LIBS=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=OFF -DASSIMP_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib -DASSIMP_WARNINGS_AS_ERRORS=OFF \
&& make -j4 && make install \
&& cd ../.. \
&& rm -rf assimp
Expand Down
12 changes: 11 additions & 1 deletion .ci/urdfdom.patch
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,19 @@ index 20a6a05..5577e99 100644
@@ -3,7 +3,7 @@ macro(add_urdfdom_library)
set(multiValueArgs SOURCES LINK)
cmake_parse_arguments(add_urdfdom_library "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})

- add_library(${add_urdfdom_library_LIBNAME} SHARED
+ add_library(${add_urdfdom_library_LIBNAME} STATIC

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this was a "patch on the patch" from my side because I saw the BUILD_SHARED_LIBS_OFF would be overriden by the SHARED keyword. I am not sure whether there may be consequences I am not aware of @AndreasKuhner @francando

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably fine? Can be verified by checking the generated .so and check if some urdfdom shows up

${add_urdfdom_library_SOURCES})
target_include_directories(${add_urdfdom_library_LIBNAME} PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
diff --git a/urdf_parser/include/urdf_parser/urdf_parser.h b/urdf_parser/include/urdf_parser/urdf_parser.h
--- a/urdf_parser/include/urdf_parser/urdf_parser.h
+++ b/urdf_parser/include/urdf_parser/urdf_parser.h
@@ -49,5 +49,6 @@
#include <urdf_world/types.h>

#include "exportdecl.h"
+#include <cstdint>

namespace tinyxml2{
8 changes: 8 additions & 0 deletions .github/workflows/docker-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,10 @@ jobs:
ubuntu-version: '22.04'
name: 'Python 3.12'
tag-prefix: 'py'
- python-version: '3.14'
ubuntu-version: '26.04' # Ubuntu 26.04 for glibc 2.43 compatibility
name: 'Python 3.14'
tag-prefix: 'py'
# Debian package build images (Ubuntu version specific)
- python-version: '3.8'
ubuntu-version: '20.04'
Expand All @@ -61,6 +65,10 @@ jobs:
ubuntu-version: '24.04'
name: 'Ubuntu 24.04'
tag-prefix: 'ubuntu'
- python-version: '3.14'
ubuntu-version: '26.04'
name: 'Ubuntu 26.04'
tag-prefix: 'ubuntu'

steps:
- name: Checkout repository
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/libfranka-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ jobs:
python_version: "3.10"
- ubuntu_version: "24.04"
python_version: "3.12"
- ubuntu_version: "26.04"
python_version: "3.14"

steps:
- name: Checkout repository
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/pylibfranka-wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ jobs:
python-tag: 'cp312'
ubuntu-version: '22.04'
manylinux-tag: 'manylinux_2_34_x86_64'
- python-version: '3.14'
python-tag: 'cp314'
ubuntu-version: '26.04'
manylinux-tag: 'manylinux_2_43_x86_64'

steps:
- name: Checkout code
Expand Down
20 changes: 18 additions & 2 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ Key Features

- **Low-level control**: Access precise motion control for research robots.
- **Real-time communication**: Interact with the robot in real-time.
- **Multi-platform support**: Ubuntu 20.04, 22.04, and 24.04 LTS
- **Multi-platform support**: Ubuntu 20.04, 22.04, 24.04, and 26.04 LTS


1. System Requirements
Expand All @@ -46,6 +46,7 @@ Before using **libfranka**, ensure your system meets the following requirements:
- Ubuntu 20.04 LTS (Focal Fossa)
- Ubuntu 22.04 LTS (Jammy Jellyfish)
- Ubuntu 24.04 LTS (Noble Numbat)
- Ubuntu 26.04 LTS (Resolute Raccoon)
- `Linux with PREEMPT_RT patched kernel <https://frankarobotics.github.io/docs/doc/libfranka/docs/real_time_kernel.html>`_ recommended for real-time control

**Build Tools** (for building from source):
Expand All @@ -59,7 +60,7 @@ Before using **libfranka**, ensure your system meets the following requirements:

.. _installation-debian-package:

2. Installation from Debian Package (Recommended)
1. Installation from Debian Package (Recommended)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should that be 2?

Comment thread
r-simonelli marked this conversation as resolved.
Outdated
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The easiest way to install **libfranka** is by using the pre-built Debian packages
Expand Down Expand Up @@ -94,6 +95,12 @@ Supported Platforms
- .. image:: https://img.shields.io/github/actions/workflow/status/frankarobotics/libfranka/libfranka-build.yml?label=Ubuntu+24.04&logo=ubuntu&logoColor=white
:target: https://github.com/frankarobotics/libfranka/actions/workflows/libfranka-build.yml
:alt: Ubuntu 24.04 build status
* - 26.04 LTS
- resolute
- amd64
- .. image:: https://img.shields.io/github/actions/workflow/status/frankarobotics/libfranka/libfranka-build.yml?label=Ubuntu+26.04&logo=ubuntu&logoColor=white
:target: https://github.com/frankarobotics/libfranka/actions/workflows/libfranka-build.yml
:alt: Ubuntu 26.04 build status

Quick Install
^^^^^^^^^^^^^
Expand Down Expand Up @@ -231,6 +238,9 @@ Method B: Using Docker Command Line
# For Ubuntu 24.04
docker build --build-arg UBUNTU_VERSION=24.04 -t libfranka-build:24.04 .ci/

# For Ubuntu 26.04
docker build --build-arg UBUNTU_VERSION=26.04 -t libfranka-build:26.04 .ci/

2. **Run the container and build**

.. code-block:: bash
Expand Down Expand Up @@ -540,6 +550,10 @@ For more examples, see the `Usage Examples documentation <https://frankarobotics
- .. image:: https://img.shields.io/github/actions/workflow/status/frankarobotics/libfranka/pylibfranka-wheels.yml?label=python3.12&logo=python&logoColor=white
:target: https://github.com/frankarobotics/libfranka/actions/workflows/pylibfranka-wheels.yml
:alt: Python 3.12 wheel build status
* - Ubuntu 26.04
- .. image:: https://img.shields.io/github/actions/workflow/status/frankarobotics/libfranka/pylibfranka-wheels.yml?label=python3.14&logo=python&logoColor=white
:target: https://github.com/frankarobotics/libfranka/actions/workflows/pylibfranka-wheels.yml
:alt: Python 3.14 wheel build status

**Pylibfranka** provides Python bindings for libfranka, allowing robot control with Python.

Expand Down Expand Up @@ -678,6 +692,8 @@ Platform Compatibility
- Python 3.9, 3.10, 3.11, 3.12
* - 24.04 (Noble)
- Python 3.9, 3.10, 3.11, 3.12
* - 26.04 (Resolute Raccoon)
- Python 3.14

**Note:** Ubuntu 20.04 users must use Python 3.9 due to glibc compatibility requirements.

Expand Down