Notes and Status - slgrobotics/articubot_one GitHub Wiki
This document lists my recent status reports, observations, problems, and fixes. (Updated frequently.)
Note: I create and destroy dev branch at my convenience. You can always clone it if it is gone and was recreated.
I am finishing the transition to ROS2 Lyrical Luth and Ubuntu 26.04.1 for all my dev machines and robots. All is going well. Details are here.
- Please note "lyrical" branch: https://github.com/slgrobotics/articubot_one/tree/lyrical - obviously, the most current and greatly improved.
- Some of my "package repositories" have new lyrical branches where code differences are substantial and backward compatibility cannot be assured.
Click here to peek into the past postings
I am on a "Grass Mowing Leave" from ROS - periodically working on GrassRoamer and only occasionally on ROS2 projects.
Ubuntu 26.04 is full steam, and ROS2 Lyrical Luth LTS is expected soon.
Note: it is not yet possible to do apt release-update 24.04 -> 26.04 - until 26.04.01 is released, likely in September. Only clean installs are supported so far.
Meanwhile, please visit HB Robotics Knowledge Base - star it and contribute.
Working on a "stereo streamer" (Jetson Nano/RPi 5) with dual cameras feeding ROS2 PointCloud2 for navigation.
I expect this setup to outperform LIDAR in outdoor object avoidance while offering more reliability and flexibility than off-the-shelf solutions like the OAK-D.
WIP: https://github.com/slgrobotics/jetson_nano_b01/blob/main/STEREO_SERVER.md
A deeper dive into image inference on the old (2019) Jetson Nano.
Here is the new repository with the experiment log:
I've been playing with my old Jetson Nano, trying to put it to work on anything AI related. Not much luck; here are my notes:
- https://github.com/slgrobotics/articubot_one/wiki/Ollama-on-Jetson-Nano
- https://github.com/slgrobotics/articubot_one/wiki/Jetson-Nano:-%22jetson%E2%80%90inference%22-container
The Ollama on a desktop machine works quite well:
- https://github.com/slgrobotics/articubot_one/wiki/Ollama-in-Docker-%E2%80%90-isolated
- https://github.com/slgrobotics/articubot_one/wiki/Docker-on-a-Desktop
More AI to explore, hopefully related to robotics.
I finished working on BNO08x driver optimizations, all checked in, submitted a PR to upstream.
This is the last of the four IMU drivers, more info here.
I finished working on BNO055 driver optimizations, all checked in, submitted a PR to upstream.
I’m still working on several IMU sensors, trying to get all of them to deliver reliable data. IMUs are a fascinating area, but much of the available information is confusing, and many ROS 2 drivers are buggy.
I’m about a week away from finishing this rabbit hole and will update the code and publish my findings soon.
Merged Dev -> Main and re-created Dev branch from Main:
- face aware Behavior Tree for Seggy,
- EKF filters moved to first cycle in launch files
- Seggy, Turtle - tested fine. Dragger works outdoors, with or without GPS signal.
Working on Nav2 Behavior Trees - trying to have Seggy do something when reacting to Face and Gesture sensor.
Details here. All code checked in and (mostly) works.
AI helpers: At the moment I am balancing between three AI options:
- ChatGPT.com - it's been very helpful, very slow and I don't seem to hit their daily limit. Maybe, with my crazy ROS2 questions - they feel like they need to pay me, not charge ;-).
- VS Studio Code Copilot - convenient because of its integration with VS Code, but I hit their monthly limit in about 10 days. For the remaining 20 it gives me good auto-continue help, but doesn't chat with me. I am tempted to pay $10 monthly for it though, but other AI's are too good of an alternative.
- Chrome browser "AI Mode" is lightning fast and often less hallucinating than ChatGPT.com. It's fun to ask one "why this won't work" about another's solution and feed its response back.
It will be interesting if ChatGPT.com becomes faster or better on the "Plus" plan - I am on a trial now, will see.
- P.S.: wow, it is fast and feels even smarter. That's what $20/month does to silicon brains. And we all thought it's more electricity... ;-)
Added test worlds: sonoma_racetrack, warehouse, baylands
Merged the dev branch into main, deleted and re-created the dev branch.
Map Server and SLAM Toolbox work fine with Dragger (using Outdoors Localization package).
Cartographer works with initial_pose_serv. Still testing.
Seggy navigating through a doorway: https://youtu.be/xpDTbzaKAi0
Added a "slap-on" Outdoors Localization package.
It simplifies adding GNSS/Navsat localization to any robot, by launching pre-configured and tuned Navsat Transform and EKF (IMU + Odom + GPS) nodes, plus one of the standard localizers (Map Server, SLAM Toolbox, AMCL).
Merged Dev -> Main. See below for changes.
- refactored most launch files. The result is a much clearer and more maintainable structure.
Here’s what I (with some ”gentle encouragement" from our AI Overlords) ended up with:
The robot launch files are now split into:
- drive launch — everything related to wheels, diff drive, twist_mux, etc.
- sensors launch (IMU, LIDAR, others)
- localizers launch (mostly SLAM Toolbox, others optional)
- robot launch — pulls all the above together and adds Nav2 with the robot's configuration
Simulation is achieved simply by setting use_sim_time: true in the command line (and there is a wrapper for convenience)
RViz2 launches as usual on the Desktop and pulls the joystick with it.
You can see the results in my repo
The retired Plucky folder was left untouched for historical reasons, while Seggy, Dragger, and Turtle all received the necessary haircut.
All the above is work (fun) in progress; the dev branch will ultimately be merged into main.
-
I am also trying to make my notes more readable, using GitHub Wiki: https://github.com/slgrobotics/articubot_one/wiki - the sidebar makes a huge difference.
-
I picked up two GY-BNO085 IMUs and tested them on Seggy—these things are fantastic. Self-calibrating, accurate, and rock-solid reliable. Compared to all the IMUs that caused headaches over the years, these are on a different level.
- I had to fork and modify BNO08x driver to publish realistic orientation covariances
- Tuned the EKF to properly fuse IMU and wheel odometry
- I've got more criticism on my improved repo from the Overlords: https://chatgpt.com/s/t_691b90f26e408191b19bfca0c61cc16c
- there are some features of Dragger's launch files that haven't been ported yet (sonars, aerial map, navsat in sim) - that needs work
- installed ROS2 Kilted Desktop on a spare machine (I5, Ubuntu 24.04) alongside Jazzy.
- installed Kilted Base on Turtle (RPi4 overclocked to 2GHz, Ubuntu 24.04) also alongside Jazzy
- Updated
~/bashrcto allow switching between distributions:
source /opt/ros/kilted/setup.bash
#source /opt/ros/jazzy/setup.bash
On the Desktop side:
- Updated ros_battery_monitoring to make Jazzy code also Kilted-compatible - details here
- Verified that:
-
ros2 launch articubot_one seggy_sim.launch.pyruns successfully (same for plucky, dragger, turtle) -
ros2 launch articubot_one launch_rviz.launch.py use_sim_time:=falseworks as expected
-
On-board RPi side (Turtle):
- Received warnings when running:
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -r -y(related to xv_11_driver, create_driver) - One parameter in nav2_params.yaml was renamed:
error_code_names: # works for Jazzy, must be removed for Kilted
#error_code_name_prefixes: # works for Kilted
- rosdep installed a number of likely unnecessary packages.
- Turtle works, navigates, and appears stable and happy.
Interoperability:
- Turtle running under Kilted successfully appeared in RViz2 on a Jazzy desktop and was controllable via its joystick.
- Resolve the remaining build warnings (UPD: done - here and here).
- Continue using Jazzy as the main environment, while keeping Kilted installed for compatibility testing and future-proofing.
- Create 1 "Turtle" now runs on a Raspberry Pi 4, overclocked to 2 GHz. Documentation has been updated.
- articubot_one code has been cleaned, the dev branch was merged into main, and both were tested - everything works. Use dev, as it usually includes a few potentially useful tweaks.
- Enabling composition and use_intra_process_comms in Nav2 launch file seems to work fine.
- Seggy is a new reference platform (a.k.a. "guinea pig"). Plucky has been retired (and graciously donated some of his parts to Seggy).
- Seggy's BLDC Motor wheels are awesome; even with only 60 ticks per revolution from the Hall sensors, control is stable.
- Both of my 52Pi Power Expansion Boards are working well (one on Seggy and one on a spare RPi 5).
- Ubuntu real-time is running reliably — now deployed on Turtle’s RPi 4.
- after the October ROS2 update, the "diff_cont/odom" topic appears with empty child_frame and frame_id fields. Thankfully, EKF2 correctly consumes this topic and republishes a properly formatted /odometry/local, which is now used system-wide.
- Enabling the compass (yaw) component in the IMU configuration for Nav2 may or may not improve navigation. It’s tricky on Seggy — the MPU9250 needs some tuning — but the BNO055 works fine on Turtle.
- Teach Seggy to squeeze through doorways — requires additional tuning.
- Give Dragger some outdoor exercise; it hasn’t been tested in a while.
- Behavior Trees seem like a nice area to explore.
- Integrate the Gesture sensor for robot control — a logical next step.
- Put OAK-D Lite on Seggy to work; its point cloud should be tested with Nav2.
Back to Home