1
0
mirror of https://gitlab.com/obbart/universal_robots_ros_driver.git synced 2026-04-10 10:00:48 +02:00
Commit Graph

146 Commits

Author SHA1 Message Date
Tristan Schnell
2eea2bf8fc implemented full rtde handshake to initialize constant publishing to
data packages by the robot
2019-04-11 15:58:10 +02:00
Tristan Schnell
8975957b5f implemented serializing of the output setup and control start packages 2019-04-11 15:53:15 +02:00
Tristan Schnell
b604af749f implemented serialization of general rtde headers and the request
protocol version package
2019-04-11 15:52:15 +02:00
Tristan Schnell
742bc11c8f added the rtde client class that initializes the rtde handshake and
allows reading of data packages
2019-04-11 15:51:10 +02:00
Tristan Schnell
89ee72ac2d reworked pipeline to allow for use without consumer 2019-04-11 15:51:10 +02:00
Felix Mauch
75d73c1c28 Added a check, whether the package was parsed completely. 2019-04-10 18:23:18 +02:00
Felix Mauch
3cde95a17b added a function to retrieve single components from a DataPackage 2019-04-10 18:23:18 +02:00
Felix Mauch
4a12a8c9ce Implemented RTDEParser 2019-04-10 18:23:18 +02:00
Felix Mauch
466fc03e31 Implemented parsing and toString for RTDE data package 2019-04-10 18:23:18 +02:00
Felix Mauch
642f040cd8 Do not use "using namespace" in header files 2019-04-10 17:24:34 +02:00
Felix Mauch
fcc1e62ab5 Parse unknown states to default RobotStates 2019-04-10 10:23:16 +02:00
Felix Mauch
4dc4cc0fb0 Changed KinematicsInfo to match reality
In the docs, the message has a length of 222 bytes,
while the robots send 225 bytes of data.

As parsing goes correct, they have to be at the end of the message,
we assume that the calibration_data field in fact has the type of a 4-byte
integer.
2019-04-10 10:23:16 +02:00
Felix Mauch
38fc393f53 Fixed parsing of version message 2019-04-10 10:23:16 +02:00
Felix Mauch
51ac7ddb91 Tested producer part with real data 2019-04-10 10:23:16 +02:00
Lea Steffen
2f0b8eae1a added documentation for parser and higher level packages 2019-04-09 17:19:32 +02:00
Lea Steffen
83125e63c1 Implemented parser functionality 2019-04-09 16:15:39 +02:00
Felix Mauch
b090cdf833 added shell consumer 2019-04-09 16:05:35 +02:00
Tristan Schnell
b1d82c2be6 Added and implemented rtde message types 2019-04-09 16:05:35 +02:00
Felix Mauch
6699c1facb Added parse and toString functions for higher-level primary functions 2019-04-09 16:03:38 +02:00
Felix Mauch
4bf5793d79 Added and implemented primary messages 2019-04-09 16:00:17 +02:00
Felix Mauch
adf1560105 moved bin_parser to comm and use it in URPackage::parseWith 2019-04-09 15:59:39 +02:00
Felix Mauch
59ae3bcd69 Documented URStream and TCPSocket 2019-04-09 15:46:19 +02:00
Tristan Schnell
326207e6c7 changed URCommander to use templated version of URStream 2019-04-08 16:49:03 +02:00
Tristan Schnell
39a5935067 added package_header templating for the pipeline class and the abstract producer and consumer classes 2019-04-08 16:35:32 +02:00
Tristan Schnell
dd43521a85 added package_header templating to the producer class 2019-04-08 16:35:32 +02:00
Tristan Schnell
112148bcd8 added package_header templating to stream class and moved implementation
into header file
2019-04-08 16:35:32 +02:00
Lea Steffen
ed11fb8a1c updated names to PackageHeader 2019-04-08 14:05:37 +02:00
Felix Mauch
1c205556a1 use namespace ur_driver instead of ur_rtde_driver 2019-04-08 13:51:33 +02:00
Felix Mauch
3c61cbeb35 Added a common package ancestor 2019-04-08 11:09:27 +02:00
Lea Steffen
f7c51bae87 header files for messages added 2019-04-08 11:07:50 +02:00
Felix Mauch
44751cfb2a removed unused files 2019-04-01 17:30:24 +02:00
Felix Mauch
31746259cf put communication-related classes to namespace 2019-04-01 17:30:24 +02:00
Felix Mauch
5840d4f406 Put everyting into ur_rtde_driver namespace 2019-04-01 17:30:24 +02:00
Felix Mauch
99533e42d8 Updated clang-format and added clang-tidy instructions 2019-04-01 17:30:24 +02:00
Felix Mauch
f34422f32b renamed package 2019-04-01 17:30:24 +02:00
gavanderhoorn
0fa0cba044 Add Apache 2 license header to source and headers. 2019-03-29 16:52:49 +01:00
Miguel Prada
9e276a3368 Format sources with clang-format 2018-11-20 09:47:17 +01:00
Miguel Prada
2f1251c2eb Resolve premature controller initialization (#213)
Squashed commits:

* Avoid updating ros_control controllers on pipeline timeout
* Revert "Avoid updating ros_control controllers on pipeline timeout"
* Do not update controller_manager until RTPackets have been received
* Mark handles as initialized after actually doing it rather than just before
* Improve readability
2018-11-05 14:05:30 +01:00
G.A. vd. Hoorn
50bd24dd3b Merge pull request #9 from NoMagicAi/SAFE_TRAJECTORY_FOLLOWER
Adds Low Bandwith Trajectory Follower implementation
2018-09-27 16:06:39 +02:00
Jarek Potiuk
71bca7abf7 Refactored intialisation of ROSController/ActionServer 2018-03-24 13:14:53 +01:00
Miguel Prada
d7d84caee7 Add time parameter to speedj for UR software >= 3.3
Fixes #15.

Related to https://github.com/ThomasTimm/ur_modern_driver/issues/92
2018-02-15 10:50:35 +01:00
Jarek Potiuk
992c661e9e Removed unused append method 2018-02-04 23:50:50 +01:00
Jarek Potiuk
8f5df0145f Removed unused debug/more_debug options 2018-02-04 23:21:01 +01:00
Jarek Potiuk
42b336bbf5 Faster loading speed and better precision for LBTF
Low Bandwidth Trajectory Follower has now much less comments
and debugging information - which means that it will parse on UR robot
in around 400 ms instead of 700 ms. It also has an adjustment loop
in case the robot does not reach any of the trajectory points specified.

It will catch-up at every trajectory point sent by MoveIt and will try
to get as close as possible to the desired pointi (it will check if all
joints are within MAX_JOINT_DIFFERENCE from the desired positions)
2018-01-27 13:14:38 +01:00
Jarek Potiuk
a54b97e939 Renamed Safe Trajectory Follower to Low Bandwidth one 2018-01-14 22:01:53 +01:00
Jarek Potiuk
5dcef72415 Adds Safe Trajectory Follower implementation
Safe Trajectory Follower implements different approach for controlling
the robot. Rather than calculate the interpolation steps in the driver
and send the small interpolated steps over the network to the URScript
program with 500Hz frequency, the coarser MoveIt trajectory is sent
(with few Hz) and the interpolation steps are calculated by the
URScript.

The algorithm for time progress has also built-in protection against
any delays induced by load on the driver, network or URControl - it
will never "catch-up" dangerously when such delay are introduced,
It will rather pause and wait for the next small interpolation step
instructions and re-start the move slower - never skipping any
interpolated steps.

Those changes make Safe Trajectory Follower much more resilient to
network communication problems and removes any superficial requirements
for the network setup, kernel latency and no-load-requirement for the
driver's PC - making it much more suitable for research, development
and quick iteration loops. It works reliably even over WiFi.
2018-01-12 00:00:16 +01:00
Simon Schmeisser (isys vision)
bf85755744 Add support for version 3.5
A new undocumented uchar was added to RobotMode
2018-01-09 21:25:48 +01:00
Jarek Potiuk
6950b3c4bd Re-add urscript topic (#7)
* Re-added UR script - for custom UR Script execution

* Restarting the driver when robot closes the connection on script error.

The pipelines work in the way that if the connection is
is closed by the control PC, it will not be re-established. This
happens for example if you use the URScript topic and upload
script that does not compile. The robot will then close the
connection, the pipeline will close and any subsequent
uploads will fail and noone realises there is a problem.

While we could re-establish the connection, I think much better
solution is to shutdown the driver in such case. This is much more
resilient behaviour as it will clean up any inconsistent driver state.

We can utilise "respawn" feature of ROS launch and restart such
driver automatically (launch files are updated as part of that change).

On top of "production" stability, it allows for much nicer development
workflow - you can use URScript topic for development of new scripts
and have the driver restart every time you make mistake.
Without it, any mistake requires restarting the driver manually.
2018-01-02 20:22:55 +01:00
Simon Schmeisser
24eef75d72 Publish industrial_msgs::RobotStatus (#5) 2018-01-02 20:16:41 +01:00
Michael Görner
e4a503fe5f various improvements and fixes for use_ros_control=true (#6)
* Find matching hardware_interface using the required type

The name of the controller was used in order to find and start
the matching hardware interface.
In consequence this meant that one could only define one controller
for each hardware interface.

Now, the controller's required type of hardware interface is used
to find and start the matching hardware interface.

* separate read & update in controller

consume is defined as read+update, but update
does not include read in ros_control terminology.

* Handle latency in pipeline loop

The controllers need to update at a rate of *at least* 125Hz,
but the wait_dequeue_timed call could in theory slow the loop down to 62.5Hz.
The old ur_modern_driver worked around this problem by sending goals
at 4*125Hz.

This patch exploits the onTimeout method of a consumer to update with
the specified frequency of the control loop, even if no new state message
arrived after the previous command.

* publish wrench w.r.t. tcp frame

The messages had an empty frame_id before and could not be displayed in RViz

* support ros_control in indigo
2017-12-08 14:05:07 +01:00