-
Notifications
You must be signed in to change notification settings - Fork 22
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
Feature/mw/fields2cover2 #53
base: main
Are you sure you want to change the base?
Conversation
This reverts commit 3669e7d.
This reverts commit aa2cf20.
This reverts commit 668abc4.
Signed-off-by: Mike Wake <michael.wake@aosgrp.com.au>
Signed-off-by: Mike Wake <michael.wake@aosgrp.com.au>
Use tinyxml2_vendor properly. Like in ros/pluginlib IOW first find_package(tinyxml2_vendor REQUIRED) which sets up a module path that provides a module for find_package(TinyXML2 REQUIRED) to work Signed-off-by: Mike Wake <michael.wake@aosgrp.com.au>
* fields2cover now initialises memory and provides getters/setters so previous incorrectly/partially initialised data no longer throws * Order of args for f2c::Random::generateRandField() changed to (area, sides), was (sides, area). Tests now don't spin forever Signed-off-by: Mike Wake <michael.wake@aosgrp.com.au>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Generally looks good to me, but you have some linting issues that CI is unhappy about that we need resolved and the build doesn't turn over :(
I have no meaningful comments on your port to v2's API - that all looks great.
Either the lines are too long for uncrustify or have wrong style for the cpplint.
|
These are lines that this PR touches, please heed the formatting requirements :-) |
Use intermediate variables for PathSectionType to keep within line lenght limit requirements.
Hi @mikolodz, My environment is humble on ubuntu22.04. However I do build personal snapshots of navigation2, fields2cover and opennav_coverage and robot_localisation that I periodically bring close to rolling since I really want to use and understand how to tune nav2_mppi_controller, nav2_smac_planner and nav2_behavior_tree. I do worry about the improvements/fixes to the lower layers rclcpp/rcl that I may be missing out on. This PR and work on Fields2Cover packaging is my attempt at giving back. I am dipping in and out of this PR fighting with the flux of noble/ubuntu 24.04/python3.12 removals(imp)/rosdep breakage/colon empyv4 incompatibility. Alot of my recent changes to this PR are fighting the github action build, most of which should ultimately be squashed away and probably removed once the lower layers of infrastructure are again functional. The problems on the bleeding edge are deep but I am seeking to contribute fixes/ideas/workarounds. I thought initially I might get away with a tweak or two to. I am being drawn in and going deeper down into the stack understanding more and more how the infrastructure works. A good thing. BTW I also would like to use some of the new awesome SLAM stuff like LIO-EKF (https://github.com/YibinWu/LIO-EKF) (Currently ROS1) As for compatible with Humble. The policy appears to be, get it working on rolling first, and then potentially backport. |
noble_rolling now hitting warning as error in behaviortree_cpp. /opt/ros/rolling/include/behaviortree_cpp/controls/switch_node.h:91:15: error: declaration of ‘ports’ shadows a previous local [-Werror=shadow] This is fixed in BehaviorTree/BehaviorTree.CPP@97c3f6a Which is in https://github.com/BehaviorTree/BehaviorTree.CPP/releases/tag/4.6.0 |
Thank you @aosmw I truly admire your patience. I've been working with SC-LIO-SAM (ROS1) for a while and got it running with gazebo & Nav2. Wasn't as easy as I expected :) Currently, I'm stuck with the fields2cover, and this is why I'm here asking you questions and observing your efforts. Do you think I could use your snapshots to build your fork for Humble? As I said before, I have some linking issues and felt like I'm not sure if I should invest another day or two getting through it not knowing if it will work at all. But now, when you confirm that you're using a similar setup as I use, it gives me new motivation to give it a try. |
This is so that nav2 can build with -Werror against behaviortree_cpp v4.6
noble_rolling is not finding libyaml-cpp-dev via https://github.com/ros2/yaml_cpp_vendor. Needs something like this ros-navigation/navigation2#4267 [ 22%] Linking CXX executable test_map_saver_publisher jammy_rolling - back to same pytest incompatability - https://github.com/ros2/launch/pull/766/files |
There is a separate humble branch - so that all should be more or less fine!
There is no intention for support for ROS 1. Frankly I haven't really thought about ROS 1 in years. If someone wanted to port this all to ROS 1 and have a ROS 1 branch, I wouldn't block it, but I wouldn't implement it
For maintenance reasons, the humble branch will stay on V1 since that was what it was released under and v2 has breaking changes. With that said, I'd be happy to have a
And I genuinely thank you for this @aosmw! I spend alot of my time fighting the good fight working on things like this, so the help is really, truly appreciated!
Ugh. Build from source until that is released too.... I guess...
Precisely! I think we're on the home stretch here, update the action to 24.04 which should fix rosdep & that should be the last of the large problems |
Any word? |
I was going to wake this up again now that ros-navigation/navigation2#4298 has landed. I was also going to look into how to point the github build at the ghcr.io/ros-navigation/navigation2:main docker image. |
nodejs in docker image is required to enable enable local debugging of github actions with https://github.com/nektos/act
This is to try to eliminate the possibility that we are fetching a bad package.
…g-dev for libceres-dev
The build against the source of fields2cover works, ie using the .github/deps.repos mechanism. HOWEVER, ALSO, IOW, FYI, CONCLUSION, |
Great... I thought we'd mentioned that to fix it, but I suppose still no dice.
I'm a little confused by that considering this builds fine in Nav2's CI and for me locally with a 24.04 docker image |
Perhaps it would be easier to manually setup the build like here rather than using the ROS tooling wrappers? |
The image used in the github workflow is currently The main problem of using the Fields2Cover package, (2.0.0-13noble.20240514.144256) right now is the command line flags that the ros buildfarm uses and what they do to the locations of where things get installed prior to creating the debian package. Fields2Cover does not use ament_cmake and I when I started trying to help, I tried to workaround what was there. I introduced the use of cmake Digging down into it the command that is getting run by the ros build farm to create the package - https://build.ros2.org/job/Rbin_uN64__fields2cover__ubuntu_noble_amd64__binary/77/console and wrapping it in a script to reproduce locally
Notice the I have some ideas to get it to play nicely (in a ros package install) that I am playing around with. My aim is to find a way to get the ortools sfuff installed in /opt/ros/rolling/opt/f2c_ortools while still working for a non-ros/non-ament build. THIS Fields2Cover/Fields2Cover#146 (remove libabsl-dev from Fields2Cover/package.xml) might be a simple fix for now but the way the Fields2Cover package is dumping ortools artifacts into /opt/ros/rolling should really be improved so I will keep plugging away at it. |
Great!! For the meantime though would it be useful to just build F2C in CI here from a But fixing F2C to have the binaries work well is useful. If we're having issues here, I presume anyone else trying to use the binaries would also have a similar issue. |
Update Fields2Cover to v2 api.
Uses Fields2Cover/ortools_vendor#2 and Fields2Cover/Fields2Cover#126
This builds on behavior tree update PR 43 by @tonynajar.