Giter Club home page Giter Club logo

urdfdom_headers's Introduction

urdfdom_headers

The URDF (U-Robot Description Format) headers provides core data structure headers for URDF.

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

Build Status

Build Status

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_headers-release/debian/ROS_DISTRO/UBUNTU_DISTRO/urdfdom_headers/package.xml

For example:

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

urdfdom_headers's People

Contributors

audrow avatar brawner avatar clalancette avatar davetcoleman avatar dirk-thomas avatar edwardbetts avatar hsu avatar isucan avatar j-rivero avatar jacquelinekay avatar jslee02 avatar mosfet80 avatar paudrow avatar rauldg avatar scpeters avatar simonschmeisser avatar sloretz avatar traversaro avatar vmatare 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

Watchers

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

urdfdom_headers's Issues

Create the release 1.0.0

I believe that after the merge of pull request #23 we are ready to tag and release the version 1.0.0.

If there is anything missing, please let me know.

//cc @scpeters

Consider exposing urdfdom_headers version in a header file

It seems the API changes introduced by version 1.0 are relatively small; switching to use C++11 instead of boost. If so, consumer libraries (like DART) could support for version 1.0 and other lesser versions with some preprocessors depending on the versions.

One issue of doing this is that urdfdom_headers doesn't expose the version numbers in the header files so that consumer libraries have to extract the version numbers from CMake variables. I propose exposing urdfdom_headers version in a header file, or it would nicer if anyone knows better way to get the version numbers in consumer libraries.

Installing from source - Noetic on Bionic

Hi, I am trying to properly install this package (along with URDF, URDFdom, and related packages) on a Jetson Xavier NX. Ideally, we want to install it in a ROS Noetic docker, but because the Xavier NX is based on Ubuntu 18.04 aarch64 architecture, many debian packages are not available for easy installation. Thus, I am trying to do most of it from source.

When I run catkin_make, or when I follow the instructions here, I keep running into the error that urdfdom_headers cannot be found. I thought that this might have to do with the missing package.xml file, as suggested here, but when I run the following command, I get a 404 error that nothing is found:

wget https://raw.github.com/ros-gbp/urdfdom_headers-release/debian/noetic/bionic/urdfdom_headers/package.xml

Do you have any suggestion for getting all of this to work together? Is there a Noetic/Bionic package.xml file that is the missing piece to the puzzle? I also searched for /melodic/bionic/ in the hopes that it would transfer, but this was also not found.

Please let me know if you've come across similar issues that could improve my understanding, or if there might be an easier way to get this working.

Arch dependent paths

It looks like #26 updated the code to install the cmake module configs to arch dependent paths based on checks that the cmake package version script is making.

The problem is that urdfdom-headers really is architecture independent, and making it architecture dependent doesn't really buy you anything. It just makes it harder to package.

I think the better solution would have been to disable the architecture check instead of updating the install path. The documentation recommends using custom confg-version.pc.in instead of using the helpers if the version checks should be altered. It also looks like you can work around the version checks in the default templates by adding set(CMAKE_SIZEOF_VOID_P "") to CMakeLists.txt. That seems to work in my testing, but it's a little bit hacky.

I filed a bug against cmake to add an option to disable the architecture check, but any changes there won't help in the near term

Also, the pkg-config file is being installed to lib/pkgconfig. It's also architecture independent, so it should be going to share/pkgconfig.

Move URDF specification to a Github repo?

I think this has been already discussed in the past, but I could not find an issue tracking explicitly this.

As the URDF spec is moving towards support an explicit versioning of the spec (at least this is what I understood from ros/urdfdom#133 and #59), I think it would be great to have some way to separate the specification of the URDF format as defined until now, and future versions of the spec. Furthermore, it would be great to have a single place where discuss new features of the URDF spec, instead of using issues in the repos that implement the specification (as now it happens with https://github.com/ros/urdfdom_headers and https://github.com/ros/urdfdom).

A possible solution that would not take a lot of effort would be to create a GitHub repo to host the specifications, so that release and improvements can be handled with the usual GitHub tools (such as tag/releases, pull requests, issues). To start with a minimum viable example, we can just convert the existing URDF wiki pages to documents stored in a GitHub repo (in a format such as Markdown, reStructuredText or AsciiDoc).

If the URDF mantainers agree on this, if necessary I would be happy to volunteer to handle the migration of the contents from the ROS wiki to a repo.

Release for bionic doesn't include #42

This PR doesn't seem to have made it into the packaged urdfdom_headers in bionic. The 1.0.0 tag on this repo doesn't seem to include this PR, and the source code zip for 1.0.0-1 listed at https://packages.ubuntu.com/bionic/amd64/liburdfdom-headers-dev doesn't include the strToDouble function, so there doesn't look to have been a new release since.

I know that this is released as an upstream ubuntu package, which brings some limitations on what/when it can be released, so there may be reasons that the version in bionic does not include that PR. But from @clalancette's comment referencing getting it in before melodic, I was expecting it to be included.

The issue it addresses is affecting a number of rviz users in a pretty severe way after upgrading to artful/bionic (see ros-visualization/rviz#1249, ros-visualization/rviz#1151), and is quite difficult to track down if you don't know to be looking at locales. Is it possible that it can be pushed to bionic somehow?

Forking URDFDom?

There are many desired changes to the URDF spec that are needed for projects like MoveIt and Tesseract that have not been merged into this repo. This has been an issue for many years - the spec is basically unchanged while the SDF format goes through many many iterations. This is hurting the ROS project. A good discussion to get a sense of this issue is here

Based on today's MoveIt Maintainer meeting, we are considering forking this URDF project so that new features can be added. This is not an ideal outcome because we don't want to fracture the ROS community and have code duplication. As I understand it, ROS-Industrial already has forked it.

In order to prevent a fork, we believe URDFDom needs to be released within ROS, not Ubuntu Universe, so that changes can be released more frequently. We also believe we need a more aggressive policy in breaking things, especially between ROS versions, so forward progress can be made.

I may have missed some key points here as I don't follow every detail of the URDF project, but I've been following this project loosely for years and am trying to sum up my observations and the feedback I've heard from others.

How can we get the long list of PRs/improvements in this repo merged without the fear of breaking something?

@scpeters @jmirabel @rhaschke @tfoote @Levi-Armstrong

0.4.1 version

It looks like 0.4.1 was released with version 0.4.0 in CMakeLists.txt. Was this just an oversight?

Parsing floats in URDF yields wrong value depending on locale

urdfdom_headers uses std::stod to parse floating point values like position (xyz) and rotation (rpy) from URDF files. The result of std::stod is locale dependant. So with e.g. a German locale (de_DE.UTF-8) "1.57079632679" is parsed to 1.
This is the case in urdfdom_headers/urdf_model/include/urdf_model/pose.h Line 70 (not necessarily exclusive)

In my opinion the issue described here can be linked to this error, as can be the issue described here.

This link states that "[...] using a stringstream to convert it worked perfectly fine."

If desired I can fix this issue using stringstream and create a pull request, but I have to admit I have no background knowledge in ros package building and testing procedures.

Cheers

Patch 1.0.6 breaks include paths for urdf

This patch includes MR: #71

This moves the default include paths to be under the name urdfdom_headers. I believe this is a breaking change, because this moves all the headers to a new location, so should not have been a patch release.

This breaks our build using conda, which depend on the major version. Urdf: https://github.com/ros/urdf has also not been updated to reflect this.

I think we should revert the patch release and make a major release for this change.

ROS Kinect build failure on raspbian

Built urdfdom_headers as an external build for Raspbian version:
Linux raspberrypi 4.9.28+ #998 Mon May 15 16:50:35 BST 2017 armv6l GNU/Linux

Version of urdfdom_headers:
pi@raspberrypi:~/ros_catkin_ws/external_src/urdfdom_headers $ git log
commit 5cb0b6b
Merge: 76da8dc 9d2b421
Author: Steven Peters [email protected]
Date: Wed Jul 20 10:47:51 2016 -0700

Merge pull request #23 from scpeters/unboost

Use c++11 instead of boost, bump version to 1.0.0

Obtained ROS packages to build as follows:

rosinstall_generator ros_comm --rosdistro kinetic --deps --wet-only --tar > kinetic-ros_comm-wet.rosinstall
rosinstall_generator ros_comm ros_control joystick_drivers laser_geometry tf --rosdistro kinect --deps --wet-only --exclude roslisp --tar > kinect-custom_ros.kinect

Resolved package dependencies:
assimp-3.1.1
collada-dom-2.4.0
console-bridge-0.3.2
urdfdom
urdfdom_headers -> renamed as:

apt list --installed | grep urd
liburdfdom-dev/now 20170703-1 armhf [installed,local]
liburdfdom-headers-dev/now 20170703-1 armhf [installed,local]

Tried to build ROS as follows:
sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/kinetic -j1

After many hours, it failed building robot_state_publisher. Here is a snippet:
/opt/ros/kinetic/include/urdf/urdfdom_compatibility.h:93:14: error: ‘shared_ptr’ in namespace ‘std’ does not name a template type
typedef std::shared_ptr ModelInterfaceSharedPtr;
^
/opt/ros/kinetic/include/urdf/urdfdom_compatibility.h:94:14: error: ‘shared_ptr’ in namespace ‘std’ does not name a template type
typedef std::shared_ptr ModelInterfaceConstSharedPtr;
^
/opt/ros/kinetic/include/urdf/urdfdom_compatibility.h:95:14: error: ‘weak_ptr’ in namespace ‘std’ does not name a template type
typedef std::weak_ptr ModelInterfaceWeakPtr;
^
/opt/ros/kinetic/include/urdf/urdfdom_compatibility.h:100:14: error: ‘shared_ptr’ in namespace ‘std’ does not name a template type
typedef std::shared_ptr ModelSharedPtr;
^
/opt/ros/kinetic/include/urdf/urdfdom_compatibility.h:101:14: error: ‘shared_ptr’ in namespace ‘std’ does not name a template type
typedef std::shared_ptr ModelConstSharedPtr;
^
/opt/ros/kinetic/include/urdf/urdfdom_compatibility.h:102:14: error: ‘weak_ptr’ in namespace ‘std’ does not name a template type
typedef std::weak_ptr ModelWeakPtr;
^
/home/pi/ros_catkin_ws/src/robot_state_publisher/src/robot_state_publisher.cpp: In member function ‘virtual void robot_state_publisher::RobotStatePublisher::addChildren(std::map<std::basic_string, KDL::TreeElement>::const_iterator)’:
/home/pi/ros_catkin_ws/src/robot_state_publisher/src/robot_state_publisher.cpp:68:20: error: ‘const class urdf::Model’ has no member named ‘getJoint’
if (model_.getJoint(child.getJoint().getName()) && model_.getJoint(child.getJoint().getName())->type == urdf::Joint::FLOATING){
^
/home/pi/ros_catkin_ws/src/robot_state_publisher/src/robot_state_publisher.cpp:68:67: error: ‘const class urdf::Model’ has no member named ‘getJoint’
if (model_.getJoint(child.getJoint().getName()) && model_.getJoint(child.getJoint().getName())->type == urdf::Joint::FLOATING){
^
CMakeFiles/robot_state_publisher_solver.dir/build.make:62: recipe for target 'CMakeFiles/robot_state_publisher_solver.dir/src/robot_state_publisher.cpp.o' failed
make[2]: *** [CMakeFiles/robot_state_publisher_solver.dir/src/robot_state_publisher.cpp.o] Error 1
CMakeFiles/Makefile2:573: recipe for target 'CMakeFiles/robot_state_publisher_solver.dir/all' failed
make[1]: *** [CMakeFiles/robot_state_publisher_solver.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2
<== Failed to process package 'robot_state_publisher':

Now I have dug into this and it appears to be when the Boost pointers where removed for C++11 with a compatibility header. I have the latest version of the headers and urdf and it is not clear what I should try next. Do you have any hints? I need to run Kinetic, I had a functioning version of Indigo, but I will be working with the Nvidia Jetson TX2 which runs Kinetic so want the two to be compatible.
Thank you for any help you can offer and if you need further details, please don't hesitate to ask.

README: Should have cross-references between urdfdom_headers and urdfdom?

Both the READMEs in this repo and urdfdom do not reference each other at the top-level, which is confusing. I don't know when I should make an issue for urdfdom_headers or urdfdom, esp. related to the specification vs. implementation or whatever.

It would be nice if there were explicit guidance on that:
https://github.com/ros/urdfdom_headers/tree/2acf769db0f70205efd612830e2b2f2807862d80
https://github.com/ros/urdfdom/tree/0da4b20675cdbe14b532d484a1c17df85b4e1584
https://github.com/ros/urdf/tree/52a4d5973c4fe8fc60f6ae09d532b8043ce46d28

Relates SDFormat repo split as well:
gazebosim/sdf_tutorials#2
gazebosim/sdf_tutorials#10 (issue template)

Motivated by these cross-repo issues:
#59
ros/urdfdom#138

Incorrect handling of rpy triple near the rpy singularity

Commit 96b8a4b (in PR #11) introduced a regression in handling rpy triple with a pitch value of M_PI/2 or -M_PI/2.

In particular the rpy triple 0.0 -M_PI/2 0.0 is now converted (incorrectly) to the rotation matrix:

 0   0  -1
 0  -1   0
-1   0   0

instead of the correct:

 0   0  -1
 0   1   0
 1   0   0

The regression is quite critical because it can cause software loading urdf with rpy triples like ``0.0 -M_PI/2 0.0` to load a corrupted model. The user risks to not understand that something is going wrong because no error message is generated.

Downstream bug: robotology/idyntree#79 .

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.