Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ros2 devel #90

Open
wants to merge 27 commits into
base: ros2
Choose a base branch
from
Open

Ros2 devel #90

wants to merge 27 commits into from

Conversation

pmusau17
Copy link

@pmusau17 pmusau17 commented Aug 5, 2021

ros2 port of ar_track_alvar

@kscottz kscottz self-requested a review August 5, 2021 19:50
@pmusau17
Copy link
Author

pmusau17 commented Aug 5, 2021

friendly ping for review @machinekoder @130s

README Show resolved Hide resolved
else()
message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
if(NOT DEFINED CMAKE_SUPPRESS_DEVELOPER_WARNINGS)
set(CMAKE_SUPPRESS_DEVELOPER_WARNINGS 1 CACHE INTERNAL "No dev warnings")
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this new?

Copy link

@kscottz kscottz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just for notekeeping's sake here is what is happening here:

We were trying to upgrade ALVAR to ROS 2 Foxy (and ROS 1 Noetic). The vendored copy of ALVAR in the package used a number of OpenCV function calls that are currently deprecated. This left us with a number of ways to proceed:

(0) Manually upgrade the vendored package.
(1) Find an upgraded vendor package and shoe horn it in and proceed with the upgrade.
(2) Re-write the ALVAR implementation to use the same fiducials but gut the ALVAR library.

Options 0 and 2 were too time consuming so we went with option 1. The upgraded vendor package had been run through a linter / refactored so it caused massive, gnarly diffs. In retrospect we should have broken this up into a vendor upgrade and then a ROS upgrade. I am going to let this slide as my fault.

I skimmed the ALVAR libraries and didn't see any glaring issues; it is a cut and dried OpenCV upgrade + lint / refactor. The tests, launch files, test data, package files, etc all appear in good working order (even the launch files are tested!). To be perfectly honest I would have thrown out the Kinect support and PR2 support but hey, maybe there are people still using ten year old hardware in a lab somewhere.

I did see one pressing issue. There seems to be a set of wayward VSCode files that need to be removed. This is such a huge PR that I used comments to point these out. These files need to get removed.

As it stands I would need to burn half a day setting up a system to build / test this (I'm overdue for a system upgrade). Let's fix the VSCode lingering files, do a quick demo / walk through, and I'll appove it and see if we can't merge it in.

ar_track_alvar/test/test_launch_files.py Show resolved Hide resolved
@kscottz
Copy link

kscottz commented Aug 26, 2021

@mjcarroll @130s

Patrick put together this first pass at a ROS 2 version of ALVAR for Rolling (it builds on Foxy with some hand holding related to perception PCL). The current issue with the package is that the vendored library (ALVAR) was built around deprecated OpenCV APIs. Patrick used an upgraded version of the vendored package and then ported everything to ROS 2. The upgraded vendor code was formatted differently hence the huge PR. We went throught and resolved my comments, built the package, and ran the tests / examples.

This was a fairly heroic effort and I am not sure if it is worth doing again but this should buy users a few years. We put a deprecation note in the docs to suggest to the 14 downstream packages to look for an alternative solution. There are still a lot of build warnings that need to be addressed as well. We are hoping someone can do this as a subsequent PR. Finally, while the tests and launch files run they require some work to load the ROS 1 bags to run the tests. This feels like it could stand to be a subsequent pull request as well.

TL;DR this is most of the way there but we have a few more steps to get it read for release.

OpenCV
tf2_ros
tf2
pcl_ros

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried run rosdep install --from-paths src --ignore-src --rosdistro foxy -yr during installation, and this is not specified in package.xml. Also realized that pcl_ros is not available as debian in foxy.

Anyway, we can also remove this since that pcl_ros is not used anyway in the code.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @youliangtan I made the changes you suggested

src/Util.cpp
)

target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBRARIES} tinyxml)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To make it compilable, I added find_package(PCL REQUIRED) on top, and alse appended ${PCL_LIBRARIES} here.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants