diff --git a/libfranka b/libfranka index 64b0314..dd7dfb3 160000 --- a/libfranka +++ b/libfranka @@ -1 +1 @@ -Subproject commit 64b0314518ba28110e5559669a6bb310087ddc0c +Subproject commit dd7dfb35ec547c2540df9c15ba0c42e3b3d88d55 diff --git a/source/compatibility.rst b/source/compatibility.rst index c254ef8..428d61c 100644 --- a/source/compatibility.rst +++ b/source/compatibility.rst @@ -18,17 +18,19 @@ Therefore, they are compatible with libfranka versions 0.4.0 and 0.5.0. | Robot system version | libfranka version | Robot / Gripper |franka_ros2 version| franka_description| Ubuntu / ROS 2 | franka_ros version| Ubuntu / ROS 1 | | | | Server version | | | | | | +======================+===================+=================+===================+===================+===================+===================+===================+ -| >= 5.5.0 (FR3) | >= 0.13.3 | 7 / 3 | >= 0.1.15 | >= 0.3.0 | 22.04 / humble | >= 0.10.0 | 20.04 / noetic | +| >= 5.7.0 (FR3) | >= 0.14.0 | 8 / 3 | | | 22.04 / humble | >= 0.10.0 | 20.04 / noetic | ++----------------------+-------------------+-----------------+-------------------+-------------------+-------------------+-------------------+-------------------+ +| >= 5.5.0 (FR3) | >= 0.13.3 | 7 / 3 | >= v0.1.15 | >= 0.3.0 | 22.04 / humble | >= 0.10.0 | 20.04 / noetic | +----------------------+-------------------+-----------------+-------------------+-------------------+-------------------+-------------------+-------------------+ | >= 5.5.0 (FR3) | >= 0.13.3 | 7 / 3 | | | 22.04 / humble | >= 0.10.0 | 20.04 / noetic | +----------------------+-------------------+-----------------+-------------------+-------------------+-------------------+-------------------+-------------------+ -| >= 5.2.0 (FR3) | >= 0.13.0 | 6 / 3 | >= 0.1.8 | | 22.04 / humble | >= 0.10.0 | 20.04 / noetic | +| >= 5.2.0 (FR3) | >= 0.13.0 | 6 / 3 | >= v0.1.8 | | 22.04 / humble | >= 0.10.0 | 20.04 / noetic | +----------------------+-------------------+-----------------+-------------------+-------------------+-------------------+-------------------+-------------------+ -| >= 5.2.0 (FR3) | >= 0.12.1 | 6 / 3 | >= 0.1.6 | | 22.04 / humble | >= 0.10.0 | 20.04 / noetic | +| >= 5.2.0 (FR3) | >= 0.12.1 | 6 / 3 | >= v0.1.6 | | 22.04 / humble | >= 0.10.0 | 20.04 / noetic | +----------------------+-------------------+-----------------+-------------------+-------------------+-------------------+-------------------+-------------------+ -| >= 5.2.0 (FR3) | >= 0.11.0 | 6 / 3 | >= 0.1.3 | | 22.04 / humble | >= 0.10.0 | 20.04 / noetic | +| >= 5.2.0 (FR3) | >= 0.11.0 | 6 / 3 | >= v0.1.3 | | 22.04 / humble | >= 0.10.0 | 20.04 / noetic | +----------------------+-------------------+-----------------+-------------------+-------------------+-------------------+-------------------+-------------------+ -| >= 5.2.0 (FR3) | >= 0.10.0 | 6 / 3 | >= 0.1.0 | | 22.04 / humble | >= 0.10.0 | 20.04 / noetic | +| >= 5.2.0 (FR3) | >= 0.10.0 | 6 / 3 | >= v0.1.0 | | 22.04 / humble | >= 0.10.0 | 20.04 / noetic | +----------------------+-------------------+-----------------+-------------------+-------------------+-------------------+-------------------+-------------------+ | >= 4.2.1 (FER) | >= 0.9.1 < 0.10.0 | 5 / 3 | | | | >= 0.8.0 | 20.04 / noetic | +----------------------+-------------------+-----------------+-------------------+-------------------+-------------------+-------------------+-------------------+ @@ -60,12 +62,14 @@ Compatibility with the kernel There are different kernels, which are compatible with different Ubuntu system versions. The following table gives an overview of recommended Kernels. -+----------------+----------------------+ -| Kernel version | Ubuntu | -+================+======================+ -| 5.9.1 | 20.04 (Focal Fossa) | -+----------------+----------------------+ -| 5.4.19 | 18.04 (Bionic) | -+----------------+----------------------+ -| 4.14.12 | 16.04 (Xenial Xerus) | -+----------------+----------------------+ ++----------------+-------------------------+ +| Kernel version | Ubuntu | ++================+=========================+ +| Pro Kernel | 22.04 (Jammy Jellyfish) | ++----------------+-------------------------+ +| 5.9.1 | 20.04 (Focal Fossa) | ++----------------+-------------------------+ +| 5.4.19 | 18.04 (Bionic) | ++----------------+-------------------------+ +| 4.14.12 | 16.04 (Xenial Xerus) | ++----------------+-------------------------+ diff --git a/source/franka_ros2.rst b/source/franka_ros2.rst index ade81ab..63b26ae 100644 --- a/source/franka_ros2.rst +++ b/source/franka_ros2.rst @@ -12,143 +12,23 @@ The `franka_ros2 repo `_ contains a `GitHub `_. -Prerequisites -------------- - -* A `ROS 2 Humble installation `_ - (ros-humble-desktop) or a VSCode IDE with DevContainer. -* A :ref:`PREEMPT_RT kernel ` (optional, but strongly recommended). -* For ``cartesian_pose``, ``joint_position`` and ``elbow_position`` command interfaces realtime-kernel is absolutely necessary. -* A system-wide :ref:`libfranka installation `. Minimum supported version of libfranka is 0.13.2. - Here is a minimal example: - -.. code-block:: shell - - sudo apt install -y libpoco-dev libeigen3-dev - git clone https://github.com/frankaemika/libfranka.git --recursive - cd libfranka - git checkout 0.13.2 - mkdir build && cd build - cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF .. - cmake --build . -j$(nproc) - cpack -G DEB - sudo dpkg -i libfranka-*.deb - -Optional .bashrc Settings -^^^^^^^^^^^^^^^^^^^^^^^^^ - -* To get colorized warn and error messages you can put - ``export RCUTILS_COLORIZED_OUTPUT=1`` into your ``.bashrc``. - -* If your system language is not set to American English you should put - ``export LC_NUMERIC=en_US.UTF-8`` into your ``.bashrc`` to avoid issues in RViz. - -Setup ------- - -Install From Source -^^^^^^^^^^^^^^^^^^^ - -1. Install requirements:: - - sudo apt install -y \ - ros-humble-ament-cmake \ - ros-humble-ament-cmake-clang-format \ - ros-humble-angles \ - ros-humble-ros2-controllers \ - ros-humble-ros2-control \ - ros-humble-ros2-control-test-assets \ - ros-humble-controller-manager \ - ros-humble-control-msgs \ - ros-humble-control-toolbox \ - ros-humble-generate-parameter-library \ - ros-humble-joint-state-publisher \ - ros-humble-joint-state-publisher-gui \ - ros-humble-moveit \ - ros-humble-pinocchio \ - ros-humble-realtime-tools \ - ros-humble-xacro \ - ros-humble-hardware-interface \ - ros-humble-ros-gz \ - python3-colcon-common-extensions - -2. Create a ROS 2 workspace:: - - mkdir -p ~/franka_ros2_ws/src - -3. Clone repo and build packages:: - - source /opt/ros/humble/setup.bash - cd ~/franka_ros2_ws - git clone https://github.com/frankaemika/franka_ros2.git src/franka_ros2 - git clone https://github.com/frankaemika/franka_description.git src/franka_description - colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release - source install/setup.sh - -Use VSCode DevContainer -^^^^^^^^^^^^^^^^^^^^^^^ -FrankaROS2 package comes with .devcontainer folder which enables developer to use FrankaROS2 packages without manually installing ROS2 or libfranka. -VSCode DevContainer working schematic is shown in the below image: - - .. figure:: _static/vscode.png - :align: center - :figclass: align-center - -1. Follow the setup guide from VSCode `devcontainer_setup `_. - -2. Create a ROS 2 workspace:: - - mkdir franka_ros2_ws - cd franka_ros2_ws - -3. Clone repo:: - - git clone https://github.com/frankaemika/franka_ros2.git src/franka_ros2 - git clone https://github.com/frankaemika/franka_description.git src/franka_description - -4. Move the .devcontainer folder to the franka_ros2_ws parent folder:: - - mv src/franka_ros2/.devcontainer . - -5. Open VSCode:: - - code . - -6. Open the current folder in DevContainer:: - - ctrl + shift + p - - Write in the command prompt bar:: - - Dev Containers: Rebuild and Reopen in Container - - and click this option in the search results - -7. Open up the terminal in VScode:: - - ctrl + ` - -8. Source the environment:: - - source /opt/ros/humble/setup.sh - -9. Install the Franka ROS 2 packages:: +Installation +------------ - colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release - source install/setup.sh +Please refer to the `README.md `_ MoveIt ------ To see if everything works, you can try to run the MoveIt example on the robot:: - ros2 launch franka_moveit_config moveit.launch.py robot_ip:= + ros2 launch franka_fr3_moveit_config moveit.launch.py robot_ip:= Then activate the ``MotionPlanning`` display in RViz. If you do not have a robot you can still test your setup by running on a dummy hardware:: - ros2 launch franka_moveit_config moveit.launch.py robot_ip:=dont-care use_fake_hardware:=true + ros2 launch franka_fr3_moveit_config moveit.launch.py robot_ip:=dont-care use_fake_hardware:=true Wait until you can see the green ``You can start planning now!`` message from MoveIt inside the @@ -199,7 +79,7 @@ Joint Impedance With IK Example The example uses the LMA-Orocos solver from MoveIt service to compute the joint positions for the desired pose. The desired pose is to move the end-effector periodically in x and z directions. You can change the kinematic solver -in the franka_moveit_config package, kinematics.yaml file. +in the franka_fr3_moveit_config package, kinematics.yaml file. .. code-block:: shell @@ -526,10 +406,10 @@ It publishes franka_robot_state topic to the topic named `/franka_robot_state_br This controller node is spawned by franka_launch.py in the franka_bringup. Therefore, all the examples that include the franka_launch.py publishes the robot_state topic. -.. _franka_moveit_config: +.. _franka_fr3_moveit_config: -franka_moveit_config -^^^^^^^^^^^^^^^^^^^^ +franka_fr3_moveit_config +^^^^^^^^^^^^^^^^^^^^^^^^ This package contains the configuration for MoveIt2. There is a new move group called ``panda_manipulator`` that has its tip between the fingers of the gripper and has its Z-axis rotated by -45 degrees, so diff --git a/source/installation_linux.rst b/source/installation_linux.rst index 6c63f1d..d280fe3 100644 --- a/source/installation_linux.rst +++ b/source/installation_linux.rst @@ -41,66 +41,7 @@ After `setting up ROS Noetic `__ Building from source -------------------- -Before building from source, please uninstall existing installations of ``libfranka`` and -``franka_ros`` to avoid conflicts:: - - sudo apt remove "*libfranka*" - - - -.. _build-libfranka: - -Building libfranka -^^^^^^^^^^^^^^^^^^ - -To build ``libfranka``, install the following dependencies from Ubuntu's package manager:: - - sudo apt install build-essential cmake git libpoco-dev libeigen3-dev - -Then, download the source code by cloning ``libfranka`` from `GitHub `__. - -For Panda you need to clone: - -.. code-block:: shell - - git clone --recursive https://github.com/frankaemika/libfranka # only for panda - cd libfranka - -By default, this will check out the newest release of ``libfranka``. If you want to build a particular version of -``libfranka`` instead, check out the corresponding Git tag:: - - git checkout - git submodule update - - - -The above instructions for cloning libfranka only work for Panda. For Franka Research 3 you have to clone: - -.. code-block:: - - git clone --recursive https://github.com/frankaemika/libfranka --branch 0.10.0 # only for FR3 - cd libfranka - -In the source directory, create a build directory and run CMake: - -.. code-block:: shell - - mkdir build - cd build - cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF .. - cmake --build . - -Optionally (but recommended), a ``libfranka`` Debian package can be built using the following command in the same directory: - -.. code-block:: shell - - cpack -G DEB - -This creates `libfranka--.deb`. This package can then be installed with: - -.. code-block:: shell - - sudo dpkg -i libfranka*.deb +Refer to the `README.md `_ Building the ROS packages ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -193,6 +134,10 @@ use ``curl`` to download the source files: curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/5.9/patch-5.9.1-rt20.patch.xz curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/5.9/patch-5.9.1-rt20.patch.sign + +.. note:: + For Ubuntu 22.04, we recommend using the `Ubuntu Pro real-time kernel `_. After enabling it, you can skip directly to :ref:`installation-real-time`. + And decompress them with:: xz -d *.xz