To build this library standalone so that you can build you own applications using this library, follow the usual cmake procedure:
$ git clone /~https://github.com/UniversalRobots/Universal_Robots_Client_Library ur_client_library
$ cd ur_client_library
$ mkdir build && cd build
$ cmake ..
$ make
$ sudo make install
This will install the library into your system so that it can be used by other cmake projects directly.
The ur_client_library
is available in all maintained ROS distribution and can be installed
using
$ sudo apt install ros-$ROS_DISTRO-ur-client-library
Unless you explicitly want to contribute to this library we recommend using the binary installation instead of building from source as explained below.
If you want to build this library inside a ROS workspace, e.g. because
you want to build the Universal Robots ROS
driver
from source, you cannot use catkin_make
directly, as this library is
not a catkin package. Instead, you will have to use
catkin_make_isolated
or catkin
build
to build your workspace.
If you want to build this library inside a ROS 2 workspace, e.g. because you want to build the Universal Robots ROS2 driver from source, simply clone this project into your workspace and build your workspace as usual.
When you want to use this library in other cmake projects, make sure to
- Add
find_package(ur_client_library REQUIRED)
to yourCMakeLists.txt
(Requires to have the client library installed and your PATH setup done correctly. As an alternative, fetch and build it as part of your project as shown below.) - add
ur_client_library::urcl
to the list oftarget_link_libraries(...)
commands inside yourCMakeLists.txt
file.
As a minimal example, take the following “project”:
As a minimal executable, we'll create a client for the dashboard server and ask for the PolyScope version.
Note
This will not work on PolyScope X versions, as the dashboard server is not available there.
#include <iostream>
#include <ur_client_library/ur/dashboard_client.h>
int main(int argc, char* argv[])
{
urcl::DashboardClient my_client("192.168.56.101");
bool connected = my_client.connect();
if (connected)
{
std::string answer = my_client.sendAndReceive("PolyscopeVersion\n");
std::cout << answer << std::endl;
my_client.disconnect();
}
return 0;
}
In this example, we'll fetch the client library as part of the project and build it together with our application:
cmake_minimum_required(VERSION 3.11.0) # That's the minimum required version for FetchContent
project(minimal_example)
include(FetchContent)
FetchContent_Declare(
ur_client_library
GIT_REPOSITORY /~https://github.com/UniversalRobots/Universal_Robots_Client_Library.git
GIT_TAG master
)
# This will download the ur_client_library and replace the `find_package(ur_client_library)` call.
FetchContent_MakeAvailable(ur_client_library)
add_executable(db_client main.cpp)
target_link_libraries(db_client ur_client_library::urcl)
To build the project, create a build directory and run cmake:
$ mkdir build && cd build
$ cmake ..
$ cmake --build .
Then (with a robot switched on and available on 192.168.56.101), you can test the minimal example application:
$ ./db_client
INFO /<...>/ur/dashboard_client.cpp 72: Connected: Universal Robots Dashboard Server
URSoftware 5.19.0.1210631 (Oct 23 2024)
INFO /<...>/ur/dashboard_client.cpp 98: Disconnecting from Dashboard server on 192.168.56.101:29999