-

bno055 package from bno055 repo

bno055

Package Summary

Tags No category tags.
Version 0.5.0
License BSD
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/flynneva/bno055.git
VCS Type git
VCS Version main
Last Updated 2024-02-17
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Bosch BNO055 IMU driver for ROS2

Additional Links

No additional links.

Maintainers

  • flynneva

Authors

No additional authors.

A BNO05 ROS2 Package

Description

A ROS2 driver for the sensor IMU Bosch BNO055.

This repo was based off of Michael Drwiega’s work on the Bosch IMU Driver for ROS 1


Wiring Guide

Selecting Connection Type

The default mode is I2C. To select UART mode connect the 3.3V pin to the PS1 pin.

CP2104 USB-to-UART Bridge

When using a CP2104 USB-to-UART Bridge:

BNO055 CP2104 Friend
Vin 5V
GND GND
SDA RXD
SCL TXD

**NOTE: on the CP2104 the pins above refer to the FTDI pins at the opposite end from the USB connector


ROS Node Parameters

To configure with your own settings please adjust the node parameter file and pass it as an argument when starting the node:

ros2 run bno055 bno055 --ros-args --params-file ./src/bno055/bno055/params/bno055_params.yaml

UART Connection

  • connection_type=uart: Defines UART as sensor connection type; default=’uart’
  • uart_port: The UART port to use; default=’/dev/ttyUSB0’
  • uart_baudrate: The baud rate to use; default=115200
  • uart_timeout: The timeout for UART transmissions in seconds to use; default=0.1

I2C Connection

  • connection_type=i2c: Defines I2C as sensor connection type; default=’uart’
  • i2c_bus: The integer I2C bus number to use; default=0
  • i2c_address: The hexadecimal I2C address to use; default=0x28

Sensor Configuration

  • frame_id: coordinate frame id of sensor default=’bno055’
  • baudrate: baudrate of sensor default=115200
  • data_query_frequency: frequency (HZ) to read and publish data from sensor; default=100 Hz
  • calib_status_frequency: frequency (HZ) to read and publish calibration status data from sensor; default=0.1 Hz
  • placement_axis_remap: The sensor placement configuration (Axis remapping) defines the position and orientation of the sensor mount. See Bosch BNO055 datasheet section “Axis Remap” for valid positions: “P0”, “P1” (default), “P2”, “P3”, “P4”, “P5”, “P6”, “P7”.

ROS Topic Prefix

  • ros_topic_prefix: ROS topic prefix to be used. Will be prepended to the default topic names (see below). Default=”bno055/”

Calibration

The current calibration values can be requested via the calibration_request service (this puts the imu into CONFIGMODE for a short time):

ros2 service call /bno055/calibration_request example_interfaces/srv/Trigger


ROS Topics

ROS topics published by this ROS2 Node:

While bno055 is the default ROS topic prefix, it can be configured by following the directions above.


Development Workspace Setup

On a Remote Device

Setup of a ROS2 workspace & IDE for a remote device (for example Raspberry Pi):

Clone & Build

Create a ROS2 workspace on your remote device - for instance ~/ros2_ws

Make sure you sourced your ROS2 installation (underlay).

Then clone the project into your workspace’s src directory:

cd ~/ros2_ws/src
git clone https://github.com/flynneva/bno055.git

Perform a build of your workspace

cd ~/ros2_ws
colcon build

Integrate in your IDE

In order to work with the sources in your remote workspace and to integrate them in your IDE, use sshfs:

sudo apt-get install sshfs
sudo modprobe fuse

Create a IDE project directory and mount the remote ROS2 workspace:

mkdir -p ~/projects/bno055/ros2_ws
sshfs ubuntu@192.168.2.153:~/ros2_ws ~/projects/bno055/ros2_ws

Create a new project in your IDE from existing sources in ~/projects/bno055/ros2_ws. You can now manipulate the remote ROS2 workspace using your local IDE (including git operations).

Running the ROS2 node

Run the bno055 ROS2 node with default parameters:

# source your local workspace (overlay) in addition to the ROS2 sourcing (underlay):
source ~/ros2_ws/install/setup.sh
# run the node:
ros2 run bno055 bno055

Run with customized parameter file:

ros2 run bno055 bno055 --ros-args --params-file ./src/bno055/bno055/params/bno055_params.yaml

Run launch file:

ros2 launch bno055 bno055.launch.py

Performing flake8 Linting

To perform code linting with flake8, just perform:

cd ~/ros2_ws/src/bno055
ament_flake8

See www.flake8rules.com for more detailed information about flake8 rules.

Note: We take advantage of flake8’s noqa mechanisim to selectively ignore some errors. Just search for # noqa: in the source code to find them.

CHANGELOG

Changelog for package bno055

0.5.0 (2024-02-17)

  • Bump to 0.5.0 to prep for release
  • Added Gravity publisher (#64)
    • Added Gravity publisher
    • Updated Readme to introduce Gravity publisher
  • Spelling/Grammar (#62)
  • Fix uart write answer reading (#57)
  • Update package.xml to include smbus dependency (#58)
  • fix build error on foxy that caused by typo (#59)
  • Contributors: Andrew Symington, Burak Guler, Combinatrix, Evan Flynn, Vintheruler1, emilnovak

0.4.1 (2023-01-15)

  • Update CHANGELOG
  • Bump patch version after small bug fix
  • Fix i2c issues found (param and division by zero) (#56)

0.4.0 (2023-01-13)

  • Bump version for new release
  • Update CHANGELOG for new release
  • Improve the doc strings for the connectors
  • Add I2C implementation (#52)
  • Merge pull request #50 from flynneva/fix-invalid-log-print Fix invalid log string variable expansion
  • Update CI to include Humble
  • Fix invalid log string variable expansion
  • Merge pull request #49 from sjev/operation_mode
  • add device mode setting
  • Contributors: Andrew Symington, Evan Flynn, Jev

0.3.0 (2022-03-22)

  • Merge pull request #43 from flynneva/develop bring over updates
  • Merge pull request #44 from Towflos/develop
  • fixed setting of calibration data, added default values for mag and acc radius
  • added example_interfaces to package.xml, added service information to README.md
  • cleanup
  • prefix added to service
  • removed seq, fixed parameters, refactored reading of calibratio data, added service to request calibration data
  • added seq and time to message headers
  • mag_radius and accel_radius added to get_calib_offsets()
  • mag radius and acc radius added as parameter
  • fix greetings for incoming PRs from forks see [this nice write up](https://github.com/SalesforceLabs/LightningWebChartJS/pull/95) for details
  • Merge pull request #42 from deepinbubblegum/launch_develop Launch develop
  • edit readme launch file
  • add launch file
  • Merge pull request #41 from flynneva/develop bring over 0.2.0 updates to main
  • Merge pull request #32 from flynneva/develop initial docs up and running
  • Merge pull request #31 from flynneva/develop source galactic not rolling
  • Merge pull request #30 from flynneva/develop dont use forked repo for setup-ros
  • Merge pull request #29 from flynneva/develop fix setup-ros version to 0.2
  • Contributors: Evan Flynn, Florian Herrmann, deepinbubblegum

0.2.0 (2021-12-6)

  • Merge pull request #36 from flynneva/feature/add-covariance [33] add default covariance values, make them configurable
  • fix printout for parameters
  • [33] add defaults for magnetic field covariance values
  • [37] add logic to set offsets
  • [33] add default covariance values, make them configurable
  • Merge pull request #24 from flynneva/fix/scaling_factors
  • [35] add back in comm constants, modify variable names as needed to fix bug introduced by #16
  • [34] use underscores in setup.cfg instead of dashes
  • [23] fix acc and mag scaling factors and make them configurable
  • only run docs ci on main updates
  • use sh instead of bash script for docs ci
  • use . instead of source for docs ci
  • remove -r from pip install
  • use relative paths for docs ci
  • use absolute paths for docs ci
  • ls in docs ci
  • switch doc generation ci to pre-built docker image
  • source galactic not rolling
  • Merge branch 'develop' of github.com:flynneva/bno055 into develop
  • dont use forked repo for setup-ros
  • Merge branch 'main' into develop
  • fix setup-ros version to 0.2
  • Merge pull request #28 from flynneva/develop fix setup ros version to v0.2
  • fix setup ros version to v0.2
  • Merge pull request #27 from flynneva/develop use galactic for doc generation
  • Merge pull request #26 from flynneva/feature/sphinx_docs use galactic for doc generation, not rolling
  • use galactic for doc generation, not rolling
  • Merge pull request #25 from flynneva/develop bring over updates to main, generate docs for first time
  • Merge pull request #16 from flynneva/feature/sphinx_docs Feature/sphinx docs
  • fix docs ci path when uploading docs to gh-pages
  • Merge branch 'develop' into feature/sphinx_docs
  • add modules to docs and update registers
  • Merge pull request #21 from flynneva/develop normalize quaternion
  • Merge pull request #20 from flynneva/fix/normalize_quaternion normalize quaterion
  • normalize quat
  • Merge pull request #19 from flynneva/feature/prebuilt_docker_ci move to pre-built ros docker images
  • move to pre-built ros docker images
  • minor docs updates
  • doc page templates
  • starting on docs
  • Merge pull request #13 from flynneva/develop bump for release
  • Merge pull request #10 from flynneva/develop bring over updates to main
  • Contributors: Evan Flynn, flynneva

0.1.1 (2021-02-04)

  • add changelog
  • Contributors: flynneva

0.0.1 (2021-02-04)

  • Merge pull request #12 from flynneva/feature/release_ci add release actions
  • add release actions
  • Merge pull request #11 from flynneva/fix/README_updates update readme
  • update readme
  • Merge pull request #9 from flynneva/fix/bus_overrun_error Fix/bus overrun error
  • fix flake8 errors & recommended changes
  • added bus_over_run_error to exceptions
  • add pycache to .gitignore
  • Merge pull request #8 from flynneva/fix/remove_eol_distro remove eloquent from ci
  • Merge pull request #7 from flynneva/fix/no_timer_shutdown only shutdown timers if timers are available merging this since it is a minor change
  • remove eloquent from ci
  • seperate log output into two lines for readability
  • only shutdown timers if timers are available
  • Merge pull request #6 from flynneva/fix/flake8 Fix/flake8
  • add flake8 ignore mechanism to README
  • ignore B902 blind except flake8 error
  • copyright fixes
  • fixed flake8 & pep257 errors
  • starting to fix flake8 errors
  • Merge pull request #4 from flynneva/feature/extend-msgs Sensor Placement, Calibration Status, Error Handlng
    • graceful ROS node shutdown on Ctrl+C
    • fix: adjusted calls to transmit()
    • sensor placement is now configurable (axis remap)
    • simplified error handling - now exception-based instead of return values
    • periodic publishing of calibration status (period is configurable)
    • configurable ROS topics (configurable prefix) so that they can be unique
  • Merge pull request #3 from whatis777/develop Basic Project refactorings
  • Merge pull request #1 from whatis777/feature/i2c Feature/i2c
    • improved UART message error handling & logging
    • introduced UART timeout parameter
    • adjusted default values for improved communication quality
    • renamed UART related parameters
    • added locks to prevent overlapping data queries
  • specify ros distro to linter action
  • results of code review: fixed flake8 findings
  • results of code review
  • added UART read & write calls, clean up
  • extracted sensor API (use cases) into separate class; main is now also class based
  • refactored method names & moved connectors
  • extracted ROS node parameter handling
  • restructured sources, added documentation, fixed runtime issues with ROS2
  • Merge pull request #2 from flynneva/actions add linter and rename actions file
  • limit linter to only flake8 for now
  • change linter array format
  • linter array moved out of matrix
  • Merge branch 'actions' of github.com:flynneva/bno055 into actions
  • added linter step to actions
  • Merge pull request #1 from flynneva/actions added gh actions
  • maybe no requirements.txt file needed?
  • removed ros2 pkgs from requirements file
  • added requirements.txt file
  • develop not devel
  • added gh actions
  • fixed ament_python warning by adding data_files
  • extracting UART-specific code, W.I.P.
  • added calibration parameters
  • updated readme
  • added parameters
  • Merge branch 'master' into develop
  • trying to get_parameter
  • added other topics
  • Update README.md
  • added check if buf is empty
  • added back copyright agreement
  • first commit
  • Contributors: Evan Flynn, Manfred Novotny, flynneva, whatis777

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged bno055 at Robotics Stack Exchange

bno055 package from bno055 repo

bno055

Package Summary

Tags No category tags.
Version 0.5.0
License BSD
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/flynneva/bno055.git
VCS Type git
VCS Version main
Last Updated 2024-02-17
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Bosch BNO055 IMU driver for ROS2

Additional Links

No additional links.

Maintainers

  • flynneva

Authors

No additional authors.

A BNO05 ROS2 Package

Description

A ROS2 driver for the sensor IMU Bosch BNO055.

This repo was based off of Michael Drwiega’s work on the Bosch IMU Driver for ROS 1


Wiring Guide

Selecting Connection Type

The default mode is I2C. To select UART mode connect the 3.3V pin to the PS1 pin.

CP2104 USB-to-UART Bridge

When using a CP2104 USB-to-UART Bridge:

BNO055 CP2104 Friend
Vin 5V
GND GND
SDA RXD
SCL TXD

**NOTE: on the CP2104 the pins above refer to the FTDI pins at the opposite end from the USB connector


ROS Node Parameters

To configure with your own settings please adjust the node parameter file and pass it as an argument when starting the node:

ros2 run bno055 bno055 --ros-args --params-file ./src/bno055/bno055/params/bno055_params.yaml

UART Connection

  • connection_type=uart: Defines UART as sensor connection type; default=’uart’
  • uart_port: The UART port to use; default=’/dev/ttyUSB0’
  • uart_baudrate: The baud rate to use; default=115200
  • uart_timeout: The timeout for UART transmissions in seconds to use; default=0.1

I2C Connection

  • connection_type=i2c: Defines I2C as sensor connection type; default=’uart’
  • i2c_bus: The integer I2C bus number to use; default=0
  • i2c_address: The hexadecimal I2C address to use; default=0x28

Sensor Configuration

  • frame_id: coordinate frame id of sensor default=’bno055’
  • baudrate: baudrate of sensor default=115200
  • data_query_frequency: frequency (HZ) to read and publish data from sensor; default=100 Hz
  • calib_status_frequency: frequency (HZ) to read and publish calibration status data from sensor; default=0.1 Hz
  • placement_axis_remap: The sensor placement configuration (Axis remapping) defines the position and orientation of the sensor mount. See Bosch BNO055 datasheet section “Axis Remap” for valid positions: “P0”, “P1” (default), “P2”, “P3”, “P4”, “P5”, “P6”, “P7”.

ROS Topic Prefix

  • ros_topic_prefix: ROS topic prefix to be used. Will be prepended to the default topic names (see below). Default=”bno055/”

Calibration

The current calibration values can be requested via the calibration_request service (this puts the imu into CONFIGMODE for a short time):

ros2 service call /bno055/calibration_request example_interfaces/srv/Trigger


ROS Topics

ROS topics published by this ROS2 Node:

While bno055 is the default ROS topic prefix, it can be configured by following the directions above.


Development Workspace Setup

On a Remote Device

Setup of a ROS2 workspace & IDE for a remote device (for example Raspberry Pi):

Clone & Build

Create a ROS2 workspace on your remote device - for instance ~/ros2_ws

Make sure you sourced your ROS2 installation (underlay).

Then clone the project into your workspace’s src directory:

cd ~/ros2_ws/src
git clone https://github.com/flynneva/bno055.git

Perform a build of your workspace

cd ~/ros2_ws
colcon build

Integrate in your IDE

In order to work with the sources in your remote workspace and to integrate them in your IDE, use sshfs:

sudo apt-get install sshfs
sudo modprobe fuse

Create a IDE project directory and mount the remote ROS2 workspace:

mkdir -p ~/projects/bno055/ros2_ws
sshfs ubuntu@192.168.2.153:~/ros2_ws ~/projects/bno055/ros2_ws

Create a new project in your IDE from existing sources in ~/projects/bno055/ros2_ws. You can now manipulate the remote ROS2 workspace using your local IDE (including git operations).

Running the ROS2 node

Run the bno055 ROS2 node with default parameters:

# source your local workspace (overlay) in addition to the ROS2 sourcing (underlay):
source ~/ros2_ws/install/setup.sh
# run the node:
ros2 run bno055 bno055

Run with customized parameter file:

ros2 run bno055 bno055 --ros-args --params-file ./src/bno055/bno055/params/bno055_params.yaml

Run launch file:

ros2 launch bno055 bno055.launch.py

Performing flake8 Linting

To perform code linting with flake8, just perform:

cd ~/ros2_ws/src/bno055
ament_flake8

See www.flake8rules.com for more detailed information about flake8 rules.

Note: We take advantage of flake8’s noqa mechanisim to selectively ignore some errors. Just search for # noqa: in the source code to find them.

CHANGELOG

Changelog for package bno055

0.5.0 (2024-02-17)

  • Bump to 0.5.0 to prep for release
  • Added Gravity publisher (#64)
    • Added Gravity publisher
    • Updated Readme to introduce Gravity publisher
  • Spelling/Grammar (#62)
  • Fix uart write answer reading (#57)
  • Update package.xml to include smbus dependency (#58)
  • fix build error on foxy that caused by typo (#59)
  • Contributors: Andrew Symington, Burak Guler, Combinatrix, Evan Flynn, Vintheruler1, emilnovak

0.4.1 (2023-01-15)

  • Update CHANGELOG
  • Bump patch version after small bug fix
  • Fix i2c issues found (param and division by zero) (#56)

0.4.0 (2023-01-13)

  • Bump version for new release
  • Update CHANGELOG for new release
  • Improve the doc strings for the connectors
  • Add I2C implementation (#52)
  • Merge pull request #50 from flynneva/fix-invalid-log-print Fix invalid log string variable expansion
  • Update CI to include Humble
  • Fix invalid log string variable expansion
  • Merge pull request #49 from sjev/operation_mode
  • add device mode setting
  • Contributors: Andrew Symington, Evan Flynn, Jev

0.3.0 (2022-03-22)

  • Merge pull request #43 from flynneva/develop bring over updates
  • Merge pull request #44 from Towflos/develop
  • fixed setting of calibration data, added default values for mag and acc radius
  • added example_interfaces to package.xml, added service information to README.md
  • cleanup
  • prefix added to service
  • removed seq, fixed parameters, refactored reading of calibratio data, added service to request calibration data
  • added seq and time to message headers
  • mag_radius and accel_radius added to get_calib_offsets()
  • mag radius and acc radius added as parameter
  • fix greetings for incoming PRs from forks see [this nice write up](https://github.com/SalesforceLabs/LightningWebChartJS/pull/95) for details
  • Merge pull request #42 from deepinbubblegum/launch_develop Launch develop
  • edit readme launch file
  • add launch file
  • Merge pull request #41 from flynneva/develop bring over 0.2.0 updates to main
  • Merge pull request #32 from flynneva/develop initial docs up and running
  • Merge pull request #31 from flynneva/develop source galactic not rolling
  • Merge pull request #30 from flynneva/develop dont use forked repo for setup-ros
  • Merge pull request #29 from flynneva/develop fix setup-ros version to 0.2
  • Contributors: Evan Flynn, Florian Herrmann, deepinbubblegum

0.2.0 (2021-12-6)

  • Merge pull request #36 from flynneva/feature/add-covariance [33] add default covariance values, make them configurable
  • fix printout for parameters
  • [33] add defaults for magnetic field covariance values
  • [37] add logic to set offsets
  • [33] add default covariance values, make them configurable
  • Merge pull request #24 from flynneva/fix/scaling_factors
  • [35] add back in comm constants, modify variable names as needed to fix bug introduced by #16
  • [34] use underscores in setup.cfg instead of dashes
  • [23] fix acc and mag scaling factors and make them configurable
  • only run docs ci on main updates
  • use sh instead of bash script for docs ci
  • use . instead of source for docs ci
  • remove -r from pip install
  • use relative paths for docs ci
  • use absolute paths for docs ci
  • ls in docs ci
  • switch doc generation ci to pre-built docker image
  • source galactic not rolling
  • Merge branch 'develop' of github.com:flynneva/bno055 into develop
  • dont use forked repo for setup-ros
  • Merge branch 'main' into develop
  • fix setup-ros version to 0.2
  • Merge pull request #28 from flynneva/develop fix setup ros version to v0.2
  • fix setup ros version to v0.2
  • Merge pull request #27 from flynneva/develop use galactic for doc generation
  • Merge pull request #26 from flynneva/feature/sphinx_docs use galactic for doc generation, not rolling
  • use galactic for doc generation, not rolling
  • Merge pull request #25 from flynneva/develop bring over updates to main, generate docs for first time
  • Merge pull request #16 from flynneva/feature/sphinx_docs Feature/sphinx docs
  • fix docs ci path when uploading docs to gh-pages
  • Merge branch 'develop' into feature/sphinx_docs
  • add modules to docs and update registers
  • Merge pull request #21 from flynneva/develop normalize quaternion
  • Merge pull request #20 from flynneva/fix/normalize_quaternion normalize quaterion
  • normalize quat
  • Merge pull request #19 from flynneva/feature/prebuilt_docker_ci move to pre-built ros docker images
  • move to pre-built ros docker images
  • minor docs updates
  • doc page templates
  • starting on docs
  • Merge pull request #13 from flynneva/develop bump for release
  • Merge pull request #10 from flynneva/develop bring over updates to main
  • Contributors: Evan Flynn, flynneva

0.1.1 (2021-02-04)

  • add changelog
  • Contributors: flynneva

0.0.1 (2021-02-04)

  • Merge pull request #12 from flynneva/feature/release_ci add release actions
  • add release actions
  • Merge pull request #11 from flynneva/fix/README_updates update readme
  • update readme
  • Merge pull request #9 from flynneva/fix/bus_overrun_error Fix/bus overrun error
  • fix flake8 errors & recommended changes
  • added bus_over_run_error to exceptions
  • add pycache to .gitignore
  • Merge pull request #8 from flynneva/fix/remove_eol_distro remove eloquent from ci
  • Merge pull request #7 from flynneva/fix/no_timer_shutdown only shutdown timers if timers are available merging this since it is a minor change
  • remove eloquent from ci
  • seperate log output into two lines for readability
  • only shutdown timers if timers are available
  • Merge pull request #6 from flynneva/fix/flake8 Fix/flake8
  • add flake8 ignore mechanism to README
  • ignore B902 blind except flake8 error
  • copyright fixes
  • fixed flake8 & pep257 errors
  • starting to fix flake8 errors
  • Merge pull request #4 from flynneva/feature/extend-msgs Sensor Placement, Calibration Status, Error Handlng
    • graceful ROS node shutdown on Ctrl+C
    • fix: adjusted calls to transmit()
    • sensor placement is now configurable (axis remap)
    • simplified error handling - now exception-based instead of return values
    • periodic publishing of calibration status (period is configurable)
    • configurable ROS topics (configurable prefix) so that they can be unique
  • Merge pull request #3 from whatis777/develop Basic Project refactorings
  • Merge pull request #1 from whatis777/feature/i2c Feature/i2c
    • improved UART message error handling & logging
    • introduced UART timeout parameter
    • adjusted default values for improved communication quality
    • renamed UART related parameters
    • added locks to prevent overlapping data queries
  • specify ros distro to linter action
  • results of code review: fixed flake8 findings
  • results of code review
  • added UART read & write calls, clean up
  • extracted sensor API (use cases) into separate class; main is now also class based
  • refactored method names & moved connectors
  • extracted ROS node parameter handling
  • restructured sources, added documentation, fixed runtime issues with ROS2
  • Merge pull request #2 from flynneva/actions add linter and rename actions file
  • limit linter to only flake8 for now
  • change linter array format
  • linter array moved out of matrix
  • Merge branch 'actions' of github.com:flynneva/bno055 into actions
  • added linter step to actions
  • Merge pull request #1 from flynneva/actions added gh actions
  • maybe no requirements.txt file needed?
  • removed ros2 pkgs from requirements file
  • added requirements.txt file
  • develop not devel
  • added gh actions
  • fixed ament_python warning by adding data_files
  • extracting UART-specific code, W.I.P.
  • added calibration parameters
  • updated readme
  • added parameters
  • Merge branch 'master' into develop
  • trying to get_parameter
  • added other topics
  • Update README.md
  • added check if buf is empty
  • added back copyright agreement
  • first commit
  • Contributors: Evan Flynn, Manfred Novotny, flynneva, whatis777

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged bno055 at Robotics Stack Exchange

bno055 package from bno055 repo

bno055

Package Summary

Tags No category tags.
Version 0.5.0
License BSD
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/flynneva/bno055.git
VCS Type git
VCS Version main
Last Updated 2024-02-17
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Bosch BNO055 IMU driver for ROS2

Additional Links

No additional links.

Maintainers

  • flynneva

Authors

No additional authors.

A BNO05 ROS2 Package

Description

A ROS2 driver for the sensor IMU Bosch BNO055.

This repo was based off of Michael Drwiega’s work on the Bosch IMU Driver for ROS 1


Wiring Guide

Selecting Connection Type

The default mode is I2C. To select UART mode connect the 3.3V pin to the PS1 pin.

CP2104 USB-to-UART Bridge

When using a CP2104 USB-to-UART Bridge:

BNO055 CP2104 Friend
Vin 5V
GND GND
SDA RXD
SCL TXD

**NOTE: on the CP2104 the pins above refer to the FTDI pins at the opposite end from the USB connector


ROS Node Parameters

To configure with your own settings please adjust the node parameter file and pass it as an argument when starting the node:

ros2 run bno055 bno055 --ros-args --params-file ./src/bno055/bno055/params/bno055_params.yaml

UART Connection

  • connection_type=uart: Defines UART as sensor connection type; default=’uart’
  • uart_port: The UART port to use; default=’/dev/ttyUSB0’
  • uart_baudrate: The baud rate to use; default=115200
  • uart_timeout: The timeout for UART transmissions in seconds to use; default=0.1

I2C Connection

  • connection_type=i2c: Defines I2C as sensor connection type; default=’uart’
  • i2c_bus: The integer I2C bus number to use; default=0
  • i2c_address: The hexadecimal I2C address to use; default=0x28

Sensor Configuration

  • frame_id: coordinate frame id of sensor default=’bno055’
  • baudrate: baudrate of sensor default=115200
  • data_query_frequency: frequency (HZ) to read and publish data from sensor; default=100 Hz
  • calib_status_frequency: frequency (HZ) to read and publish calibration status data from sensor; default=0.1 Hz
  • placement_axis_remap: The sensor placement configuration (Axis remapping) defines the position and orientation of the sensor mount. See Bosch BNO055 datasheet section “Axis Remap” for valid positions: “P0”, “P1” (default), “P2”, “P3”, “P4”, “P5”, “P6”, “P7”.

ROS Topic Prefix

  • ros_topic_prefix: ROS topic prefix to be used. Will be prepended to the default topic names (see below). Default=”bno055/”

Calibration

The current calibration values can be requested via the calibration_request service (this puts the imu into CONFIGMODE for a short time):

ros2 service call /bno055/calibration_request example_interfaces/srv/Trigger


ROS Topics

ROS topics published by this ROS2 Node:

While bno055 is the default ROS topic prefix, it can be configured by following the directions above.


Development Workspace Setup

On a Remote Device

Setup of a ROS2 workspace & IDE for a remote device (for example Raspberry Pi):

Clone & Build

Create a ROS2 workspace on your remote device - for instance ~/ros2_ws

Make sure you sourced your ROS2 installation (underlay).

Then clone the project into your workspace’s src directory:

cd ~/ros2_ws/src
git clone https://github.com/flynneva/bno055.git

Perform a build of your workspace

cd ~/ros2_ws
colcon build

Integrate in your IDE

In order to work with the sources in your remote workspace and to integrate them in your IDE, use sshfs:

sudo apt-get install sshfs
sudo modprobe fuse

Create a IDE project directory and mount the remote ROS2 workspace:

mkdir -p ~/projects/bno055/ros2_ws
sshfs ubuntu@192.168.2.153:~/ros2_ws ~/projects/bno055/ros2_ws

Create a new project in your IDE from existing sources in ~/projects/bno055/ros2_ws. You can now manipulate the remote ROS2 workspace using your local IDE (including git operations).

Running the ROS2 node

Run the bno055 ROS2 node with default parameters:

# source your local workspace (overlay) in addition to the ROS2 sourcing (underlay):
source ~/ros2_ws/install/setup.sh
# run the node:
ros2 run bno055 bno055

Run with customized parameter file:

ros2 run bno055 bno055 --ros-args --params-file ./src/bno055/bno055/params/bno055_params.yaml

Run launch file:

ros2 launch bno055 bno055.launch.py

Performing flake8 Linting

To perform code linting with flake8, just perform:

cd ~/ros2_ws/src/bno055
ament_flake8

See www.flake8rules.com for more detailed information about flake8 rules.

Note: We take advantage of flake8’s noqa mechanisim to selectively ignore some errors. Just search for # noqa: in the source code to find them.

CHANGELOG

Changelog for package bno055

0.5.0 (2024-02-17)

  • Bump to 0.5.0 to prep for release
  • Added Gravity publisher (#64)
    • Added Gravity publisher
    • Updated Readme to introduce Gravity publisher
  • Spelling/Grammar (#62)
  • Fix uart write answer reading (#57)
  • Update package.xml to include smbus dependency (#58)
  • fix build error on foxy that caused by typo (#59)
  • Contributors: Andrew Symington, Burak Guler, Combinatrix, Evan Flynn, Vintheruler1, emilnovak

0.4.1 (2023-01-15)

  • Update CHANGELOG
  • Bump patch version after small bug fix
  • Fix i2c issues found (param and division by zero) (#56)

0.4.0 (2023-01-13)

  • Bump version for new release
  • Update CHANGELOG for new release
  • Improve the doc strings for the connectors
  • Add I2C implementation (#52)
  • Merge pull request #50 from flynneva/fix-invalid-log-print Fix invalid log string variable expansion
  • Update CI to include Humble
  • Fix invalid log string variable expansion
  • Merge pull request #49 from sjev/operation_mode
  • add device mode setting
  • Contributors: Andrew Symington, Evan Flynn, Jev

0.3.0 (2022-03-22)

  • Merge pull request #43 from flynneva/develop bring over updates
  • Merge pull request #44 from Towflos/develop
  • fixed setting of calibration data, added default values for mag and acc radius
  • added example_interfaces to package.xml, added service information to README.md
  • cleanup
  • prefix added to service
  • removed seq, fixed parameters, refactored reading of calibratio data, added service to request calibration data
  • added seq and time to message headers
  • mag_radius and accel_radius added to get_calib_offsets()
  • mag radius and acc radius added as parameter
  • fix greetings for incoming PRs from forks see [this nice write up](https://github.com/SalesforceLabs/LightningWebChartJS/pull/95) for details
  • Merge pull request #42 from deepinbubblegum/launch_develop Launch develop
  • edit readme launch file
  • add launch file
  • Merge pull request #41 from flynneva/develop bring over 0.2.0 updates to main
  • Merge pull request #32 from flynneva/develop initial docs up and running
  • Merge pull request #31 from flynneva/develop source galactic not rolling
  • Merge pull request #30 from flynneva/develop dont use forked repo for setup-ros
  • Merge pull request #29 from flynneva/develop fix setup-ros version to 0.2
  • Contributors: Evan Flynn, Florian Herrmann, deepinbubblegum

0.2.0 (2021-12-6)

  • Merge pull request #36 from flynneva/feature/add-covariance [33] add default covariance values, make them configurable
  • fix printout for parameters
  • [33] add defaults for magnetic field covariance values
  • [37] add logic to set offsets
  • [33] add default covariance values, make them configurable
  • Merge pull request #24 from flynneva/fix/scaling_factors
  • [35] add back in comm constants, modify variable names as needed to fix bug introduced by #16
  • [34] use underscores in setup.cfg instead of dashes
  • [23] fix acc and mag scaling factors and make them configurable
  • only run docs ci on main updates
  • use sh instead of bash script for docs ci
  • use . instead of source for docs ci
  • remove -r from pip install
  • use relative paths for docs ci
  • use absolute paths for docs ci
  • ls in docs ci
  • switch doc generation ci to pre-built docker image
  • source galactic not rolling
  • Merge branch 'develop' of github.com:flynneva/bno055 into develop
  • dont use forked repo for setup-ros
  • Merge branch 'main' into develop
  • fix setup-ros version to 0.2
  • Merge pull request #28 from flynneva/develop fix setup ros version to v0.2
  • fix setup ros version to v0.2
  • Merge pull request #27 from flynneva/develop use galactic for doc generation
  • Merge pull request #26 from flynneva/feature/sphinx_docs use galactic for doc generation, not rolling
  • use galactic for doc generation, not rolling
  • Merge pull request #25 from flynneva/develop bring over updates to main, generate docs for first time
  • Merge pull request #16 from flynneva/feature/sphinx_docs Feature/sphinx docs
  • fix docs ci path when uploading docs to gh-pages
  • Merge branch 'develop' into feature/sphinx_docs
  • add modules to docs and update registers
  • Merge pull request #21 from flynneva/develop normalize quaternion
  • Merge pull request #20 from flynneva/fix/normalize_quaternion normalize quaterion
  • normalize quat
  • Merge pull request #19 from flynneva/feature/prebuilt_docker_ci move to pre-built ros docker images
  • move to pre-built ros docker images
  • minor docs updates
  • doc page templates
  • starting on docs
  • Merge pull request #13 from flynneva/develop bump for release
  • Merge pull request #10 from flynneva/develop bring over updates to main
  • Contributors: Evan Flynn, flynneva

0.1.1 (2021-02-04)

  • add changelog
  • Contributors: flynneva

0.0.1 (2021-02-04)

  • Merge pull request #12 from flynneva/feature/release_ci add release actions
  • add release actions
  • Merge pull request #11 from flynneva/fix/README_updates update readme
  • update readme
  • Merge pull request #9 from flynneva/fix/bus_overrun_error Fix/bus overrun error
  • fix flake8 errors & recommended changes
  • added bus_over_run_error to exceptions
  • add pycache to .gitignore
  • Merge pull request #8 from flynneva/fix/remove_eol_distro remove eloquent from ci
  • Merge pull request #7 from flynneva/fix/no_timer_shutdown only shutdown timers if timers are available merging this since it is a minor change
  • remove eloquent from ci
  • seperate log output into two lines for readability
  • only shutdown timers if timers are available
  • Merge pull request #6 from flynneva/fix/flake8 Fix/flake8
  • add flake8 ignore mechanism to README
  • ignore B902 blind except flake8 error
  • copyright fixes
  • fixed flake8 & pep257 errors
  • starting to fix flake8 errors
  • Merge pull request #4 from flynneva/feature/extend-msgs Sensor Placement, Calibration Status, Error Handlng
    • graceful ROS node shutdown on Ctrl+C
    • fix: adjusted calls to transmit()
    • sensor placement is now configurable (axis remap)
    • simplified error handling - now exception-based instead of return values
    • periodic publishing of calibration status (period is configurable)
    • configurable ROS topics (configurable prefix) so that they can be unique
  • Merge pull request #3 from whatis777/develop Basic Project refactorings
  • Merge pull request #1 from whatis777/feature/i2c Feature/i2c
    • improved UART message error handling & logging
    • introduced UART timeout parameter
    • adjusted default values for improved communication quality
    • renamed UART related parameters
    • added locks to prevent overlapping data queries
  • specify ros distro to linter action
  • results of code review: fixed flake8 findings
  • results of code review
  • added UART read & write calls, clean up
  • extracted sensor API (use cases) into separate class; main is now also class based
  • refactored method names & moved connectors
  • extracted ROS node parameter handling
  • restructured sources, added documentation, fixed runtime issues with ROS2
  • Merge pull request #2 from flynneva/actions add linter and rename actions file
  • limit linter to only flake8 for now
  • change linter array format
  • linter array moved out of matrix
  • Merge branch 'actions' of github.com:flynneva/bno055 into actions
  • added linter step to actions
  • Merge pull request #1 from flynneva/actions added gh actions
  • maybe no requirements.txt file needed?
  • removed ros2 pkgs from requirements file
  • added requirements.txt file
  • develop not devel
  • added gh actions
  • fixed ament_python warning by adding data_files
  • extracting UART-specific code, W.I.P.
  • added calibration parameters
  • updated readme
  • added parameters
  • Merge branch 'master' into develop
  • trying to get_parameter
  • added other topics
  • Update README.md
  • added check if buf is empty
  • added back copyright agreement
  • first commit
  • Contributors: Evan Flynn, Manfred Novotny, flynneva, whatis777

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged bno055 at Robotics Stack Exchange

No version for distro noetic. Known supported distros are highlighted in the buttons above.
No version for distro ardent. Known supported distros are highlighted in the buttons above.
No version for distro bouncy. Known supported distros are highlighted in the buttons above.
No version for distro crystal. Known supported distros are highlighted in the buttons above.
No version for distro eloquent. Known supported distros are highlighted in the buttons above.
No version for distro dashing. Known supported distros are highlighted in the buttons above.
No version for distro galactic. Known supported distros are highlighted in the buttons above.

bno055 package from bno055 repo

bno055

Package Summary

Tags No category tags.
Version 0.5.0
License BSD
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/flynneva/bno055.git
VCS Type git
VCS Version main
Last Updated 2024-02-17
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Bosch BNO055 IMU driver for ROS2

Additional Links

No additional links.

Maintainers

  • flynneva

Authors

No additional authors.

A BNO05 ROS2 Package

Description

A ROS2 driver for the sensor IMU Bosch BNO055.

This repo was based off of Michael Drwiega’s work on the Bosch IMU Driver for ROS 1


Wiring Guide

Selecting Connection Type

The default mode is I2C. To select UART mode connect the 3.3V pin to the PS1 pin.

CP2104 USB-to-UART Bridge

When using a CP2104 USB-to-UART Bridge:

BNO055 CP2104 Friend
Vin 5V
GND GND
SDA RXD
SCL TXD

**NOTE: on the CP2104 the pins above refer to the FTDI pins at the opposite end from the USB connector


ROS Node Parameters

To configure with your own settings please adjust the node parameter file and pass it as an argument when starting the node:

ros2 run bno055 bno055 --ros-args --params-file ./src/bno055/bno055/params/bno055_params.yaml

UART Connection

  • connection_type=uart: Defines UART as sensor connection type; default=’uart’
  • uart_port: The UART port to use; default=’/dev/ttyUSB0’
  • uart_baudrate: The baud rate to use; default=115200
  • uart_timeout: The timeout for UART transmissions in seconds to use; default=0.1

I2C Connection

  • connection_type=i2c: Defines I2C as sensor connection type; default=’uart’
  • i2c_bus: The integer I2C bus number to use; default=0
  • i2c_address: The hexadecimal I2C address to use; default=0x28

Sensor Configuration

  • frame_id: coordinate frame id of sensor default=’bno055’
  • baudrate: baudrate of sensor default=115200
  • data_query_frequency: frequency (HZ) to read and publish data from sensor; default=100 Hz
  • calib_status_frequency: frequency (HZ) to read and publish calibration status data from sensor; default=0.1 Hz
  • placement_axis_remap: The sensor placement configuration (Axis remapping) defines the position and orientation of the sensor mount. See Bosch BNO055 datasheet section “Axis Remap” for valid positions: “P0”, “P1” (default), “P2”, “P3”, “P4”, “P5”, “P6”, “P7”.

ROS Topic Prefix

  • ros_topic_prefix: ROS topic prefix to be used. Will be prepended to the default topic names (see below). Default=”bno055/”

Calibration

The current calibration values can be requested via the calibration_request service (this puts the imu into CONFIGMODE for a short time):

ros2 service call /bno055/calibration_request example_interfaces/srv/Trigger


ROS Topics

ROS topics published by this ROS2 Node:

While bno055 is the default ROS topic prefix, it can be configured by following the directions above.


Development Workspace Setup

On a Remote Device

Setup of a ROS2 workspace & IDE for a remote device (for example Raspberry Pi):

Clone & Build

Create a ROS2 workspace on your remote device - for instance ~/ros2_ws

Make sure you sourced your ROS2 installation (underlay).

Then clone the project into your workspace’s src directory:

cd ~/ros2_ws/src
git clone https://github.com/flynneva/bno055.git

Perform a build of your workspace

cd ~/ros2_ws
colcon build

Integrate in your IDE

In order to work with the sources in your remote workspace and to integrate them in your IDE, use sshfs:

sudo apt-get install sshfs
sudo modprobe fuse

Create a IDE project directory and mount the remote ROS2 workspace:

mkdir -p ~/projects/bno055/ros2_ws
sshfs ubuntu@192.168.2.153:~/ros2_ws ~/projects/bno055/ros2_ws

Create a new project in your IDE from existing sources in ~/projects/bno055/ros2_ws. You can now manipulate the remote ROS2 workspace using your local IDE (including git operations).

Running the ROS2 node

Run the bno055 ROS2 node with default parameters:

# source your local workspace (overlay) in addition to the ROS2 sourcing (underlay):
source ~/ros2_ws/install/setup.sh
# run the node:
ros2 run bno055 bno055

Run with customized parameter file:

ros2 run bno055 bno055 --ros-args --params-file ./src/bno055/bno055/params/bno055_params.yaml

Run launch file:

ros2 launch bno055 bno055.launch.py

Performing flake8 Linting

To perform code linting with flake8, just perform:

cd ~/ros2_ws/src/bno055
ament_flake8

See www.flake8rules.com for more detailed information about flake8 rules.

Note: We take advantage of flake8’s noqa mechanisim to selectively ignore some errors. Just search for # noqa: in the source code to find them.

CHANGELOG

Changelog for package bno055

0.5.0 (2024-02-17)

  • Bump to 0.5.0 to prep for release
  • Added Gravity publisher (#64)
    • Added Gravity publisher
    • Updated Readme to introduce Gravity publisher
  • Spelling/Grammar (#62)
  • Fix uart write answer reading (#57)
  • Update package.xml to include smbus dependency (#58)
  • fix build error on foxy that caused by typo (#59)
  • Contributors: Andrew Symington, Burak Guler, Combinatrix, Evan Flynn, Vintheruler1, emilnovak

0.4.1 (2023-01-15)

  • Update CHANGELOG
  • Bump patch version after small bug fix
  • Fix i2c issues found (param and division by zero) (#56)

0.4.0 (2023-01-13)

  • Bump version for new release
  • Update CHANGELOG for new release
  • Improve the doc strings for the connectors
  • Add I2C implementation (#52)
  • Merge pull request #50 from flynneva/fix-invalid-log-print Fix invalid log string variable expansion
  • Update CI to include Humble
  • Fix invalid log string variable expansion
  • Merge pull request #49 from sjev/operation_mode
  • add device mode setting
  • Contributors: Andrew Symington, Evan Flynn, Jev

0.3.0 (2022-03-22)

  • Merge pull request #43 from flynneva/develop bring over updates
  • Merge pull request #44 from Towflos/develop
  • fixed setting of calibration data, added default values for mag and acc radius
  • added example_interfaces to package.xml, added service information to README.md
  • cleanup
  • prefix added to service
  • removed seq, fixed parameters, refactored reading of calibratio data, added service to request calibration data
  • added seq and time to message headers
  • mag_radius and accel_radius added to get_calib_offsets()
  • mag radius and acc radius added as parameter
  • fix greetings for incoming PRs from forks see [this nice write up](https://github.com/SalesforceLabs/LightningWebChartJS/pull/95) for details
  • Merge pull request #42 from deepinbubblegum/launch_develop Launch develop
  • edit readme launch file
  • add launch file
  • Merge pull request #41 from flynneva/develop bring over 0.2.0 updates to main
  • Merge pull request #32 from flynneva/develop initial docs up and running
  • Merge pull request #31 from flynneva/develop source galactic not rolling
  • Merge pull request #30 from flynneva/develop dont use forked repo for setup-ros
  • Merge pull request #29 from flynneva/develop fix setup-ros version to 0.2
  • Contributors: Evan Flynn, Florian Herrmann, deepinbubblegum

0.2.0 (2021-12-6)

  • Merge pull request #36 from flynneva/feature/add-covariance [33] add default covariance values, make them configurable
  • fix printout for parameters
  • [33] add defaults for magnetic field covariance values
  • [37] add logic to set offsets
  • [33] add default covariance values, make them configurable
  • Merge pull request #24 from flynneva/fix/scaling_factors
  • [35] add back in comm constants, modify variable names as needed to fix bug introduced by #16
  • [34] use underscores in setup.cfg instead of dashes
  • [23] fix acc and mag scaling factors and make them configurable
  • only run docs ci on main updates
  • use sh instead of bash script for docs ci
  • use . instead of source for docs ci
  • remove -r from pip install
  • use relative paths for docs ci
  • use absolute paths for docs ci
  • ls in docs ci
  • switch doc generation ci to pre-built docker image
  • source galactic not rolling
  • Merge branch 'develop' of github.com:flynneva/bno055 into develop
  • dont use forked repo for setup-ros
  • Merge branch 'main' into develop
  • fix setup-ros version to 0.2
  • Merge pull request #28 from flynneva/develop fix setup ros version to v0.2
  • fix setup ros version to v0.2
  • Merge pull request #27 from flynneva/develop use galactic for doc generation
  • Merge pull request #26 from flynneva/feature/sphinx_docs use galactic for doc generation, not rolling
  • use galactic for doc generation, not rolling
  • Merge pull request #25 from flynneva/develop bring over updates to main, generate docs for first time
  • Merge pull request #16 from flynneva/feature/sphinx_docs Feature/sphinx docs
  • fix docs ci path when uploading docs to gh-pages
  • Merge branch 'develop' into feature/sphinx_docs
  • add modules to docs and update registers
  • Merge pull request #21 from flynneva/develop normalize quaternion
  • Merge pull request #20 from flynneva/fix/normalize_quaternion normalize quaterion
  • normalize quat
  • Merge pull request #19 from flynneva/feature/prebuilt_docker_ci move to pre-built ros docker images
  • move to pre-built ros docker images
  • minor docs updates
  • doc page templates
  • starting on docs
  • Merge pull request #13 from flynneva/develop bump for release
  • Merge pull request #10 from flynneva/develop bring over updates to main
  • Contributors: Evan Flynn, flynneva

0.1.1 (2021-02-04)

  • add changelog
  • Contributors: flynneva

0.0.1 (2021-02-04)

  • Merge pull request #12 from flynneva/feature/release_ci add release actions
  • add release actions
  • Merge pull request #11 from flynneva/fix/README_updates update readme
  • update readme
  • Merge pull request #9 from flynneva/fix/bus_overrun_error Fix/bus overrun error
  • fix flake8 errors & recommended changes
  • added bus_over_run_error to exceptions
  • add pycache to .gitignore
  • Merge pull request #8 from flynneva/fix/remove_eol_distro remove eloquent from ci
  • Merge pull request #7 from flynneva/fix/no_timer_shutdown only shutdown timers if timers are available merging this since it is a minor change
  • remove eloquent from ci
  • seperate log output into two lines for readability
  • only shutdown timers if timers are available
  • Merge pull request #6 from flynneva/fix/flake8 Fix/flake8
  • add flake8 ignore mechanism to README
  • ignore B902 blind except flake8 error
  • copyright fixes
  • fixed flake8 & pep257 errors
  • starting to fix flake8 errors
  • Merge pull request #4 from flynneva/feature/extend-msgs Sensor Placement, Calibration Status, Error Handlng
    • graceful ROS node shutdown on Ctrl+C
    • fix: adjusted calls to transmit()
    • sensor placement is now configurable (axis remap)
    • simplified error handling - now exception-based instead of return values
    • periodic publishing of calibration status (period is configurable)
    • configurable ROS topics (configurable prefix) so that they can be unique
  • Merge pull request #3 from whatis777/develop Basic Project refactorings
  • Merge pull request #1 from whatis777/feature/i2c Feature/i2c
    • improved UART message error handling & logging
    • introduced UART timeout parameter
    • adjusted default values for improved communication quality
    • renamed UART related parameters
    • added locks to prevent overlapping data queries
  • specify ros distro to linter action
  • results of code review: fixed flake8 findings
  • results of code review
  • added UART read & write calls, clean up
  • extracted sensor API (use cases) into separate class; main is now also class based
  • refactored method names & moved connectors
  • extracted ROS node parameter handling
  • restructured sources, added documentation, fixed runtime issues with ROS2
  • Merge pull request #2 from flynneva/actions add linter and rename actions file
  • limit linter to only flake8 for now
  • change linter array format
  • linter array moved out of matrix
  • Merge branch 'actions' of github.com:flynneva/bno055 into actions
  • added linter step to actions
  • Merge pull request #1 from flynneva/actions added gh actions
  • maybe no requirements.txt file needed?
  • removed ros2 pkgs from requirements file
  • added requirements.txt file
  • develop not devel
  • added gh actions
  • fixed ament_python warning by adding data_files
  • extracting UART-specific code, W.I.P.
  • added calibration parameters
  • updated readme
  • added parameters
  • Merge branch 'master' into develop
  • trying to get_parameter
  • added other topics
  • Update README.md
  • added check if buf is empty
  • added back copyright agreement
  • first commit
  • Contributors: Evan Flynn, Manfred Novotny, flynneva, whatis777

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged bno055 at Robotics Stack Exchange

bno055 package from bno055 repo

bno055

Package Summary

Tags No category tags.
Version 0.5.0
License BSD
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/flynneva/bno055.git
VCS Type git
VCS Version main
Last Updated 2024-02-17
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Bosch BNO055 IMU driver for ROS2

Additional Links

No additional links.

Maintainers

  • flynneva

Authors

No additional authors.

A BNO05 ROS2 Package

Description

A ROS2 driver for the sensor IMU Bosch BNO055.

This repo was based off of Michael Drwiega’s work on the Bosch IMU Driver for ROS 1


Wiring Guide

Selecting Connection Type

The default mode is I2C. To select UART mode connect the 3.3V pin to the PS1 pin.

CP2104 USB-to-UART Bridge

When using a CP2104 USB-to-UART Bridge:

BNO055 CP2104 Friend
Vin 5V
GND GND
SDA RXD
SCL TXD

**NOTE: on the CP2104 the pins above refer to the FTDI pins at the opposite end from the USB connector


ROS Node Parameters

To configure with your own settings please adjust the node parameter file and pass it as an argument when starting the node:

ros2 run bno055 bno055 --ros-args --params-file ./src/bno055/bno055/params/bno055_params.yaml

UART Connection

  • connection_type=uart: Defines UART as sensor connection type; default=’uart’
  • uart_port: The UART port to use; default=’/dev/ttyUSB0’
  • uart_baudrate: The baud rate to use; default=115200
  • uart_timeout: The timeout for UART transmissions in seconds to use; default=0.1

I2C Connection

  • connection_type=i2c: Defines I2C as sensor connection type; default=’uart’
  • i2c_bus: The integer I2C bus number to use; default=0
  • i2c_address: The hexadecimal I2C address to use; default=0x28

Sensor Configuration

  • frame_id: coordinate frame id of sensor default=’bno055’
  • baudrate: baudrate of sensor default=115200
  • data_query_frequency: frequency (HZ) to read and publish data from sensor; default=100 Hz
  • calib_status_frequency: frequency (HZ) to read and publish calibration status data from sensor; default=0.1 Hz
  • placement_axis_remap: The sensor placement configuration (Axis remapping) defines the position and orientation of the sensor mount. See Bosch BNO055 datasheet section “Axis Remap” for valid positions: “P0”, “P1” (default), “P2”, “P3”, “P4”, “P5”, “P6”, “P7”.

ROS Topic Prefix

  • ros_topic_prefix: ROS topic prefix to be used. Will be prepended to the default topic names (see below). Default=”bno055/”

Calibration

The current calibration values can be requested via the calibration_request service (this puts the imu into CONFIGMODE for a short time):

ros2 service call /bno055/calibration_request example_interfaces/srv/Trigger


ROS Topics

ROS topics published by this ROS2 Node:

While bno055 is the default ROS topic prefix, it can be configured by following the directions above.


Development Workspace Setup

On a Remote Device

Setup of a ROS2 workspace & IDE for a remote device (for example Raspberry Pi):

Clone & Build

Create a ROS2 workspace on your remote device - for instance ~/ros2_ws

Make sure you sourced your ROS2 installation (underlay).

Then clone the project into your workspace’s src directory:

cd ~/ros2_ws/src
git clone https://github.com/flynneva/bno055.git

Perform a build of your workspace

cd ~/ros2_ws
colcon build

Integrate in your IDE

In order to work with the sources in your remote workspace and to integrate them in your IDE, use sshfs:

sudo apt-get install sshfs
sudo modprobe fuse

Create a IDE project directory and mount the remote ROS2 workspace:

mkdir -p ~/projects/bno055/ros2_ws
sshfs ubuntu@192.168.2.153:~/ros2_ws ~/projects/bno055/ros2_ws

Create a new project in your IDE from existing sources in ~/projects/bno055/ros2_ws. You can now manipulate the remote ROS2 workspace using your local IDE (including git operations).

Running the ROS2 node

Run the bno055 ROS2 node with default parameters:

# source your local workspace (overlay) in addition to the ROS2 sourcing (underlay):
source ~/ros2_ws/install/setup.sh
# run the node:
ros2 run bno055 bno055

Run with customized parameter file:

ros2 run bno055 bno055 --ros-args --params-file ./src/bno055/bno055/params/bno055_params.yaml

Run launch file:

ros2 launch bno055 bno055.launch.py

Performing flake8 Linting

To perform code linting with flake8, just perform:

cd ~/ros2_ws/src/bno055
ament_flake8

See www.flake8rules.com for more detailed information about flake8 rules.

Note: We take advantage of flake8’s noqa mechanisim to selectively ignore some errors. Just search for # noqa: in the source code to find them.

CHANGELOG

Changelog for package bno055

0.5.0 (2024-02-17)

  • Bump to 0.5.0 to prep for release
  • Added Gravity publisher (#64)
    • Added Gravity publisher
    • Updated Readme to introduce Gravity publisher
  • Spelling/Grammar (#62)
  • Fix uart write answer reading (#57)
  • Update package.xml to include smbus dependency (#58)
  • fix build error on foxy that caused by typo (#59)
  • Contributors: Andrew Symington, Burak Guler, Combinatrix, Evan Flynn, Vintheruler1, emilnovak

0.4.1 (2023-01-15)

  • Update CHANGELOG
  • Bump patch version after small bug fix
  • Fix i2c issues found (param and division by zero) (#56)

0.4.0 (2023-01-13)

  • Bump version for new release
  • Update CHANGELOG for new release
  • Improve the doc strings for the connectors
  • Add I2C implementation (#52)
  • Merge pull request #50 from flynneva/fix-invalid-log-print Fix invalid log string variable expansion
  • Update CI to include Humble
  • Fix invalid log string variable expansion
  • Merge pull request #49 from sjev/operation_mode
  • add device mode setting
  • Contributors: Andrew Symington, Evan Flynn, Jev

0.3.0 (2022-03-22)

  • Merge pull request #43 from flynneva/develop bring over updates
  • Merge pull request #44 from Towflos/develop
  • fixed setting of calibration data, added default values for mag and acc radius
  • added example_interfaces to package.xml, added service information to README.md
  • cleanup
  • prefix added to service
  • removed seq, fixed parameters, refactored reading of calibratio data, added service to request calibration data
  • added seq and time to message headers
  • mag_radius and accel_radius added to get_calib_offsets()
  • mag radius and acc radius added as parameter
  • fix greetings for incoming PRs from forks see [this nice write up](https://github.com/SalesforceLabs/LightningWebChartJS/pull/95) for details
  • Merge pull request #42 from deepinbubblegum/launch_develop Launch develop
  • edit readme launch file
  • add launch file
  • Merge pull request #41 from flynneva/develop bring over 0.2.0 updates to main
  • Merge pull request #32 from flynneva/develop initial docs up and running
  • Merge pull request #31 from flynneva/develop source galactic not rolling
  • Merge pull request #30 from flynneva/develop dont use forked repo for setup-ros
  • Merge pull request #29 from flynneva/develop fix setup-ros version to 0.2
  • Contributors: Evan Flynn, Florian Herrmann, deepinbubblegum

0.2.0 (2021-12-6)

  • Merge pull request #36 from flynneva/feature/add-covariance [33] add default covariance values, make them configurable
  • fix printout for parameters
  • [33] add defaults for magnetic field covariance values
  • [37] add logic to set offsets
  • [33] add default covariance values, make them configurable
  • Merge pull request #24 from flynneva/fix/scaling_factors
  • [35] add back in comm constants, modify variable names as needed to fix bug introduced by #16
  • [34] use underscores in setup.cfg instead of dashes
  • [23] fix acc and mag scaling factors and make them configurable
  • only run docs ci on main updates
  • use sh instead of bash script for docs ci
  • use . instead of source for docs ci
  • remove -r from pip install
  • use relative paths for docs ci
  • use absolute paths for docs ci
  • ls in docs ci
  • switch doc generation ci to pre-built docker image
  • source galactic not rolling
  • Merge branch 'develop' of github.com:flynneva/bno055 into develop
  • dont use forked repo for setup-ros
  • Merge branch 'main' into develop
  • fix setup-ros version to 0.2
  • Merge pull request #28 from flynneva/develop fix setup ros version to v0.2
  • fix setup ros version to v0.2
  • Merge pull request #27 from flynneva/develop use galactic for doc generation
  • Merge pull request #26 from flynneva/feature/sphinx_docs use galactic for doc generation, not rolling
  • use galactic for doc generation, not rolling
  • Merge pull request #25 from flynneva/develop bring over updates to main, generate docs for first time
  • Merge pull request #16 from flynneva/feature/sphinx_docs Feature/sphinx docs
  • fix docs ci path when uploading docs to gh-pages
  • Merge branch 'develop' into feature/sphinx_docs
  • add modules to docs and update registers
  • Merge pull request #21 from flynneva/develop normalize quaternion
  • Merge pull request #20 from flynneva/fix/normalize_quaternion normalize quaterion
  • normalize quat
  • Merge pull request #19 from flynneva/feature/prebuilt_docker_ci move to pre-built ros docker images
  • move to pre-built ros docker images
  • minor docs updates
  • doc page templates
  • starting on docs
  • Merge pull request #13 from flynneva/develop bump for release
  • Merge pull request #10 from flynneva/develop bring over updates to main
  • Contributors: Evan Flynn, flynneva

0.1.1 (2021-02-04)

  • add changelog
  • Contributors: flynneva

0.0.1 (2021-02-04)

  • Merge pull request #12 from flynneva/feature/release_ci add release actions
  • add release actions
  • Merge pull request #11 from flynneva/fix/README_updates update readme
  • update readme
  • Merge pull request #9 from flynneva/fix/bus_overrun_error Fix/bus overrun error
  • fix flake8 errors & recommended changes
  • added bus_over_run_error to exceptions
  • add pycache to .gitignore
  • Merge pull request #8 from flynneva/fix/remove_eol_distro remove eloquent from ci
  • Merge pull request #7 from flynneva/fix/no_timer_shutdown only shutdown timers if timers are available merging this since it is a minor change
  • remove eloquent from ci
  • seperate log output into two lines for readability
  • only shutdown timers if timers are available
  • Merge pull request #6 from flynneva/fix/flake8 Fix/flake8
  • add flake8 ignore mechanism to README
  • ignore B902 blind except flake8 error
  • copyright fixes
  • fixed flake8 & pep257 errors
  • starting to fix flake8 errors
  • Merge pull request #4 from flynneva/feature/extend-msgs Sensor Placement, Calibration Status, Error Handlng
    • graceful ROS node shutdown on Ctrl+C
    • fix: adjusted calls to transmit()
    • sensor placement is now configurable (axis remap)
    • simplified error handling - now exception-based instead of return values
    • periodic publishing of calibration status (period is configurable)
    • configurable ROS topics (configurable prefix) so that they can be unique
  • Merge pull request #3 from whatis777/develop Basic Project refactorings
  • Merge pull request #1 from whatis777/feature/i2c Feature/i2c
    • improved UART message error handling & logging
    • introduced UART timeout parameter
    • adjusted default values for improved communication quality
    • renamed UART related parameters
    • added locks to prevent overlapping data queries
  • specify ros distro to linter action
  • results of code review: fixed flake8 findings
  • results of code review
  • added UART read & write calls, clean up
  • extracted sensor API (use cases) into separate class; main is now also class based
  • refactored method names & moved connectors
  • extracted ROS node parameter handling
  • restructured sources, added documentation, fixed runtime issues with ROS2
  • Merge pull request #2 from flynneva/actions add linter and rename actions file
  • limit linter to only flake8 for now
  • change linter array format
  • linter array moved out of matrix
  • Merge branch 'actions' of github.com:flynneva/bno055 into actions
  • added linter step to actions
  • Merge pull request #1 from flynneva/actions added gh actions
  • maybe no requirements.txt file needed?
  • removed ros2 pkgs from requirements file
  • added requirements.txt file
  • develop not devel
  • added gh actions
  • fixed ament_python warning by adding data_files
  • extracting UART-specific code, W.I.P.
  • added calibration parameters
  • updated readme
  • added parameters
  • Merge branch 'master' into develop
  • trying to get_parameter
  • added other topics
  • Update README.md
  • added check if buf is empty
  • added back copyright agreement
  • first commit
  • Contributors: Evan Flynn, Manfred Novotny, flynneva, whatis777

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged bno055 at Robotics Stack Exchange

No version for distro lunar. Known supported distros are highlighted in the buttons above.
No version for distro jade. Known supported distros are highlighted in the buttons above.
No version for distro indigo. Known supported distros are highlighted in the buttons above.
No version for distro hydro. Known supported distros are highlighted in the buttons above.
No version for distro kinetic. Known supported distros are highlighted in the buttons above.
No version for distro melodic. Known supported distros are highlighted in the buttons above.