Fix launch files for C++ lifecycle node, add I2C launch variant#9
Draft
Copilot wants to merge 6 commits intocopilot/convert-bno055-driver-to-cppfrom
Draft
Fix launch files for C++ lifecycle node, add I2C launch variant#9Copilot wants to merge 6 commits intocopilot/convert-bno055-driver-to-cppfrom
Copilot wants to merge 6 commits intocopilot/convert-bno055-driver-to-cppfrom
Conversation
…ays, Euler angles, calibration check Compared Boardoza BNO055 reference driver with saha-robotics implementation. Key improvements for sensor data quality: 1. Implement actual calibration offset writing to sensor registers (was declared but never written) 2. Write accelerometer/magnetometer radius calibration values 3. Add sensor reset before configuration for clean state 4. Add self-test verification during configuration with detailed per-sensor results 5. Add proper mode transition delays (30ms per BNO055 datasheet) 6. Add Euler angles publication (data already in buffer, now published on euler topic) 7. Add operation-mode-aware isFullyCalibrated check in calibration status 8. Add proper timing delays during initialization sequence Co-authored-by: ROSSARP <117314787+ROSSARP@users.noreply.github.com>
- Add SELFTEST_ALL_PASSED and CALIBRATION_FULLY_CALIBRATED constants to registers.hpp - Use named constants instead of magic numbers for self-test (0x0F) and calibration (3) - Add return value checking and warning logging in write_offset method Co-authored-by: ROSSARP <117314787+ROSSARP@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Compare BNO driver implementation for sensor data quality
Implement missing BNO055 calibration offset writing and sensor init improvements
Feb 12, 2026
- Fix bno055.launch.py: replace broken Python Node reference with C++ LifecycleNode (executable='bno055_lifecycle_node') with auto configure/activate lifecycle management - Add bno055_i2c.launch.py: launch file for I2C connection using bno055_params_i2c.yaml - Update README.md: document all launch options (UART, I2C, lifecycle) - Update CPP_README.md: add I2C and UART launch commands Co-authored-by: ROSSARP <117314787+ROSSARP@users.noreply.github.com>
Copilot
AI
changed the title
Implement missing BNO055 calibration offset writing and sensor init improvements
Fix launch files for C++ lifecycle node, add I2C launch variant
Feb 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Sensor data quality improvements (Boardoza reference comparison)
Compared the Boardoza BNO055 driver with this repo's C++ implementation. Found several deficiencies affecting data quality.
Calibration offset writing was a no-op
The most critical issue:
set_offsets: truelogged "Setting calibration offsets" but never actually wrote to registers 0x55–0x6A. Now writes all 9 offsets + 2 radius values:Other sensor quality fixes
set_mode()had no delay; BNO055 datasheet requires ~19ms, Boardoza uses 25–50ms. Added 30ms.SYS_TRIGGER=0x20before configuration for clean stateSELFTEST_RESULTregister with per-sensor (ACC/MAG/GYR/MCU) reportingbno055/euleris_fully_calibrated()per operation mode — Calibration status now includesfully_calibratedfield, checking only sensors relevant to current mode (e.g. IMUPLUS → accel+gyro only)SELFTEST_ALL_PASSED,CALIBRATION_FULLY_CALIBRATEDreplace magic numbersLaunch file fixes
bno055.launch.pyreferencedexecutable='bno055'(the Python entry point) but the build isament_cmake— onlybno055_lifecycle_nodegets built. The old launch file was non-functional.bno055.launch.py— UseLifecycleNode(executable='bno055_lifecycle_node')with auto configure→activatebno055_i2c.launch.py— I2C variant usingbno055_params_i2c.yaml(config existed, launch didn't)💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.