home.social

#ros2humble — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #ros2humble, aggregated by home.social.

fetched live
  1. ROS 2 Success with ReentrantCallbackGroups

    Robot "Kilted-Dave" was not able to declare docking success from the dock callback because the battery_state callback was not allowed to execute to update the new charging state.

    I had already setup callback groups but failed to initialize the battery_state callback group as reentrant.

    Single line fix to a problem plaguing my since he was "Humble-Dave" on

  2. In ROS there is a URDF file (Universal Robot Description File) which allows the robot visualization application to show a symbolic robot and the robot and state publishers to update where the robot parts are located as the robot moves.

    These files can be amazingly complex to get the values correct for every part of a robot to appear in the correct place, and for sensor data to be accurate.

    Over the years I have created files. Today the GoPi5Go-Dave file:

  3. Finally got around to diagramming ROSbot GoPi5Go-Dave's Software Architecture

  4. Progress - GoPi5Go-Dave Robot Is Docking and Undocking 24/7 managed by ROS 2 nodes.

    2024-08-26 19:16|dave_node.py| ---- GoPi5Go-Dave ROS Docking 928 : success at battery 10v after 2.5 h playtime

    His stack:
    - dave_node
    - docking_node
    - [slam_toolkit and nav2]
    - [RTABmap]
    - battery_node
    - gopigo3_node
    - odometer node
    - ydLIDAR node
    - oak_d_w_ros2 node
    - teleop_joy node
    - say_server node(Piper-TTS)
    - safety_shutdown node
    - I2C mutex

  5. @drfootleg
    > ROS with real robot

    Not a trained ROSer, but figured out from first robot node and keyboard driving, joystick driving, adding LIDAR, and URDF for visualizing my bot in rviz2 on the desktop, up to running SLAM on the bot.

    I created a custom "ROS 2 GoPiGo3 Robot Node", and then a set of guided "tests" with shell script commands to help remember how to do things.

    Perhaps some useful stuff:

    github.com/slowrunner/ROS2-GoP

    and the node is at github.com/slowrunner/ROS2-GoP

  6. @themagpi

    > Raspberry Pi projects?

    Solved a month long mystery!

    How to manage Raspberry Pi I2C device access inside ROS2/Ubuntu/Docker container **AND** outside the container in Raspberry PiOS Bookworm?

    Docker invocation must map both the bus AND the mutex lock folder /var/lock/


  7. @drfootleg Another tip that has been plaguing me for a month!

    If you have processes inside a Docker container and other processes outside the Docker container that need mutex protection such as I2C bus or SPI bus accesses, you need to map the bus (obviously) **and** the mutex folder!

    I had the sensor access working great but could not figure out why my inside and outside "mutex protected" accesses were colliding...

  8. Think I solved why my inside Docker (ROS 2) access to I2C INA219 current sensor was colliding with my outside Docker access to the device - forgot to map the /var/lock directory so the mutex is visible from both environments!

  9. @drfootleg

    > ROS2 in Docker on PiOS Bookworm for Pi5

    Tip: Break the build into two Dockerfiles - 1) the long base build, and 2) the experimental build steps that will fail a few times (quickly).

    Check out my robot's Docker build steps and DockerFiles at
    github.com/slowrunner/GoPi5Go/

  10. Success! Managed to install the inside a container on my powered and access the as a USB device. This rebuild in Docker on the Pi5 is a painful, slow setback now that promises more, faster.

  11. At this reduced transfer rate, the can make a two byte transfer in 0.0003 seconds, which means it can retrieve the left and right wheel encoder values roughly 1700 times per second - plenty fast enough for my robot to publish and the resultant at 30 Hz.

  12. @julien This is how I feel running in on the

    I wanted the benefit of the Pi5 nap (RTC) and 2x performance over Pi4, but the current long term support version of ROS 2 will not run native on either of the Pi5 supported operating systems.

    ROS over
    Ubuntu in
    Docker over
    PiOS 64-bit Bookworm.

    I end up having to rebuild my container (25 minutes) nearly every week for something.

  13. (Again) so excited that my wallfollower.py node drove my “WaLI (wallfollower looking for intelligence)” to follow 17 meters of six connected walls!

    So far it is subscribing to five topics /ir_intensity (range to wall and obstacle detection), /hazard_detection (bumpers), /ir_opcode (virtual wall), /kidnap_status (lifted by human), and /odom (pose), and a seven state machine managing seven motion actions/reactions.

    Now to “parameterize” and “generalize” it.

  14. Put together a 2-minute video for my with controller safely mapping and wandering the kitchen using the native IR intensity sensors:

    youtu.be/QqT7b5E8Cp0

  15. Mapping w/o Localization

    Got slam_toolbox mapping with localization turned off, but managed to figure out how to serve up a better looking map from my house floor plan.

    The weakness of dead reckoning becomes very evident with the floorplan map.

    Next up - with and

  16. -Wali

    Dress Rehearsal
    Full Load
    Power System Test

    Full load (1min 4.96): No Throttling - NO PROBLEM.

    Wali with 14.4v powered USB hub inside cargo drawer:

    (WaLi: Wall follower Looking for Intelligence)

    The Pi5 has running in over PiOS 64-bit Bookworm Desktop

  17. - - !!!

    async mapping:
    - Pi4 15% CPU (2% of RPi4)
    - Pi5 5% CPU (1% of RPi5)

    Much prefer configuring and running ROS 2 native on on Pi4 than configuring Docker on Pi5.

    rViz2 in Ubuntu 22.04 in VM on Mac OS showing map and path.

    slam-toolbox async in Docker on PiOS 64-bit Bookworm on Pi5 (2 ssh sessions)

    on Ubuntu 22.04 on Pi4 (4 ssh sessions)

    All talking to each other - pretty impressed with

  18. We are hounded to code for expected error cases, but frameworks sometimes do it for us.

    Humble seems to have broken the SIGINT handling associated with timers and callbacks. Control-c in Galactic never caused an exception, but in C++ or Python, Humble complains "terminate called after exceptions::RCLError".

    I posted months ago on answers.ros.org with no takers.

    Am I the only person using ?