Giter VIP home page Giter VIP logo

marti_common's Introduction

MARTI Common

This repository provides various utility packages created at Southwest Reseach Institute's Intelligent Vehicle Systems section for working with Robot Operating System(ROS). This branch adds support for ROS 2 Dashing and newer releases. Most packages from ROS 1 have been ported, but a few have been removed due to being unnecessary or redundant, and some functionality is not implemented yet.

Build Status

ROS2 Distro Branch Build status Released packages
Humble humble CI
ROS2 Build Farm
ROS2 Build Farm
swri_cli_tools
swri_console_util
swri_dbw_interface
swri_geometry_util
swri_image_util
swri_math_util
swri_opencv_util
swri_math_util
swri_roscpp
swri_route_util
swri_serial_util
swri_system_util
swri_transform_util
Iron iron CI
ROS2 Build Farm
ROS2 Build Farm
swri_cli_tools
swri_console_util
swri_dbw_interface
swri_geometry_util
swri_image_util
swri_math_util
swri_opencv_util
swri_math_util
swri_roscpp
swri_route_util
swri_serial_util
swri_system_util
swri_transform_util
Rolling rolling CI
ROS2 Build Farm
ROS2 Build Farm
swri_cli_tools
swri_console_util
swri_dbw_interface
swri_geometry_util
swri_image_util
swri_math_util
swri_opencv_util
swri_math_util
swri_roscpp
swri_route_util
swri_serial_util
swri_system_util
swri_transform_util

Overview

What's changed in the ROS 2 port?

Removed packages:

  1. marti_data_structures
    Nothing used this and it only contained a linked list
  2. swri_nodelet
    Obsolete due to ROS 2's component mechanism
  3. swri_rospy
    Unnecessary in ROS 2
  4. swri_string_util
    Equivalent functionality is provided by boost
  5. swri_yaml_util
    This package only existed in order to bridge nodes between ROS Hydro and ROS Indigo; use yaml-cpp directly now

Package migration notes:

  1. swri_image_util
    replace_colors_node has not been ported from ROS 1 yet due to extensive changes in how ROS parameters work

Installation (ROS 2 Humble, Iron, Rolling)

If you have installed ROS 2, you can install any of the packages in this repository with apt-get:

sudo apt-get install ros-${ROS_DISTRO}-<package>

Building From Source (ROS 2 Humble, Iron, Rolling)

These directions assume you have already set up rosdep. See the rosdep documentation on the ROS wiki for help setting up rosdep.

  1. If you don't have a colcon workspace, create one:

    mkdir $HOME/workspace/src
    cd $HOME/workspace/src
  2. Check out the source code

    cd $HOME/workspace/src
    git clone https://github.com/swri-robotics/marti_common.git
  3. Install dependencies:

    # (In the root of this repository)
    rosdep install --from-paths . --ignore-src
  4. Build

    cd $HOME/workspace
    colcon build

marti_common's People

Contributors

agyoungs avatar cottsay avatar danthony06 avatar elliotjo avatar evenator avatar facontidavide avatar jatowler avatar jayherpin avatar jgassaway avatar kimmat avatar kinddragon avatar lopsided98 avatar matt-attack avatar mikaelarguedas avatar mschickler avatar nick-alton avatar pjreed avatar rjb0026 avatar ryandelgizzi avatar tiffanyec avatar vincentrou avatar vknisley-swri 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

Watchers

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

marti_common's Issues

Flaky Tests in swri_transform_util

All of the tests that depend on interaction with initialize_origin.py (transform_manager.test, local_xy_util.test) have potential race conditions that make the tests flaky. They seem to fail more on heavily-loaded systems (i.e. systems that are simultaneously building other code).

initialize_origin.py not installed

Hello,

I try to invoke the initialize_origin.py script from my launch file as such:

    <node pkg="swri_transform_util" type="initialize_origin.py" name="initialize_origin" >
        <param name="local_xy_frame" value="/map"/>
        <param name="local_xy_origin" value="Spata"/>
        <rosparam param="local_xy_origins">
            [{ name: Spata,
             latitude: 37.9879772,
             longitude: 23.9078602,
             altitude: 129.69,
             heading: 0.0}]
        </rosparam>
    </node>

I get the error:

ERROR: cannot launch node of type [swri_transform_util/initialize_origin.py]: can't locate node [initialize_origin.py] in package [swri_transform_util]

catkin can't see the python script as executable.

I fixed it by chmod +x the .py script, but it's not ideal.
I noticed that you recently added an install target to the script but perhaps it doesn't work?

I have the latest version of marti_common git pulled in my workspace.

typedef conflict between geos and opencv2 when building on Xenial

When building on Ubuntu 16.04, the swri_geometry_util fails due to the following error:

In file included from /usr/include/geos/geom/CoordinateSequence.h:19:0,
                from /usr/include/geos/geom/CoordinateArraySequence.h:21,
                 from /root/ros/ws_ci_src/src/ci_src/swri_geometry_util/src/intersection.cpp:34:
/usr/include/geos/platform.h:66:26: error: conflicting declaration 'typedef long long int int64'
    typedef long long int int64;                      
                          ^
In file included from /usr/include/opencv2/core/core.hpp:49:0,
                from /root/ros/ws_ci_src/src/ci_src/swri_geometry_util/include/swri_geometry_util/intersection.h:31,
               from /root/ros/ws_ci_src/src/ci_src/swri_geometry_util/src/intersection.cpp:32:
/usr/include/opencv2/core/types_c.h:163:20: note: previous declaration as 'typedef int64_t int64'
    typedef int64_t int64;                            
                    ^

Negative route distances are marginal, not cumulative

Arc lengths before the start point will always be the (negative) distance between the current point and the next, instead of the cumulative distance backward from the start point.

https://github.com/swri-robotics/marti_common/blob/indigo-devel/swri_route_util/src/util.cpp#L468
https://github.com/swri-robotics/marti_common/blob/indigo-devel/swri_route_util/src/util.cpp#L483

In both cases, the code should probably look something like

arc_lengths[i] = arc_lengths[i+1] - (pt2-pt1).length();
                              ^---change to plus

Remove gps_common dependency for ROS Jade

gps_common still hasn't been released for ROS Jade, and it looks like it's been superseded by sensor_msgs/NavSatFix ana sensor_msgs/NavSatStatus. swri_transform_util currently uses gps_common/GPSFix for the local XY origin message. We should replace these with sensor_msgs/NavSatFix or perhaps geometry_msgs/PoseStamped

Modify the Travis CI build to install OpenCV3

marti_common uses OpenCV 2 and actually does not depend on 3 at all, but having 3 installed is useful for testing the build scripts because it will cause the builds to fail if they don't explicitly depend on 2.

Install swri_prefix_tools

The prefix scripts need to be installed to the CATKIN_PACKAGE_SHARE_DESTINATION so they can be used from an installed package.

FindGeos.cmake fails on Ubuntu Xenial

Because the path to libgeos is now /usr/lib/x86_64-linux-gnu/geos-3.5.0, the regex to find the library name matches on a portion of the library directory, resulting in broken linker flags:

[swri_geometry_util:cmake] -- Found GEOS: inux-gnugeos-3.5.0 (version: 3.5.0, includes: /usr/include)

...

[swri_geometry_util:make] [100%] Linking CXX shared library /root/ros/ws_ci_src/devel/.private/swri_geometry_util/lib/libswri_geometry_util.so
[swri_geometry_util:make] /usr/bin/cmake -E cmake_link_script CMakeFiles/swri_geometry_util.dir/link.txt --verbose=1
[swri_geometry_util:make] /usr/bin/c++  -fPIC   -shared -Wl,-soname,libswri_geometry_util.so -o /root/ros/ws_ci_src/devel/.private/swri_geometry_util/lib/libswri_geometry_util.so CMakeFiles/swri_geometry_util.dir/src/intersection.cpp.o CMakeFiles/swri_geometry_util.dir/src/polygon.cpp.o CMakeFiles/swri_geometry_util.dir/src/geometry_util.cpp.o CMakeFiles/swri_geometry_util.dir/src/cubic_spline.cpp.o /opt/ros/kinetic/lib/libtf.so /opt/ros/kinetic/lib/libtf2_ros.so /opt/ros/kinetic/lib/libactionlib.so /opt/ros/kinetic/lib/libmessage_filters.so /opt/ros/kinetic/lib/libroscpp.so -lboost_signals -lboost_filesystem /opt/ros/kinetic/lib/libxmlrpcpp.so /opt/ros/kinetic/lib/libtf2.so /opt/ros/kinetic/lib/libroscpp_serialization.so /opt/ros/kinetic/lib/librosconsole.so /opt/ros/kinetic/lib/librosconsole_log4cxx.so /opt/ros/kinetic/lib/librosconsole_backend_interface.so -llog4cxx -lboost_regex -lboost_chrono -lboost_atomic /opt/ros/kinetic/lib/librostime.so -lboost_date_time /opt/ros/kinetic/lib/libcpp_common.so -lboost_system -lboost_thread -lpthread -lconsole_bridge /usr/lib/x86_64-linux-gnu/libopencv_videostab.so.2.4.9 /usr/lib/x86_64-linux-gnu/libopencv_superres.so.2.4.9 /usr/lib/x86_64-linux-gnu/libopencv_stitching.so.2.4.9 /usr/lib/x86_64-linux-gnu/libopencv_ocl.so.2.4.9 /usr/lib/x86_64-linux-gnu/libopencv_gpu.so.2.4.9 /usr/lib/x86_64-linux-gnu/libopencv_contrib.so.2.4.9 -linux-gnugeos-3.5.0 /usr/lib/x86_64-linux-gnu/libopencv_photo.so.2.4.9 /usr/lib/x86_64-linux-gnu/libopencv_legacy.so.2.4.9 /usr/lib/x86_64-linux-gnu/libopencv_video.so.2.4.9 /usr/lib/x86_64-linux-gnu/libopencv_objdetect.so.2.4.9 /usr/lib/x86_64-linux-gnu/libopencv_ml.so.2.4.9 /usr/lib/x86_64-linux-gnu/libopencv_calib3d.so.2.4.9 /usr/lib/x86_64-linux-gnu/libopencv_features2d.so.2.4.9 /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4.9 /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.2.4.9 /usr/lib/x86_64-linux-gnu/libopencv_flann.so.2.4.9 /usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4.9 -Wl,-rpath,/opt/ros/kinetic/lib: 
[swri_geometry_util:make] /usr/bin/ld: cannot find -linux-gnugeos-3.5.0

Need an RPM Key for libgeos++

Right now, the bloom script complains that there is no key for installing libgeos++ in fedora:heisenbug. You can just tell it to skip the generator for that distribution (and really, who's running ROS on non-Ubuntu systems?) but we should figure out what the RPM key is for that library and add it to the rosdep db.

swri_roscpp changelog cannot have future versions in it

debian packaging takes the highest changelog. Thus debian's buildpackage is tagging your package with 0.1.0 not 0.0.6

https://github.com/swri-robotics/marti_common/blob/indigo-devel/swri_roscpp/CHANGELOG.rst#010-2015-09-29

See the console output here: http://jenkins.ros.org/view/Isrc/job/ros-indigo-swri-roscpp_sourcedeb/41/console which means that this job is continuously triggering and rebuilding trying to get the version declared in the rosdistro.

Our nextgen buildfarm is more strict and it's failing every cycle: http://54.183.26.131:8080/view/Isrc_uT/job/Isrc_uT__swri_roscpp__ubuntu_trusty__source/73/console

update xterm_prefix for latest psutil version

xterm_prefix in swri_prefix_tools calls .get_children() on a psutil Process object. The name of this function has been changed to .children() in the latest version:
http://grodola.blogspot.com/2014/01/psutil-20-porting.html
Maybe other changes are required, because I made this change and the function still fails to find any children. The function terminates at:
if grandchild is None:
print "Found no running process for node. Quitting."
sys.exit(1)

FYI, I'm using swri_prefix_tools in combination with swri_nodelet, in case that's relevant.

Add parameter to set local_xy_frame.

local_xy_util was recently changed to read the local_xy_frame from the header of the local_xy_origin GPS message. This is the preferred way to set the origin, but is incompatible with older bag files that were recorded before the change.

A straightforward way to work around this problem is to add a global parameter /local_xy_frame that can be used to set the origin. We could either have the local_xy_frame parameter always override the local_xy_origin frame, or just use it as a fallback when the frame_id empty.

Remove can_util package

This is an outdated package that is not actively used anymore and not recommended for use.

Contribution Guide

It would be helpful to have a document outlining the guidelines for contributing to the project, both for SwRI folks and for community contributors. It would lay out things like issue tracking, branch management, and code style.

I've started work on a document for this. When I finish a draft, I'll make a PR.

Rename Packages to be Less Generic

@dirk-thomas raised the objection that most of the package names in this repository are overly generic. I plan to rename all of the packages with swri_ prefixes. This change should only be applied in the indigo-devel branch.

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.