Coder Social home page Coder Social logo

urdfdom's Introduction

urdfdom

The URDF (U-Robot Description Format) library provides core data structures and a simple XML parsers for populating the class data structures from an URDF file.

For now, the details of the URDF specifications reside on http://ros.org/wiki/urdf

Using with ROS

If you choose to check this repository out for use with ROS, be aware that the necessary package.xml is not included in this repo but instead is added in during the ROS release process. To emulate this, pull the appropriate file into this repository using the following format. Be sure to replace the ALLCAPS words with the appropriate terms:

wget https://raw.github.com/ros-gbp/urdfdom-release/debian/ROS_DISTRO/UBUNTU_DISTRO/urdfdom/package.xml

For example:

wget https://raw.github.com/ros-gbp/urdfdom-release/debian/hydro/precise/urdfdom/package.xml

Installing from Source with ROS Debians

Warning: this will break ABI compatibility with future /opt/ros updates through the debian package manager. This is a hack, use at your own risk.

If you want to install urdfdom from source, but not install all of ROS from source, you can follow these loose guidelines. This is not best practice for installing, but works. This version is for ROS Hydro but should be easily customized for future version of ROS:

sudo mv /opt/ros/hydro/include/urdf_parser/ /opt/ros/hydro/include/_urdf_parser/
sudo mv /opt/ros/hydro/lib/liburdfdom_model.so /opt/ros/hydro/lib/_liburdfdom_model.so
sudo mv /opt/ros/hydro/lib/liburdfdom_model_state.so /opt/ros/hydro/lib/_liburdfdom_model_state.so
sudo mv /opt/ros/hydro/lib/liburdfdom_sensor.so /opt/ros/hydro/lib/_liburdfdom_sensor.so
sudo mv /opt/ros/hydro/lib/liburdfdom_world.so /opt/ros/hydro/lib/_liburdfdom_world.so
sudo mv /opt/ros/hydro/lib/pkgconfig/urdfdom.pc /opt/ros/hydro/lib/pkgconfig/_urdfdom.pc
sudo mv /opt/ros/hydro/share/urdfdom/cmake/urdfdom-config.cmake /opt/ros/hydro/share/urdfdom/cmake/_urdfdom-config.cmake

cd ~/ros/urdfdom # where the git repo was checked out
mkdir -p build
cd build
cmake ../ -DCMAKE_INSTALL_PREFIX=/opt/ros/hydro
make -j8
sudo make install

# now rebuild your catkin workspace
cd ~/ros/ws_catkin
catkin_make

urdfdom's People

Contributors

audrow avatar clalancette avatar cottsay avatar dasroteskelett avatar davetcoleman avatar dirk-thomas avatar doudou avatar eacousineau avatar felixf4xu avatar goretkin avatar howjmay avatar hsu avatar isucan avatar j-rivero avatar jacobperron avatar jacquelinekay avatar jslee02 avatar karsten1987 avatar kphawkins avatar mikaelarguedas avatar nuclearsandwich avatar paudrow avatar rhaschke avatar scpeters avatar simonschmeisser avatar sloretz avatar tfoote avatar thomas-moulard avatar traversaro avatar vrabaud avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

urdfdom's Issues

groovy version

From what I can understand from the discussion in #1, urdfdom is/was a package in groovy, but I do not see a git branch for it. Also there is a file at https://raw.githubusercontent.com/ros-gbp/urdfdom-release/debian/groovy/precise/urdfdom/package.xml (EDIT: here is the repo https://github.com/ros-gbp/urdfdom-release)

I do see https://github.com/eacousineau/urdf_parser_py, which mentions groovy in the repo description. And I do see https://github.com/laas/robot_model_py/tree/groovy which is not a package called "urdfdom", but it seems this repo and that repo share a common history.

I didn't check all of the history, but my guess is that the project was copied over at this commit
ba8d4de
laas/robot_model_py@ba8d4de

How can we restore the groovy branch (and possibly older versions of ROS, but I'm on groovy) into this repo?

If there were a groovy-devel branch, I would, for example, apply #46

sensor parsing

urdfdom has code to parse <sensor> tags according to this spec.

However, this code doesn't seem to be used. It goes to liburdfdom_sensor, but as symbols are hidden by default, it cannot be used externally.

We are currently in the process of proposing a new Tactile sensor and would like to add the list of parsed sensors to the ModelInterface (see here for our proposal). Any objections to that strategy? Should the robot model be kept as lean as possible instead, leaving the sensor parsing to some separate function returning a list of sensors?

Please comment on the chosen approach and we will adjust accordingly and eventually file a PR.

No symbols are exported for urdfdom_model_state and urdfdom_sensor libraries

Apparently during the configuration this two libraries (urdfdom_model_state, urdfdom_sensor) are created, but no symbol from any of this two libraries is properly exported in https://github.com/ros/urdfdom/blob/master/urdf_parser/include/urdf_parser/urdf_parser.h .

On Windows this causes an error when using the urdfdom library.
I guess there are three possible solutions:

  • Properly expose the symbols defined in this two libraries.
  • Remove these libraries.
  • Add the source code of this libraries to the urdf_model (but without exposing the symbols this will be unused code).

pykdl_utils

As I mentioned in emails long ago, I have developed a Python utility package for kinematics: https://github.com/gt-ros-pkg/hrl-kdl/tree/hydro/pykdl_utils/src/pykdl_utils. It allows you to use the URDF Python parser to generate a PyKDL tree (kdl_parser.py). Furthermore, I have written a helper class called KDLKinematics which conveniently wraps PyKDL with numpy wrappers. Finally, JointKinematics extends KDLKinematics to automatically read in joint states from the topic /joint_states, so that forward kinematics can be called without parameters.

Here's an example from kdl_kinematics.py:

from urdf_parser_py.urdf import Robot
import random
robot = Robot.from_parameter_server()
base_link = robot.get_root()
end_link = robot.link_map.keys()[random.randint(0, len(robot.link_map)-1)]
print "Root link: %s; Random end link: %s" % (base_link, end_link)
kdl_kin = KDLKinematics(robot, base_link, end_link)
q = kdl_kin.random_joint_angles()
print "Random angles:", q
pose = kdl_kin.forward(q)
print "FK:", pose
q_new = kdl_kin.inverse(pose)
print "IK (not necessarily the same):", q_new
if q_new is not None:
    pose_new = kdl_kin.forward(q_new)
    print "FK on IK:", pose_new
    print "Error:", np.linalg.norm(pose_new * pose**-1 - np.mat(np.eye(4)))
else:
    print "IK failure"
J = kdl_kin.jacobian(q)
print "Jacobian:", J
M = kdl_kin.inertia(q)
print "Inertia matrix:", M
if False:
    M_cart = kdl_kin.cart_inertia(q)
    print "Cartesian inertia matrix:", M_cart

I feel like this can be of great use to some people and I'd like to release it somewhere where people are more likely to find it. @isucan is there a good place to integrate this and is there reasonable demand for something like this?

file provided by catkin not found in ubuntu

hi everyone, I am tring to run make command for serialmaster program in ubuntu 14, but it gives following error Could not find a package configuration file provided by "catkin" with any
of the following names:

catkinConfig.cmake
catkin-config.cmake

Add the installation prefix of "catkin" to CMAKE_PREFIX_PATH or set
"catkin_DIR" to a directory containing one of the above files. If "catkin"
provides a separate development package or SDK, be sure it has been
installed.
help anyone?

Check_urdf and urdf_to_graphiz don't parse extensively tested URDF's

URDF attached. Ubuntu 16.04 , ROS Kinetic used.
This is a standard example URDF taken from https://github.com/ros-simulation/gazebo_ros_demos
rrbot.txt

Both tools (check_urdf & urdf_to_graphiz) break on trying to parse macros

 $ urdf_to_graphiz rrbot.xacro 
Error:   Unable to parse component [${height1/2}] to a double (while parsing a vector value)
         at line 103 in /build/urdfdom-UJ3kd6/urdfdom-0.4.1/urdf_parser/src/pose.cpp
Error:   Could not parse inertial element for Link [link1]
         at line 434 in /build/urdfdom-UJ3kd6/urdfdom-0.4.1/urdf_parser/src/link.cpp
Error:   Unable to parse component [${height2/2] to a double (while parsing a vector value)
         at line 103 in /build/urdfdom-UJ3kd6/urdfdom-0.4.1/urdf_parser/src/pose.cpp
Error:   Could not parse inertial element for Link [link2]
         at line 434 in /build/urdfdom-UJ3kd6/urdfdom-0.4.1/urdf_parser/src/link.cpp
Error:   Unable to parse component [${height3/2] to a double (while parsing a vector value)
         at line 103 in /build/urdfdom-UJ3kd6/urdfdom-0.4.1/urdf_parser/src/pose.cpp
Error:   Could not parse inertial element for Link [link3]
         at line 434 in /build/urdfdom-UJ3kd6/urdfdom-0.4.1/urdf_parser/src/link.cpp
Error:   Unable to parse component [${camera_link}] to a double (while parsing a vector value)
         at line 149 in /build/urdfdom-UJ3kd6/urdfdom-0.4.1/urdf_parser/src/link.cpp
Error:   Could not parse visual element for Link [camera_link]
         at line 452 in /build/urdfdom-UJ3kd6/urdfdom-0.4.1/urdf_parser/src/link.cpp
Error:   Unable to parse component [${width}] to a double (while parsing a vector value)
         at line 103 in /build/urdfdom-UJ3kd6/urdfdom-0.4.1/urdf_parser/src/pose.cpp
Error:   Malformed parent origin element for joint [joint1]
         at line 402 in /build/urdfdom-UJ3kd6/urdfdom-0.4.1/urdf_parser/src/joint.cpp
Error:   joint xml is not initialized correctly
         at line 207 in /build/urdfdom-UJ3kd6/urdfdom-0.4.1/urdf_parser/src/model.cpp
ERROR: Model Parsing the xml failed

packaging requires a runtime dependency on python-lxml

and lxml need to be added to rosdistro.
Otherwise, you get that error:
http://jenkins.ros.org/job/devel-hydro-calibration/ARCH_PARAM=amd64,UBUNTU_PARAM=precise,label=devel/24/testReport/nose.failure/Failure/runTest/

Traceback (most recent call last):
File "/usr/lib/python2.7/unittest/case.py", line 327, in run
testMethod()
File "/usr/lib/python2.7/dist-packages/nose/loader.py", line 390, in loadTestsFromName
addr.filename, addr.module)
File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 39, in importFromPath
return self.importFromDir(dir_path, fqname)
File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 86, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
File "/tmp/test_repositories/src_repository/calibration/calibration_estimation/test/chain_sensor_unittest.py", line 56, in
from calibration_estimation.urdf_params import UrdfParams
File "/tmp/test_repositories/src_repository/calibration/calibration_estimation/src/calibration_estimation/urdf_params.py", line 40, in
from urdf_parser_py.urdf import *
File "/opt/ros/hydro/lib/python2.7/dist-packages/urdf_parser_py/urdf.py", line 1, in
from urdf_parser_py.xml_reflection.basics import *
File "/opt/ros/hydro/lib/python2.7/dist-packages/urdf_parser_py/xml_reflection/init.py", line 1, in
from urdf_parser_py.xml_reflection.core import *
File "/opt/ros/hydro/lib/python2.7/dist-packages/urdf_parser_py/xml_reflection/core.py", line 1, in
from urdf_parser_py.xml_reflection.basics import *
File "/opt/ros/hydro/lib/python2.7/dist-packages/urdf_parser_py/xml_reflection/basics.py", line 4, in
from lxml import etree
ImportError: No module named lxml

urdfdom should find_package(TinyXML) in urdfdom-config.cmake

urdfdom finds TinyXML when it is being built, but it does not find it again when it is installed.

find_package(TinyXML REQUIRED)

Since tinyxml.h is included in a public header

it should also be find_package'd in urdfdom-config.cmake and the include directories should be added to urdfdom_INCLUDE_DIRS. Currently it hard codes the path to TinyXML headers when urdfdom was built.

set(@PKG_NAME@_INCLUDE_DIRS "@CMAKE_INSTALL_PREFIX@/include" "@TinyXML_INCLUDE_DIRS@")

This package has uses its own find module for tinyxml, so that will need to be installed so it can be used from urdfdom-config.cmake
https://github.com/ros/urdfdom/blob/master/cmake/FindTinyXML.cmake

Bionic urdfdom-config.cmake
if (urdfdom_CONFIG_INCLUDED)
  return()
endif()
set(urdfdom_CONFIG_INCLUDED TRUE)

set(urdfdom_INCLUDE_DIRS "/usr/include" "/usr/include")

foreach(lib urdfdom_sensor;urdfdom_model_state;urdfdom_model;urdfdom_world)
  set(onelib "${lib}-NOTFOUND")
  find_library(onelib ${lib})
  if(NOT onelib)
    message(FATAL_ERROR "Library '${lib}' in package urdfdom is not installed properly")
  endif()
  list(APPEND urdfdom_LIBRARIES ${onelib})
endforeach()


foreach(dep urdfdom_headers;console_bridge)
  if(NOT ${dep}_FOUND)
    find_package(${dep})
  endif()
  list(APPEND urdfdom_INCLUDE_DIRS ${${dep}_INCLUDE_DIRS})
  list(APPEND urdfdom_LIBRARIES ${${dep}_LIBRARIES})
endforeach()

[question] Plan to migrate to tinyxml2 ?

TinyXML development has been stopped for a while and the original developper has been focusing on TinyXML2 since.

Would the maintainers of urdfdom be opened to a PR migrating to tinyxml2 ?

urdfdom usage of std::stod is error-prone to changes in system locale

The use in several parts of urdfdom of the function std::stod can be source of errors if the library is used together with other libraries (such as Qt) that change the system locale.

Slightly related, I assume (from all the ROS code using the library) the correct way of encoding floating point numbers as strings in the URDF file format is the one defined by the "C" standard locale, but this is not actually documented anywhere (see robotology/idyntree#288 (comment)).

Downstream issue: robotology/idyntree#288
Similar SDFormat issue: https://bitbucket.org/osrf/sdformat/issues/60

compiler warnings with Visual Studio 2017 due to gtest

E.g.:

urdf_parser\test\gtest\include\gtest/gtest-printers.h(500):
warning C4996: 'std::tr1': warning STL4002:
The non-Standard std::tr1 namespace and TR1-only machinery are deprecated and will be REMOVED. You can define _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING to acknowledge that you have received this warning.

The warnings have been fixed upstream so pulling a newer version of the googletest code will likely solve this.

how to mute logDebug output

When urdfdom is used in ROS-agnostic libraries such as moveit_core, a lot of junk output is sent to the debug console. There is no way to separate all the logDebug output from that of the moveit_core debug output, even though I'm only interested in the moveit_core output. Is there a way to fix this through rosconsole_bridge or console_bridge? Currently I've manually removed all the logDebug output... perhaps urdfdom is stable enough to allow us to just comment out these parts?

urdfdom binaries end up in ROS distro 'global bin'

It seems that the changes in e27ac3b cause the binaries from the urdfdom package to end up in /opt/ros/hydro/bin, instead of where they were previously installed (/opt/ros/hydro/share/urdfdom?). This makes rosrun urdfdom .. fail with:

[rosrun] Couldn't find executable named check_urdf below /opt/ros/hydro/share/urdf

Was this intended? Then we should probably also update the tutorials.

Release into indigo

What's the status on this? Or is there a new package to depend on if at all?

Tests fail

ninja: no work to do.
[0/1] cd /usr/ports/misc/urdfdom/work/.build && /usr/local/bin/ctest --force-new-ctest-process
Test project /usr/ports/misc/urdfdom/work/.build
    Start 1: urdf_double_convert
1/4 Test #1: urdf_double_convert ..............   Passed    0.00 sec
    Start 2: urdf_double_convert_locale
2/4 Test #2: urdf_double_convert_locale .......   Passed    0.00 sec
    Start 3: urdf_unit_test
3/4 Test #3: urdf_unit_test ...................***Exception: SegFault  0.00 sec
    Start 4: urdf_unit_test_locale
4/4 Test #4: urdf_unit_test_locale ............***Exception: SegFault  0.01 sec

50% tests passed, 2 tests failed out of 4

Total Test time (real) =   0.02 sec

The following tests FAILED:
	  3 - urdf_unit_test (SEGFAULT)
	  4 - urdf_unit_test_locale (SEGFAULT)

FreeBSD 11.2 amd64

urdfdom found but not a catkin package

I am working with Ubuntu 12.04 and ROS Hydro. I am also following the Baxter PyKDL Tutorial at http://sdk.rethinkrobotics.com/wiki/Baxter_PyKDL.

Upon running catkin_make, I get the following error:

-- ==> add_subdirectory(baxter_pykdl)
CMake Error at /opt/ros/hydro/share/catkin/cmake/catkinConfig.cmake:75 (find_package):
  Could not find a configuration file for package python_orocos_kdl.

  Set python_orocos_kdl_DIR to the directory containing a CMake configuration
  file for python_orocos_kdl.  The file will have one of the following names:

    python_orocos_kdlConfig.cmake
    python_orocos_kdl-config.cmake

Call Stack (most recent call first):
  baxter_pykdl/CMakeLists.txt:4 (find_package)


-- Using these message generators: gencpp;genlisp;genpy
CMake Error at /opt/ros/hydro/share/catkin/cmake/catkin_package.cmake:176 (message):
  catkin_package() CATKIN_DEPENDS on 'urdfdom', which has been found in
  '/opt/ros/hydro/share/urdfdom/cmake/urdfdom-config.cmake', but it is not a
  catkin package
Call Stack (most recent call first):
  /opt/ros/hydro/share/catkin/cmake/catkin_package.cmake:98 (_catkin_package)
  baxter_pykdl/CMakeLists.txt:19 (catkin_package)


-- Configuring incomplete, errors occurred!
Invoking "cmake" failed

It seems the culprit is urdfdom.

I have removed and reinstalled urdfdom and related binaries for hydro. I have also re-tried to catkin_make from scratch.

I am able to roscd to urdfdom. It takes me to /opt/ros/hydro/share/urdfdom. Inside, however I only see a cmake folder and the package.xml file.

I tried to run rosrun urdfdom check_urdf baxter.urdf but I don't have such executable. I also got an error trying to use urdfdom_py display_urdf.

Any thoughts?

Compiling urdfdom stand-alone

I'm getting the error while trying to install urdfdom on my current computer using the instructions I made in this repo's README.

[ 33%] Built target urdfdom_model_state
Building CXX object urdf_parser/CMakeFiles/urdfdom_world.dir/src/link.cpp.o
Building CXX object urdf_parser/CMakeFiles/urdfdom_model.dir/src/link.cpp.o
/home/dave/ros/urdfdom/urdf_parser/src/link.cpp: In function ‘bool urdf::parseVisual(urdf::Visual&, TiXmlElement*)’:
/home/dave/ros/urdfdom/urdf_parser/src/link.cpp:367:9: error: ‘class urdf::Visual’ has no member named ‘name’
/home/dave/ros/urdfdom/urdf_parser/src/link.cpp: In function ‘bool urdf::parseCollision(urdf::Collision&, TiXmlElement*)’:
/home/dave/ros/urdfdom/urdf_parser/src/link.cpp:409:9: error: ‘class urdf::Collision’ has no member named ‘name’
/home/dave/ros/urdfdom/urdf_parser/src/link.cpp: In function ‘bool urdf::parseVisual(urdf::Visual&, TiXmlElement*)’:
/home/dave/ros/urdfdom/urdf_parser/src/link.cpp:367:9: error: ‘class urdf::Visual’ has no member named ‘name’
/home/dave/ros/urdfdom/urdf_parser/src/link.cpp: In function ‘bool urdf::parseCollision(urdf::Collision&, TiXmlElement*)’:
/home/dave/ros/urdfdom/urdf_parser/src/link.cpp:409:9: error: ‘class urdf::Collision’ has no member named ‘name’
make[2]: *** [urdf_parser/CMakeFiles/urdfdom_world.dir/src/link.cpp.o] Error 1
make[1]: *** [urdf_parser/CMakeFiles/urdfdom_world.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make[2]: *** [urdf_parser/CMakeFiles/urdfdom_model.dir/src/link.cpp.o] Error 1
make[1]: *** [urdf_parser/CMakeFiles/urdfdom_model.dir/all] Error 2
make: *** [all] Error 2

Actuator inertia

Actuators used in industrial robotic arms typically have a reasonably low inertia, which can be included in the link inertia. However, the actuator inertia has another important effect on the rigid body dynamics; namely, due to the gear ratio between the motor and the joint, the actuator inertia significantly contributes to the required torque to achieve a certain requested motion.

At the moment it seems that the URDF specification does not support the specification of such contribution of motor inertia. I think it could be well-placed in the transmission tag.

Some relevant questions for the discussion:

  • Am I missing out on something (actuator inertia is supported)?
  • If not, is it in accordance to the philosophy behind URDF to include actuator inertia in the specification?
  • If so, do you agree it should be place in the transmission element?

Thanks in advance for your input.

add optional name attributes to collisions and visuals

Migrated from bitbucket

The use case for this is for specifying contact sensors in gazebo. For example, the reference to collision ${prefix}_l_finger_tip_link_geom in pr2 gripper XML asssumes the collision name is the link name appended by _geom, which is an ugly hard-coded approach:

    <gazebo reference="${prefix}_l_finger_tip_link">
      <turnGravityOff>true</turnGravityOff>
      <selfCollide>false</selfCollide>
      <sensor type="contact" name="${prefix}_l_finger_tip_contact_sensor">
        <update_rate>100.0</update_rate>
        <contact>
          <collision>${prefix}_l_finger_tip_link_geom</collision>
        </contact>
        <plugin name="${prefix}_l_finger_tip_gazebo_ros_bumper_controller" filename="libgazebo_ros_bumper.so">
          <alwaysOn>true</alwaysOn>
          <frameName>${prefix}_l_finger_tip_link</frameName>
          <updateRate>100.0</updateRate>
          <bumperTopicName>${prefix}_l_finger_tip_bumper</bumperTopicName>
        </plugin>
      </sensor>
      <mu1 value="${finger_tip_mu}" />
      <mu2 value="${finger_tip_mu}" />
      <kp  value="10000000.0" />
      <kd  value="1.0" />
    </gazebo>

Provide versioning information for libraries

Would you guys be amenable to providing library versioning and ABI versioning (SONAME) to urdfdom? It's pretty simple to do in CMake, and it helps for things like parallel installation of multiple library versions, enforcing ABI changes through ld, etc. There's an example of how to do so in the urdfdom Fedora review request at https://bugzilla.redhat.com/show_bug.cgi?id=871205#c3, I can also code it up and submit a pull request if it's easier.

Use c++11 and remove boost dependency

Are there any plans to make a version of urdfdom that uses c++11 and replaces boost::*_ptr with std::*_ptr? One semi-migration strategy could be to start using typedefs:

typedef boost::shared_ptr<urdf::Link> UrdfLinkPtr;

and then in the next major version of urdfdom switch them over to std:: instead of boost::

typedef std::shared_ptr<urdf::Link> UrdfLinkPtr;

Then anyone who wants their code to support both versions could use the typedefs? I'm sure there's big holes in this strategy (such as boost::*_pointer_cast vs std::*_pointer_cast), but you've got to start somewhere.

locale issues here as well

I'm sorry to bring further bad news, the ubuntu version of this package is based on 1.0.0 from 2016 which used std::stod. The issues were subsequently fixed in code but no new release was made.

This can be seen with truncated joint limits for example. (We have one linear joint inside the gripper which obviously moves less than 1.0m ... it's less visible when your revolute joints limit is reduced from 3.141 to 3.0 ...)

@scpeters can we have a new release here as well? @j-rivero can we then get this into debian (and try updating ubuntu)

(followup on ros/urdfdom_headers#45)

@gavanderhoorn so it seems necessary to grep not only the current code but the entire history of ros dependencies for std::stod usage ... (note that I have not done that)

How to set torsional friction in URDF?

I'm not sure whether this is the right place, but the official Bug Tracker here seems deprecated.

I'm raising this issue because when switching from Indigo/Gazebo 2 to Kinetic/Gazebo 7, the same model of a quadruped robot, which has feet with a perfectly spherical collision volume , doesn't work anymore, because it slips continuously.

I suspect that this is due the new torsional friction property from Gazebo 7.

With reference to the following Gazebo and ROS questions:
https://answers.ros.org/question/271474/robot-slips-after-upgrade-to-kinetic/?comment=271627#post-id-271627
http://answers.gazebosim.org/question/13082/how-do-i-add-torsional-friction-to-urdf-model/
http://answers.gazebosim.org/question/17457/robot-slips-after-upgrade-to-kinetic/

I can't find a way to set the torsional friction properties from the URDF file (which is then converted into a SDF when Gazebo launches).

Apparently, the <gazebo> tag does not do what I thought, i.e. injecting SDF code into the URDF.

If I put the SDF code to set the torsional friction from within the URDF, they are ignored.

Docs?

Now that this is upstream, do we have API docs for it somewhere? I see nothing on ros.org, and a quick web search revealed nothing elsewhere either.

Floating base URDF joint has random child joints after library ugrade

Dear all,
I'm currently debugging a code written by my colleague @cmastalli, which is compatible with URDF 0.2

The code assumes 1 child joints for the floating base joint of a URDF model, e.g.:

  <joint name="floating_base" type="floating">
    <origin rpy="0 0 0" xyz="0 0 0"/>
    <parent link="base_link"/>
    <child link="trunk"/>
  </joint>

It seems that the new library URDF 0.4, installed by default on ros kinetic, does not give this child joint.

Has something changed inside the library?
Is it a change in the XML syntax, which makes our urdf files obsolete?

Centralizing URDF packages

This issue has been moved from bitbucket

  • What is the difference between urdf | urdf_interface | urdf_parser | urdfdom | urdfdom_headers etc?

From John Hsu:

Looking through robot_model, I think we should:

  • Deprecate urdf_parser. Most or all of the functionalities have been moved upstream to urdfdom.
  • Deprecate urdf_interface. All of the interface headers are now in urdfdom_headers.

urdf_parser_py is missing modules in Debian package 0.2.9-8

Step to reproduce:

$ python -c "from urdf_parser_py.urdf import *"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/opt/ros/hydro/lib/python2.7/dist-packages/urdf_parser_py/urdf.py", line 1, in <module>
    from urdf_parser_py.xml_reflection.basics import *
ImportError: No module named xml_reflection.basics

Apparently xml_reflection is not properly bundled in the current release.

Create the release 1.0.0

I believe that after the merge of pull request #62 we are ready to tag and release the version 1.0.0.
If there is anything missing, please let me know.

//cc @scpeters

Add appveyor windows CI

We currently have travis CI for linux, but I'd also like to have Windows CI with appveyor. The install script shouldn't be too hard to make, but as I took a first look at it, I realized we would have to install console_bridge and urdfdom_headers. It would be nice if we could package those for chocolatey. Does anyone have experience with packaging for chocolatey? @traversaro @jslee02 ?

Should urdf_parser_py be in a different repo?

Why is urdf_parser_py in this repository?

It contains ROS-specific code, e.g. from_parameter_server, which imports rospy when called:

def from_parameter_server(cls, key = 'robot_description'):

It is released in a separate ROS package (ros-indigo-urdf-parser-py).

It seems to me that it should either be moved into robot_model, OR from_parameter_server should be removed and it should be released as a python package (to be installed using pip, for example).

@isucan, @eacousineau, etc. what are your thoughts?

functions to write urdf xml to file?

I am looking for functions to write a urdf xml file but can't seem to find any. Basically, I am reading joint and body data from another file format, and would like to convert it to URDF.

It looks like this functionality might exist in "urdf_parser_py", but i'm not sure. Other than that, the only other thing i can find that looks like it writes urdf files is "robot_model/collada_urdf/src/collada_to_urdf.cpp".

Thanks

Release

Can we release the latest updates in this repo to Ubuntu?

XML schema invalid

The XML schema is currently invalid W.R.T. to the link element. The link uses an xs:all element with some unbounded elements. The XML standard only allows zero or one for the bounds. I'd recommend changing it to a sequence. Changing this would trade off correctness for possible invalidating some existing URDFs.

urdf_parser_py Exception with new transmission specification

urdf_parser_py fails when processing a URDF containing a element
which adheres to the current specification given in
http://wiki.ros.org/urdf/XML/Transmission .
Because the old specification expected a "type" attribute,
which the new spec includes as a sub-element, the python parser throws "type"-is-missing Exceptions.
Also, the actuator definition became more complex and now includes the mechanicalReduction parameter.

As a temporary fix it's enough to comment the following in urdf.py over here:

xmlr.reflect(Transmission, tag = 'transmission', params = [
        name_attribute,
#       xmlr.Attribute('type', str),
#       xmlr.Element('joint', 'element_name'),
#       xmlr.Element('actuator', 'element_name'),
#       xmlr.Element('mechanicalReduction', float)
        ])

This works over here, because we never access the transmission definitions via urdfdom, but obviously it's just a hot fix, nothing more..

Because it's not possible to quickly overlay this ros-code in a uniform local workspace
(you just recently removed catkin support...),
it's pretty important to me to see this fixed in the official ros (ubuntu) packages soon

  • one way or the other.

Branches and CI platforms

Looking at #99 it appears the travis CI job failed due to it testing master on ubuntu trusty.

What's the purpose of each branch? What platform is each branch supposed to support? It looks like all branches besides 0.2, 0.3, 0.4, and master are unused and could be removed.

Releases:

Thoughts on having CI test the following platforms on each branch?

  • 0.2
    • Ubuntu trusty
  • 0.3
    • Fedora 23
    • Fedora 24
    • Debian jessie
  • 0.4
    • Ubuntu xenial
    • Fedora 25
    • Fedora 26
  • master
    • Debian stretch
    • Ubuntu Yakkety
    • Debian buster
    • Ubuntu zesty
    • Debian sid
    • Ubuntu artful

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.