NVIDIA-ISAAC-ROS / isaac_ros_apriltag

NVIDIA-accelerated Apriltag detection and pose estimation.
https://developer.nvidia.com/isaac-ros-gems
Apache License 2.0
107 stars 19 forks source link

Error following tutorial #31

Closed 23pointsNorth closed 1 year ago

23pointsNorth commented 1 year ago

Following the tutorial on the quick start guide, step 5 generates the following error:

cd /workspaces/isaac_ros-dev && \
  colcon build --symlink-install && \  #<< problematic command
  source install/setup.bash

Error:

--- stderr: isaac_ros_apriltag
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/colcon_core/executor/__init__.py", line 91, in __call__
    rc = await self.task(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/colcon_core/task/__init__.py", line 93, in __call__
    return await task_method(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/colcon_ros/task/ament_cmake/build.py", line 59, in build
    rc = await extension.build(
  File "/usr/lib/python3/dist-packages/colcon_cmake/task/cmake/build.py", line 87, in build
    rc = await self._reconfigure(args, env)
  File "/usr/lib/python3/dist-packages/colcon_cmake/task/cmake/build.py", line 133, in _reconfigure
    buildfile = get_buildfile(cmake_cache)
  File "/usr/lib/python3/dist-packages/colcon_cmake/task/cmake/__init__.py", line 112, in get_buildfile 
    if 'Ninja' in generator:
TypeError: argument of type 'NoneType' is not iterable
---
Failed   <<< isaac_ros_apriltag [0.02s, exited with code 1]
Aborted  <<< isaac_ros_image_pipeline [0.02s]

Summary: 25 packages finished [3.06s]
  1 package failed: isaac_ros_apriltag
  1 package aborted: isaac_ros_image_pipeline
  1 package had stderr output: isaac_ros_apriltag
argument of type 'NoneType' is not iterable
jaiveersinghNV commented 1 year ago

This looks like it might be an error in the colcon tool itself. Are you successfully able to build this workspace if you remove isaac_ros_apriltag and only build the other packages?

I found this issue in colcon-cmake with a merged PR that might address the problem you're seeing.

23pointsNorth commented 1 year ago

Removing isaac_ros_apriltag results in :

Starting >>> isaac_ros_image_pipeline
[4.221s] ERROR:colcon.colcon_cmake.task.cmake.build:Failed to parse previous --cmake-args from '/workspaces/isaac_ros-dev/build/isaac_ros_image_pipeline/cmake_args.last': unexpected EOF while parsing (<unknown>, line 0)
Finished <<< isaac_ros_image_pipeline [1.42s]                     

Summary: 26 packages finished [5.27s]

Patching the colcon-cmake locally as per the issue you referenced, did result in a successful build at that stage of the quick start guide. (Happy to close the issue)

Q: Are you aware how often is the colcon-cmake package updated/released? Feels to me that it hasn't been thought as critical from April - does the standard build process go through the repo?

edit: Running the colcon tests results in:

Starting >>> isaac_ros_stereo_image_proc
--- stderr: isaac_ros_stereo_image_proc                            
Errors while running CTest
Output from these tests are in: /workspaces/isaac_ros-dev/src/build/isaac_ros_stereo_image_proc/Testing/Temporary/LastTest.log
Use "--rerun-failed --output-on-failure" to re-run the failed cases verbosely.
---
Finished <<< isaac_ros_stereo_image_proc [49.0s]        [ with test failures ]
Starting >>> isaac_ros_apriltag
$ cat /workspaces/isaac_ros-dev/src/build/isaac_ros_stereo_image_proc/Testing/Temporary/LastTest.log
Start testing: Jul 25 11:15 GMT
----------------------------------------------------------
End testing: Jul 25 11:15 GMT
jaiveersinghNV commented 1 year ago

I'm not sure at what cadence the colcon-cmake package is released; the release schedule on that GitHub repository shows the most recent release in August 2022. We use the prebuilt Isaac ROS Docker container for most of our development workflows, which has lots of the dependencies baked into the image.

As for the test failure you've reported, could you please send the log file for that test? You can find it under isaac_ros-dev/log/latest_test (assuming that this was the most recent test run).