ros-drivers / ros2_ouster_drivers

ROS2 Drivers for the Ouster OS-0, OS-1, and OS-2 Lidars
https://ouster.com/
Apache License 2.0
134 stars 79 forks source link

Request to give ROS2 Master branch support. #64

Closed Mohit-Ak closed 3 years ago

Mohit-Ak commented 3 years ago

Currently, I see that the last code commit for the driver is a few months old and I believe it is not much of an effort to maintain a ROS2 Master branch that can compile with the latest ROS2. I would have helped but I am not very good at writing C++ drivers for ROS2.

OS: Ubuntu 20.04 ROS2: Master Branch Sensor: OS-32

Steps to reproduce:

It is a long trace but just posting a part of it.

In file included from /home/bautomation/ros_ws_foxy/ros2_ws/install/geometry_msgs/include/geometry_msgs/msg/detail/pose_with_covariance_stamped__traits.hpp:19,
                 from /home/bautomation/ros_ws_foxy/ros2_ws/install/geometry_msgs/include/geometry_msgs/msg/pose_with_covariance_stamped.hpp:9,
                 from /home/bautomation/ros_ws_foxy/ros2_ws/install/tf2_geometry_msgs/include/tf2_geometry_msgs/tf2_geometry_msgs.h:45,
                 from /home/bautomation/ba_pontoon_ros2/src/ros2_ouster_drivers/ros2_ouster/include/ros2_ouster/conversions.hpp:33,
                 from /home/bautomation/ba_pontoon_ros2/src/ros2_ouster_drivers/ros2_ouster/include/ros2_ouster/ouster_driver.hpp:21,
                 from /home/bautomation/ba_pontoon_ros2/src/ros2_ouster_drivers/ros2_ouster/include/ros2_ouster/driver_types.hpp:17,
                 from /home/bautomation/ba_pontoon_ros2/src/ros2_ouster_drivers/ros2_ouster/src/driver_types.cpp:18:
/home/bautomation/ros_ws_foxy/ros2_ws/install/geometry_msgs/include/geometry_msgs/msg/detail/pose_with_covariance__traits.hpp: In function ‘void rosidl_generator_traits::to_yaml(const PoseWithCovariance&, std::ostream&, size_t)’:
/home/bautomation/ros_ws_foxy/ros2_ws/install/geometry_msgs/include/geometry_msgs/msg/detail/pose_with_covariance__traits.hpp:49:9: error: ‘value_to_yaml’ was not declared in this scope
   49 |         value_to_yaml(item, out);
      |         ^~~~~~~~~~~~~
/home/bautomation/ba_pontoon_ros2/install/ouster_msgs/include/ouster_msgs/msg/detail/metadata__traits.hpp:148:5: error: ‘value_to_yaml’ was not declared in this scope
  148 |     value_to_yaml(msg.firmware_rev, out);
      |     ^~~~~~~~~~~~~
/home/bautomation/ba_pontoon_ros2/install/ouster_msgs/include/ouster_msgs/msg/detail/metadata__traits.hpp:158:5: error: ‘value_to_yaml’ was not declared in this scope
  158 |     value_to_yaml(msg.imu_port, out);
      |     ^~~~~~~~~~~~~
/home/bautomation/ba_pontoon_ros2/install/ouster_msgs/include/ouster_msgs/msg/detail/metadata__traits.hpp:168:5: error: ‘value_to_yaml’ was not declared in this scope
  168 |     value_to_yaml(msg.lidar_port, out);
      |     ^~~~~~~~~~~~~
In file included from /home/bautomation/ba_pontoon_ros2/install/ouster_msgs/include/ouster_msgs/msg/metadata.hpp:9,
                 from /home/bautomation/ba_pontoon_ros2/src/ros2_ouster_drivers/ros2_ouster/include/ros2_ouster/conversions.hpp:34,
                 from /home/bautomation/ba_pontoon_ros2/src/ros2_ouster_drivers/ros2_ouster/include/ros2_ouster/ouster_driver.hpp:21,
                 from /home/bautomation/ba_pontoon_ros2/src/ros2_ouster_drivers/ros2_ouster/include/ros2_ouster/driver_types.hpp:17,
                 from /home/bautomation/ba_pontoon_ros2/src/ros2_ouster_drivers/ros2_ouster/src/driver_types.cpp:18:
/home/bautomation/ba_pontoon_ros2/install/ouster_msgs/include/ouster_msgs/msg/detail/metadata__traits.hpp: In function ‘void rosidl_generator_traits::to_yaml(const Metadata&, std::ostream&, size_t)’:
/home/bautomation/ba_pontoon_ros2/install/ouster_msgs/include/ouster_msgs/msg/detail/metadata__traits.hpp:28:5: error: ‘value_to_yaml’ was not declared in this scope
   28 |     value_to_yaml(msg.hostname, out);
      |     ^~~~~~~~~~~~~
/home/bautomation/ba_pontoon_ros2/install/ouster_msgs/include/ouster_msgs/msg/detail/metadata__traits.hpp:38:5: error: ‘value_to_yaml’ was not declared in this scope
   38 |     value_to_yaml(msg.lidar_mode, out);
      |     ^~~~~~~~~~~~~
/home/bautomation/ba_pontoon_ros2/install/ouster_msgs/include/ouster_msgs/msg/detail/metadata__traits.hpp:48:5: error: ‘value_to_yaml’ was not declared in this scope
   48 |     value_to_yaml(msg.timestamp_mode, out);
      |     ^~~~~~~~~~~~~
/home/bautomation/ba_pontoon_ros2/install/ouster_msgs/include/ouster_msgs/msg/detail/metadata__traits.hpp:66:9: error: ‘value_to_yaml’ was not declared in this scope
   66 |         value_to_yaml(item, out);
      |         ^~~~~~~~~~~~~
/home/bautomation/ba_pontoon_ros2/install/ouster_msgs/include/ouster_msgs/msg/detail/metadata__traits.hpp:86:9: error: ‘value_to_yaml’ was not declared in this scope
   86 |         value_to_yaml(item, out);
      |         ^~~~~~~~~~~~~
/home/bautomation/ba_pontoon_ros2/install/ouster_msgs/include/ouster_msgs/msg/detail/metadata__traits.hpp:106:9: error: ‘value_to_yaml’ was not declared in this scope
  106 |         value_to_yaml(item, out);
      |         ^~~~~~~~~~~~~
/home/bautomation/ba_pontoon_ros2/install/ouster_msgs/include/ouster_msgs/msg/detail/metadata__traits.hpp:126:9: error: ‘value_to_yaml’ was not declared in this scope
  126 |         value_to_yaml(item, out);
      |         ^~~~~~~~~~~~~
/home/bautomation/ba_pontoon_ros2/install/ouster_msgs/include/ouster_msgs/msg/detail/metadata__traits.hpp:138:5: error: ‘value_to_yaml’ was not declared in this scope
  138 |     value_to_yaml(msg.serial_no, out);
      |     ^~~~~~~~~~~~~
/home/bautomation/ba_pontoon_ros2/install/ouster_msgs/include/ouster_msgs/msg/detail/metadata__traits.hpp:148:5: error: ‘value_to_yaml’ was not declared in this scope
  148 |     value_to_yaml(msg.firmware_rev, out);
      |     ^~~~~~~~~~~~~
/home/bautomation/ba_pontoon_ros2/install/ouster_msgs/include/ouster_msgs/msg/detail/metadata__traits.hpp:158:5: error: ‘value_to_yaml’ was not declared in this scope
  158 |     value_to_yaml(msg.imu_port, out);
      |     ^~~~~~~~~~~~~
/home/bautomation/ba_pontoon_ros2/install/ouster_msgs/include/ouster_msgs/msg/detail/metadata__traits.hpp:168:5: error: ‘value_to_yaml’ was not declared in this scope
  168 |     value_to_yaml(msg.lidar_port, out);
      |     ^~~~~~~~~~~~~
make[2]: *** [CMakeFiles/ouster_driver_core.dir/build.make:102: CMakeFiles/ouster_driver_core.dir/src/OS1/OS1_sensor.cpp.o] Error 1
make[2]: *** [CMakeFiles/ouster_driver_core.dir/build.make:63: CMakeFiles/ouster_driver_core.dir/src/driver_types.cpp.o] Error 1
make[2]: *** [CMakeFiles/ouster_driver_core.dir/build.make:76: CMakeFiles/ouster_driver_core.dir/src/ouster_driver.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:134: CMakeFiles/ouster_driver_core.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
SteveMacenski commented 3 years ago

First off, I don't appreciate the insinuations. Not only are they not productive, but they also don't really make me particularly inclined to help fix whatever issues your facing. Especially when those issues aren't caused by this project, as the errors you posted clearly indicates (unless you believe that we're messing around with internal traits of core interfaces for fun).

There hasn't been a commit recently because its been working stably for several months and beyond a few tickets for feature additions, there's not really anything more that's needed for the majority of users as far as ROS2 / master build tasks go.

If you aren't familiar with C++ and unwilling to learn, that's not really our problem.


Now, moving on. Your issue has nothing to do with this driver if you look at the errors. You're having issues with the compiled messages which has nothing to do with this repository, you'd have the same issues elsewhere I bet trying to compile other executibles using those messages. Without knowing alot more about your development environment and source path, there's nothing I can do.

I just compiled ros2 ouster + messages without any build errors (or warnings, for that matter) against the latest ROS2 master branches.

Closing ticket, there's no action for maintainers.

SteveMacenski commented 3 years ago

If I were to wildly guess, I'd guess that your issue is that you sourced your /opt/ros/foxy/install/setup.bash file in one of your workspaces (ros2 master, ouster workspace, etc) in the path which is messing up the paths for interface definitions and that this issue is trivially solved by carefully tracking your source paths.

But please don't assume that you're entitled to personal support when we offer freely available software for everyone to use. Use your best judgement to try to fix the issue and don't assume that every issue you face is our fault.

Mohit-Ak commented 3 years ago

@SteveMacenski I would like to sincerely apologize if the tone of the ticket was offensive. I honestly did not mean it, as you can see from the title of the ticket itself is "Request to give ROS2 Master branch support". Also, in the first sentence, We meant that the code used to compile initially with ROS2 Master but as months went by, felt like the repo got outdated because of the changes to ROS2 base packages. In addition to that, our developers thought that it is because Ouster's default branch is more of a frozen foxy branch, and the latest one was missing. Also, I never demanded free personal support as I did not even know if this is a personal workspace issue or a more generic one. I am just representing a company that has considerably invested in Ouster and this ticket was a consolidation of multiple developer complaints (copy-pasted a few things without the tone check). I believe the company will be more than willing to pay for tech support too if that is an option. Actually, extending the apology, we did not even realize that it was you maintaining this repo and not Ouster's official software development team.

We just thought, how most other ROS2 packages have a "master" branch that is different from "foxy-devel", shouldn't Ouster drivers also follow that approach?

I tried reinstalling ROS2 in a clean slate Ubuntu 20.04 using the script present in the Navigation2 repository but ended up with the same error. All other packages compile fine except for the ros2_ouster. Is there a docker environment you would recommend where I can try the same?

Apologies again @SteveMacenski. I wish I could take back anything hurtful from the above ticket and on a personal scale, I have been a big fan of your work and have been following you since ROSCon 2019.