Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Build issue with humble-future branch of events executor (timer reset support)

Aperta
#2,939 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
25/100
Tipo di issue
Bug
Chiarezza
Da chiarire
Stato di attività
Ferma
Stack tecnologico
cpp

Direzione di ricerca

Inizia riproducendo la build Humble dell’events executor di humble-future e ispeziona rclcpp/src/rclcpp/timer.cpp insieme a rclcpp/include/rclcpp/timer.hpp e detail/cpp_callback_trampoline.hpp. Confronta i commit di rclcpp e rcl per il reset dei timer applicati tramite cherry-pick descritti nel README di events-executor. Il lavoro è completato quando sono stati identificati i commit richiesti o il set di dipendenze richiesto e rclcpp viene compilato correttamente con il supporto per il reset dei timer.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

I’m attempting to use iRobot’s events executor with ROS 2 Humble and am trying to build the humble-future branch of the events executor.

As noted in the README, this branch requires additional support from rclcpp and rcl for resetting timers. I cherry-picked the recommended commits, but I’m running into the following build error when compiling rclcpp:

--- stderr: rclcpp                               
/irobot_ws/src/rclcpp/rclcpp/src/rclcpp/timer.cpp: In member function ‘void rclcpp::TimerBase::set_on_reset_callback(std::function<void(long unsigned int)>)’:
/irobot_ws/src/rclcpp/rclcpp/src/rclcpp/timer.cpp:186:21: error: function template-id ‘cpp_callback_trampoline<rclcpp::TimerBase::set_on_reset_callback(std::function<void(long unsigned int)>)::<lambda(size_t)>, const void*, size_t>’ in nested-name-specifier
  186 |     rclcpp::detail::cpp_callback_trampoline<
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~
  187 |       decltype(new_callback), const void *, size_t>::callback,
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /irobot_ws/src/rclcpp/rclcpp/src/rclcpp/timer.cpp:25:
/irobot_ws/src/rclcpp/rclcpp/include/rclcpp/detail/cpp_callback_trampoline.hpp:58:1: note: ‘template<class UserDataT, class ... Args, class ReturnT> ReturnT rclcpp::detail::cpp_callback_trampoline(UserDataT, Args ...)’ declared here
   58 | cpp_callback_trampoline(UserDataT user_data, Args ... args) noexcept
      | ^~~~~~~~~~~~~~~~~~~~~~~
/irobot_ws/src/rclcpp/rclcpp/src/rclcpp/timer.cpp:194:24: error: no matching function for call to ‘rclcpp::TimerBase::set_on_reset_callback(<unresolved overloaded function type>, const void*)’
  194 |   set_on_reset_callback(
      |   ~~~~~~~~~~~~~~~~~~~~~^
  195 |     rclcpp::detail::cpp_callback_trampoline<
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  196 |       decltype(on_reset_callback_), const void *, size_t>,
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  197 |     static_cast<const void *>(&on_reset_callback_));
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/irobot_ws/src/rclcpp/rclcpp/src/rclcpp/timer.cpp:152:1: note: candidate: ‘void rclcpp::TimerBase::set_on_reset_callback(std::function<void(size_t)>)’
  152 | TimerBase::set_on_reset_callback(std::function<void(size_t)> callback)
      | ^~~~~~~~~
/irobot_ws/src/rclcpp/rclcpp/src/rclcpp/timer.cpp:152:1: note:   candidate expects 1 argument, 2 provided
In file included from /irobot_ws/src/rclcpp/rclcpp/src/rclcpp/timer.cpp:15:
/irobot_ws/src/rclcpp/rclcpp/include/rclcpp/timer.hpp:193:3: note: candidate: ‘void rclcpp::TimerBase::set_on_reset_callback(rcl_event_callback_t, const void*)’
  193 |   set_on_reset_callback(rcl_event_callback_t callback, const void * user_data);
      |   ^~~~~~~~~~~~~~~~~~~~~
/irobot_ws/src/rclcpp/rclcpp/include/rclcpp/timer.hpp:193:46: note:   no known conversion for argument 1 from ‘<unresolved overloaded function type>’ to ‘rcl_event_callback_t’ {aka ‘void (*)(const void*, long unsigned int)’}
  193 |   set_on_reset_callback(rcl_event_callback_t callback, const void * user_data);
      |                         ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
gmake[2]: *** [CMakeFiles/rclcpp.dir/build.make:1119: CMakeFiles/rclcpp.dir/src/rclcpp/timer.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
gmake[1]: *** [CMakeFiles/Makefile2:465: CMakeFiles/rclcpp.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2

Environment

OS: Ubuntu 22.04

ROS 2: Humble

Question

Has anyone successfully built the humble-future branch of events executor with timer reset support? Am I missing a required patch or dependency in rclcpp/rcl?

Any guidance or confirmation on the correct set of commits needed would be greatly appreciated.

Lingua principale
C++
Stelle
805
Fork
564
Merge medio
1g 22h
PR unite (30g)
21

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di ros2/rclcpp

Tutte le issue di ros2/rclcpp

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.