To be done:
- Implement the book exercises in ROS2, which runs on Rover
Hardware failures:
- UGV Rover #4 the rover's camera kept crashing. Also a problem with a broken extension cord?
- UGV Rover #8 has a broken USB-B extension cord. Works also without extension. Cord back in the box.
July 16, 2026
- This paper with code teaches a robot a visual map with the phone camera.
- Dataset can be explored with Rerun. No ROS-interface.
July 11, 2026
- Following the instructions from Francisco's textbook no longer works, because it is using the old method via the ros-archive-keyring.gpg.
- Followed the instructions from ROS2 Jazzy install and did it via the ros2-apt-source package.
- Installed ros-jazzy-desktop.
- Had to sudo apt install python3-rosdep before I could do rosdep install --from-paths src --ignore-src -r -y (after a sudo rosdep init ; rosdep update)
- Starting colcon build --symlink-install. The package br2_tracking fails on libopencv_video.so.3.4.4, on LIBAVCODEC.
- Checked br2_tracking. CMakeLists.txt only specifies that opencv is needed (no version), the ObjectDetector only inlcudes opencv2/opencv.hpp.
< i>
Checked the installed versions, which were in principle v4.0.6. Yet, in May 19, 2021 I created a number of symbolic links of libopencv_*.so pointing to version 3.4.4 in /usr/local/lib/. Moved all the links to libopencv_*.so.3, so should not overrule the latest libraries in /usr/lib/x86_64-linux-gnu/.
- Still same error, should define LD_LIBRARY_PATH with x86 earlier.
July 9, 2026
- Luxonis also introduces agent skills for their product.
- Should work both with Claude and Cursor. Skills are available on github.
-
- Looked at the TDP of GentleBots (2024), where the point for the 3D detection boxes with the Tiago to this github code - darknet3d. Example can be found in this ConstructSim interview with a 3D 3D 3D bounding box around Francisco himself.
July 8, 2026
- Francisco Martin Rico's A Concise Introduction to Robot Programming with ROS 2 (2nd edition) is still on my VitalSource Bookshelf.
- On September 19, 2025 I was reading Chapter 7 (Deep ROS2).
- Now starting with Chapter 1, which already contains interesting information such as the naming convention of resources in ROS2, although not for VAR.
- Fig. 1.5 already adds a LiDAR and RGBD to the Kobuki robot, which is Korea’s first robotic turtle (introduced in 2020).
- Yet, in the same chapter Tiago from PAL Robotics is mentioned as platform, which is a modern variant of PR2.
- Tiago is used to create two subsystems, the Behavior subsystem which controls the Head of the Tiago and a Navigation substem.
- In the github code with the book I only see a simultiaon of the Tiago, no Kobuki.
- The pal and tiago packages are loaded via third_parties.repos.
- The humble-branch (Ubuntu 22.04) has no status, for Ubuntu 24.04 both an active Jazzy and Rolling version are available.
- The Construct has a Tiago course, but ROS1 based.
- Finished with Chapter 1 of A Concise Introduction to Robot Programming with ROS 2.
-
- Chapter 2 of A Concise Introduction to Robot Programming with ROS 2 covers the Basics of ROS (the talker example). Quite usefull for the first seminar. No python examples so far as section 2.3. Section 2.3.1 introduces rqt_console tool to filter the log-messages in /rosout.
- Section 2.4 finally introduces the Simulated Robot Setup of the TIAGo. The TAIGo is one of the reference simulator models of ROS2 (Which are the others? At least the Turtlebot). Found no direct list (other than an old ROS1 URDF examples list). UvA AI chat only mentions Husky and Rosbot next to the Turtlebot3. The ROSbot3 from Husarion is quite compatible with the UGV Rover, only Raspberry Pi based and no PanTilt. Yet, it has a OAK-D Lite camra and a SLAMTEC C1 Lidar (and 4 wheels with indeependent quadrature encoders). Would be a good entree to explore its simulation tutorials, including SLAM toolbox + Navigation2.
- Learned that the option --no-arr prevents that you are overloaded with the contents of the array, i.e ros2 topic echo --no-arr /scan_raw
- Now at the end of Chapter 2 also rviz is introduced.
-
- Continue with Chapter 3. That is introducing Finite State Machines with Bump and Go problem. It is a virtual bumber, based on the laser measurements. This chapter has both a c++ and python implementation.
-
- Continue with Chapter 4. That introduces the TF subsystem. Maybe nice to highlight that in the paper. It also highlights the debugging tool Visual Markers, which is part of RVIZ. Instead of checking the distance to an object directly in the FSM, it introduces an obstacle_detector and obstacle_monitor pair. The monitor just points a marker to the object, doesn't react to it (yet).
-
- Chapter 5 will introduces Virtual Force Fields to navigate. It is all still LiDAR based, so it will be interesting to see if that could also be done with vision (obstacle avoidance as assignment 1).
- This chapter also introduces GoogleTest to check the C++-code. Nice, but a bit of a side-line.
- In section 5.2 the objects are tracked, that is where the camera in the head of the Tiago comes in (or the pan-tilt of the UGV Rover). The head is controlled with a PID-controller on the pan-tilt of the neck.
-
- Chapter 6 implements Bump and Go again, but now with a Behavior Tree. Here the testing is actually quite interesting, testing each of the BT nodes seperately.
- In section 6.3 a patrolling Behavior Tree is introduced, that makes use of Nav2 to find a charging system. Although demonstrated on the Tiago, it needs the ros-*-turtlebot3* packages together with the navigation2 packages.
- As assignment, it is suggested to publish the detected objects as 3D bounding boxes, as in Perceptor3D (Copyright GentleBots, a RoboCup@Home team (2021) from IntelligentRoboticsLabs of the Rey Juan Carlos University and University of León with uses the Tiago).
-
- Section 7 goes deep into Real-Time constraints of ROS2, although the Nao robot is mentioned, with both a CPU for the code in the head and a microcontroller the chest to control the motors.
- Also section 8 is interesting, but a bit off. Yet, section 6.3 nicely aligns with VAR, although well hidden.
-
- Let see if I can get to section 6.3 at WP9.
- I had already a directory ~/bookros2_ws. Checked with git rev-parse --abbrev-ref HEAD that I was on the humble-dev branch.
- The command vcs import < book_ros2/third_parties.repos showed the same, although several of the ThirdParty directories were a few commits behind.
- Note that pal_gazebo_worlds has several aruco_markermaps
- The command colcon build --symlink-install give some warnings and errors.
- The package launch_pal was already installed with apt-get. Add for the moment a COLCON_IGNORE in the directory.
- Both Groot and hey5_description had an old CMake version. Increased the cmake_minimum_required from respectively 3.2 and 3.4.0 to 3.5
- Same for pal_gazebo_worlds and several others. At the end all the packages could be build
- Run without problems Chapter 2: ros2 run demo_nodes_cpp talker and ros2 run demo_nodes_py listener. That is basic ros demos, not code from the book (although described in the book).
- Also ros2 run br2_basics logger works and could be monitored with ros2 run rqt_console rqt_console.
- The output of ros2 run br2_basics publisher_class could be inspected with ros2 topic echo /int_topic and received by ros2 run br2_basics subscriber_class.
- Also ros2 launch br2_basics pub_sub_v1_launch.py was there.
- Next tried ros2 run br2_basics param_reader --ros-args -p number_particles:=300.
- Most interesting is section 2.4
- Starting the simulator worked only with an additional parameter: ros2 launch br2_tiago sim.launch.py --ros-args --remap is_public_sim:=True. Even then, the play_motion_executer and arm_tucker failed. No gazebo world showed up.
- The moveit_config couldn't find the config/tiago.urdf.
July 7, 2026
- Installed brave-browser. That browser could load claude.ai. Using Sonnet
- Loaded the SKILL.md from print-system-info.
- Gave the prompt "“Read the SKILL.md from jetson-device-skills and generate a Python script that runs on Jetson Nano and calls these skills.”
- Script was created, which gave info on the Model, L4T release, Power mode, Kernel, Uptime and OS version.
- In the SKILL.md examples of the expected output are given.
-
- The jetson-package skill should suggest docker images especially made for the jetson.
- Running it in the generated_scripts folder doesn't work, because it calls scripts/artifact_hints.sh, which calls ../../jetson-diagnostic/scripts/detect_jetson.sh.
- Calling the scripts suggest a preferred_vllm_image, to use ghrc on Orin's with older releases the L4T r39 and a preferred jetson-ai-lab pypi.
- I added the preferred pypi for the jetson-user in ~/.config/pip/pip.config. Had some difficulties with finding the correct CUDA version. The default for Jetpack 6.0 is 12.6, but most methods to check (nvidia_smi, nvcc --version, cat /usr/local/cuda/version.txt, strings /usr/lib/aarch64-linux-gnu/nvidia/libcuda.so* | grep -i "CUDA Version") all failed. The only method that worked was dpkg -l | grep -i cuda, yet gave as version 36.3.0.
- Did pip install torch torchvision, which indeed checked the jetson-ai-lab.io first, but still cu126 packages were loaded, and cu13 packages. Maybe I should have selected the sbsa/cu130 subdirectory.
- Still, nvidia_smi and nvcc are not found.
-
- Tried the jetson-memory-audit. Running the script with drop-caches --mode 3 reclaimed 865 MiB (from 81 MiB free to 1183 MiB free, with 1423 MiB available).
-
- The jetson-llm-benchmark requires that jetson-llm-serve is called first, to start a vllm-server. I run out of my 5h window of Claude messages of my free plan.
-
- There is a release of SE3-LIO. As default LiDAR it uses livox, but also has a ouster-option. Best to test it on the Avular Origin, also because it is docker-based.
- I see some issues in the dockerfile. First, it is based on Ubuntu22.04 / Cuda 11.8.0 ?! Further I see a clone of Livox SDK2 but no option for the Ouster. For the rest it is mainly ros-humble-desktop ros-humble-pcl-ros based.
- I see the new Mid-360s at Livox as industrial Lidar, and the HAP as automotive Lidar.
July 6, 2026
- Experimenting with jetson-device-skills on the UGV-Rover #12.
- No ethernet, no wlan. Switched on the ROBOLAB_VAR in the Visualisation Lab. Now I have a connection.
- The device-skills are installed without problems, but I need an agent to work with this skills.
- AIchat suggest to start with Claude Code in a browser.
- Installing sudo apt-get install firefox first, because #12 didn't had a browser.
- The system is 563 outdated packages. The rover is running Tegra release R36, which is actually Jetpack 6.0
- Trying to update the outdate packages, but the 4 nvidia-container-toolkit packages will be downgraded?!
- Starting firefox gave an error, so trying if that is still the case after the upgrade.
- It is, so removed firefox again.
- Otherwise, sudo apt-get install falkon would be a more light-weigth option, although that requires many Qt-libraries. Installing 197 packages together with falkon.
- Falkon works, but not with claude.ai
- On July 17, 2025 I had the same error with firefox, and installed the brave-browser instead of firefox.
- Lets try tomorrow with brave.
July 4, 2026
July 3, 2026
- The code of lingbot-map is impresive, tested on many datasets, but not ROS-based.
May 20, 2026
- The MuJoCo wrapper TAMPanda could also create MuJoCo environments for mobile robots, including Lidar, Odometry and IMUs.
May 12, 2026
March 23, 2026
March 19, 2026
- Would be nice to test the camera backprojection from this github.
February 18, 2026
- Technical details and features of the IMX335 are discussed this post. For instance, the IMX335 has high sensitivity thanks to backside-illumination.
February 13, 2026
February 11, 2026
- More details on the IMU ICM20948 can be found here
- This product is discontinued, but the same ICM20948 is used on the Waveshare control board. The only difference is the barometric pressure sensor BMP280, which gives the 10 measurement next to the 9 DOF from the IMU.
- There is still a IMU, which is ROS2 Humble compatible and with Demo code.
-
- The ROS Driver for Robots is the ESP32 board which is more modern than General Driver for Robots.
-
- Note that the laptop battery can maybe be mounted with the smartphone holder
February 4, 2026
- NASA's Ogma is a tool to generate runtime monitoring applications to detect anomalies. Nice for a SE-project.
February 2, 2026
- Received the DC-charging connectors (2.1x5.5x11). Connector seems to work.
- Checking the Lab0 introduction in Canvas. Several commands do not make sense (no ugv_driver.launch.py in ugv_bringup). Is this a missing pull in the github, or wrong documentation?
- Starting ros2 launch ugv_bringup bringup_imu_origin.launch.py use_rviz:=false, as described in my documentation, failed on Keyerrors of the IO-communication.
January 8, 2026
- Removed all extension cords to remove the random crashes of the pan-tilt camera.
Previous Labbooks