Skip to content

Commit

Permalink
Release/v1.0 (#3)
Browse files Browse the repository at this point in the history
Bump version to 1.0

Add openssl dependency

Bump boost to version 1.74.0

Add Omni license generator and readme

Update info in doxygen template

Remove Ubuntu20.04 support

ADD

Add external wrench feedback and wrist singularity avoidance repulsive force

Add bool isOperational(void)

Add void setLocalNullSpacePosture(const std::array<double, k_jointDOF>& preferredPositions)

Add void setRemoteNullSpacePosture(const std::array<double, k_jointDOF>& preferredPositions)

Add void setRemoteMaxWrench(const std::array<double, k_cartDOF>& max_wrench)

Add void setRepulsiveWrench( const std::array<double, k_cartDOF>& repulsiveWrench, bool inWorld = true)

Add TeleopRobotInfo getLocalInfo(void) const

Add TeleopRobotInfo getRemoteInfo(void) const

CHANGE

Change void clearFault(void) to bool clearFault(void)

Change void Robot2RobotTeleop::run(bool isBlocking) to void Robot2RobotTeleop::run(void)

Remove Robot2RobotTeleop::setLocalCartesianStiffness and Robot2RobotTeleop::setRemoteCartesianStiffness
Change void run(void) to void step(void)
  • Loading branch information
ZhipengZhang-flexiv authored May 21, 2024
1 parent bf92c2e commit f5c1f43
Show file tree
Hide file tree
Showing 21 changed files with 700 additions and 354 deletions.
45 changes: 2 additions & 43 deletions .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,55 +23,14 @@ jobs:
- uses: actions/checkout@v2

- name: Build and install dependencies
# Build and install all dependencies to RDK installation directory.
# Build and install all dependencies to flexiv_omni_teleop installation directory.
run: |
cd ${{github.workspace}}
cd thirdparty
bash build_and_install_dependencies.sh ~/teleop_install
- name: Build and install library
# Configure CMake, then build and install the flexiv_omni_teleop INTERFACE library to RDK installation directory.
run: |
cd ${{github.workspace}}
mkdir -p build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=~/teleop_install
make install
- name: Build examples
# Find and link to the flexiv_omni_teleop INTERFACE library, then build all examples.
run: |
cd ${{github.workspace}}/example
mkdir -p build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=~/teleop_install
make -j$(nproc)
# - name: Build tests
# # Find and link to the flexiv_omni_teleop INTERFACE library, then build all tests.
# run: |
# cd ${{github.workspace}}/test
# mkdir -p build && cd build
# cmake .. -DCMAKE_INSTALL_PREFIX=~/teleop_install
# make -j$(nproc)

build-ubuntu-20:
# The CMake configure and build commands are platform agnostic and should work equally
# well on Windows or Mac. You can convert this to a matrix build if you need
# cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
runs-on: ubuntu-20.04

steps:
- uses: actions/checkout@v2

- name: Build and install dependencies
# Build and install all dependencies to RDK installation directory.
run: |
cd ${{github.workspace}}
cd thirdparty
bash build_and_install_dependencies.sh ~/teleop_install
- name: Build and install library
# Configure CMake, then build and install the flexiv_omni_teleop INTERFACE library to RDK installation directory.
# Configure CMake, then build and install the flexiv_omni_teleop INTERFACE library to flexiv_omni_teleop installation directory.
run: |
cd ${{github.workspace}}
mkdir -p build && cd build
Expand Down
10 changes: 8 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
cmake_minimum_required(VERSION 3.18.6)
cmake_minimum_required(VERSION 3.22.1)

# ===================================================================
# PROJECT SETUP
# ===================================================================
project(flexiv_omni_teleop VERSION 0.7.0)
project(flexiv_omni_teleop VERSION 1.0.0)

# Configure build type
if(NOT CMAKE_BUILD_TYPE)
Expand Down Expand Up @@ -67,6 +67,11 @@ if(Boost_FOUND)
message(STATUS "Found Boost: ${Boost_DIR}")
endif()

# OpenSSL
find_package(OpenSSL REQUIRED)
if(OpenSSL_FOUND)
message(STATUS "Found OpenSSL, version: ${OPENSSL_VERSION}, libraries: ${OPENSSL_LIBRARIES}")
endif()


# ===================================================================
Expand All @@ -86,6 +91,7 @@ target_include_directories(${PROJECT_NAME} INTERFACE

target_link_libraries(${PROJECT_NAME} INTERFACE
${TELEOP_STATIC_LIBRARY}
${OPENSSL_LIBRARIES}
Threads::Threads
Eigen3::Eigen
fastrtps
Expand Down
82 changes: 45 additions & 37 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Flexiv Omni Teleop SDK
# Flexiv Omni Teleop

![CMake Badge](https://github.com/flexivrobotics/flexiv_omni_teleop/actions/workflows/cmake.yml/badge.svg) ![Version](https://img.shields.io/badge/version-0.7-blue.svg) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
![CMake Badge](https://github.com/flexivrobotics/flexiv_omni_teleop/actions/workflows/cmake.yml/badge.svg) ![Version](https://img.shields.io/badge/version-1.0-blue.svg) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)

The Flexiv Omni Teleop SDK provides C++ APIs for developing complex and customized applications involving robot-robot or device-robot teleoperation. The supported devices are listed below.
The Flexiv Omni Teleop is an SDK provides C++ APIs for developing complex and customized applications involving robot-robot or device-robot teleoperation. The supported devices are listed below.

## Supported devices

Expand All @@ -12,55 +12,63 @@ The Flexiv Omni Teleop SDK provides C++ APIs for developing complex and customiz

## Compatibility

| **Supported OS** | **Supported processor** | **Supported language** | **Required compiler kit** |
| -------------------------- | ----------------------- | ---------------------- | ------------------------- |
| Linux (Ubuntu 20.04/22.04) | x86_64 | C++ | build-essential |

### Applying for a license
1. Run the generator to generate your feature ID and provide the feature id to apply for the license.
Note: The feature id is a unique identifier for your application and is bound to your local computer. Please generate feature ID and use license on the same computer.
| **Supported OS** | **Supported processor** | **Supported language** | **Required compiler kit** |
| -------------------- | ----------------------- | ---------------------- | ------------------------- |
| Linux (Ubuntu 22.04) | x86_64 | C++ | build-essential |

### Compile and install for Linux

1. In a new Terminal, install C++ compiler, Git, and CMake (with GUI) using the package manager:
1. In a new Terminal, install C++ compiler, libssl-dev, net-tools, Git, and CMake (with GUI) using the package manager:

sudo apt install build-essential libssl-dev net-tools git cmake cmake-qt-gui -y

```bash
sudo apt install build-essential git cmake cmake-qt-gui -y
```
2. Choose a directory for installing ``flexiv_omni_teleop`` library and all its dependencies. For example, a new folder named ``teleop_install`` under the home directory.

3. Please ensure that your network connection is unobstructed. Then, in a new Terminal, run the provided script to compile and install all dependencies to the installation directory chosen in step 2:

```bash
cd flexiv_omni_teleop/thirdparty
bash build_and_install_dependencies.sh ~/teleop_install
```
cd flexiv_omni_teleop/thirdparty
bash build_and_install_dependencies.sh ~/teleop_install

4. In a new Terminal, use CMake to configure `flexiv_omni_teleop`:

```bash
cd flexiv_omni_teleop
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=~/teleop_install
```
cd flexiv_omni_teleop
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=~/teleop_install

NOTE: ``-D`` followed by ``CMAKE_INSTALL_PREFIX`` is a CMake parameter specifying the path of the chosen installation directory. Alternatively, this configuration step can also be done through CMake GUI.

5. Compile and install `flexiv_omni_teleop` library:

```bash
cd flexiv_omni_teleop/build
cmake --build . --target install --config Release
```
cd flexiv_omni_teleop/build
cmake --build . --target install --config Release

NOTE: the installation of `flexiv_omni_teleop` library is complete now. The following steps show how to link to the installed library from a user project.

### Link to the installed library to a user project

1. To find and link to the installed `flexiv_omni_teleop` library to a user project, using the provided example project for instance:

```bash
cd flexiv_omni_teleop/example
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=~/teleop_install
cmake --build . --config Release -j 4
```
cd flexiv_omni_teleop/example
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=~/teleop_install
cmake --build . --config Release -j 4

NOTE: ``-D`` followed by ``CMAKE_INSTALL_PREFIX`` tells user project's CMake where to find the installed `flexiv_omni_teleop` library.
2. Set all the robots were in `Auto/Remote Mode` via flexiv Elements, then to run an compiled example program:

```bash
sudo ./<program_name> -l [local_robot_serial_number] -r [remote_robot_serial_number] -c [path-to-licenseCfg.json]
```
### Run Omni-Teleop

1. Apply for Omni license to run Omni-Teleop. See [Omni_license.md](omni_license_generator/Omni_license.md)

2. Set all the robots to `Auto/Remote Mode` via flexiv Elements, then to run the compiled example program:

./<program_name> [remote_robot_SN] [local_robot_SN] [path_to_omni_licenseCfg.json]

### API Documentation

API doc can be generated using doxygen

sudo apt install doxygen-latex graphviz
cd flexiv_omni_teleop
doxygen doc/Doxygen.in

The generated API doc is under ```flexiv_omni_teleop/doc/html ```. You can open any of the html file with your web browser to view it.
4 changes: 2 additions & 2 deletions doc/Doxygen.in
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,13 @@ DOXYFILE_ENCODING = UTF-8
# title of most generated pages and in a few other places.
# The default value is: My Project.

PROJECT_NAME = "flexiv_omni_teleoperation"
PROJECT_NAME = "Flexiv Omni Teleop"

# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
# could be handy for archiving the generated documentation or if some version
# control system is used.

PROJECT_NUMBER = "0.6"
PROJECT_NUMBER = "1.0"

# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
Expand Down
4 changes: 2 additions & 2 deletions example/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.18.6)
cmake_minimum_required(VERSION 3.22.1)

project(flexiv_omni_teleop_example)

Expand All @@ -18,7 +18,7 @@ endif()
list(APPEND CMAKE_PREFIX_PATH ${CMAKE_INSTALL_PREFIX})

set(EXAMPLE_LIST
basic_free_space_motion_teleop
basics1_cartesian_teleop
)

find_package(flexiv_omni_teleop REQUIRED)
Expand Down
93 changes: 0 additions & 93 deletions example/basic_free_space_motion_teleop.cpp

This file was deleted.

Loading

0 comments on commit f5c1f43

Please sign in to comment.