TechmanRobotInc / tmr_ros1

TM Robots supporting ROS1 drivers and some extended external applications. (experimental) (not support the new TM S-Series)
Other
49 stars 21 forks source link

DH Parameters are not consistent between different TM data sources #21

Closed fentonscode closed 2 years ago

fentonscode commented 2 years ago

I am an Engineer working with the TM Cobot series, currently developing simulation tools for motion planning and research.

Recently, our code was tested against a physical arm (TM5X-900) and it was noticed that the dimensions used in the TMFlow software did not match the datasheets. It was then discovered that the RoboDK TM model also had different dimensions, as well as the tmr_ros2 project here. There appears to also be a strange Python script here that edits the URDF to match the tmr_ros2 dimensions, but this is not mentioned in any of the datasheets or manuals (I.E. that the CAD and datasheets are incorrect and the script is needed to 'fix' them).

In particular, there are 6 control dimensions which drive the kinematic model. The table below shows the versions discovered so far:

Data source D1 D2 D3 D4 D5 D6
TM ROS version 1 145.20 429.00 411.50 122.30 106.00 113.15
RoboDK TM model 145.20 429.00 411.00 122.30 106.50 114.15
TM Flow 145.09 429.01 411.50 122.20 106.00 114.40
TM ROS version 2 145.10 429.00 411.50 122.20 106.00 114.40

This would appear to be the root cause for the open issue #15 as well, and might also affect solutions to #16 and #20 . What is the official 'correct' source for the DH models for this hardware series?

Furthermore, if a Python script exists to modify the URDF, can the modifications be applied directly to the URDF tag section to prevent storing the wrong version?

Whilst not technically a problem on github, This should also be propagated to the datasheets online where possible.

Relevant serials:

Serial Number (Controller) – BC2137046 Serial Number (Robot Arm) – BA2137046 TM Firmware Version – V1.84.2200

TechmanRobotIncOwner commented 2 years ago

Hi, Every robot is calibrated at the factory and have their own DH calibrated value, and in ROS 2 you can use the tm_mod_urdf package to extract specific kinematic values from your TM robot, which are taken into account by a python script function using a specific set of commands to automatically generate a new URDF or Xacro robot model description file.The script you can reference to here chapter 7. And we will add this script into ROS1 soon.

About the Data source, it is just the nominal model, and we will fix them to the same data. Thank you.

fentonscode commented 2 years ago

Thanks for looking into this, is there any reason why the Python values cannot simply be patched into the ROS 1 driver, thus eliminating the difference between ROS 1 and ROS 2? This removes one source of error immediately without changing the data.

TechmanRobotIncOwner commented 2 years ago

Hi, Because ROS 1 has the source before, so we build the script first in ROS 2, moving to ROS 1 is put on the schedule and we will do it soon.

Thank you.