All Projects → flynneva → bno055

flynneva / bno055

Licence: BSD-3-Clause license
ROS2 driver for Bosch BNO055 using UART or I2C

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to bno055

rtimulib ros
A small package to use the RTIMULib in ROS
Stars: ✭ 28 (+12%)
Mutual labels:  i2c, imu
MPU60X0
Fast, Lightweight STM32 I2C HAL Driver for the MPU6000/MPU6050 IMU
Stars: ✭ 15 (-40%)
Mutual labels:  i2c, imu
FPGA-I2C-Minion
A simple I2C minion in VHDL
Stars: ✭ 50 (+100%)
Mutual labels:  i2c
Sweet-Sixteen
Sweet Sixteen eurorack module by Tesseract Modular
Stars: ✭ 28 (+12%)
Mutual labels:  i2c
zed-ros2-wrapper
ROS 2 wrapper beta for the ZED SDK
Stars: ✭ 61 (+144%)
Mutual labels:  ros2
community
ROS 2 Hardware Acceleration Working Group community governance model & list of projects
Stars: ✭ 34 (+36%)
Mutual labels:  ros2
lidar-sync-mimics-gps
Open-Source LiDAR Time Synchronization System by Mimicking GPS-clock
Stars: ✭ 52 (+108%)
Mutual labels:  imu
embedded-sht
Embedded SHT Drivers for Sensirion Temperature and Humidity Sensors - Download the Zip Package from the Release Page
Stars: ✭ 53 (+112%)
Mutual labels:  i2c
sensor-imu
C library to interact with various IMUs (MPU6000, MPU6050, MPU6500, ICM20600, ICM20601, ICM2062)
Stars: ✭ 16 (-36%)
Mutual labels:  imu
KRS
The Kria Robotics Stack (KRS) is a ROS 2 superset for industry, an integrated set of robot libraries and utilities to accelerate the development, maintenance and commercialization of industrial-grade robotic solutions while using adaptive computing.
Stars: ✭ 26 (+4%)
Mutual labels:  ros2
ros2-tensorflow
ROS2 nodes for computer vision tasks in Tensorflow
Stars: ✭ 41 (+64%)
Mutual labels:  ros2
vdcd
vdcd - virtual device controller daemon/framework for digitalSTROM
Stars: ✭ 19 (-24%)
Mutual labels:  i2c
tinyfont
Text library for TinyGo displays
Stars: ✭ 37 (+48%)
Mutual labels:  i2c
isaac ros apriltag
CUDA-accelerated Apriltag detection
Stars: ✭ 42 (+68%)
Mutual labels:  ros2
esp-01-WiFi-Scanner-ESP-01-OLED-I2C-Display
Scanner WiFi avec écran OLED I2C (SSD1306) sur un ESP-01 (ESP8266)
Stars: ✭ 21 (-16%)
Mutual labels:  i2c
pymetawear
Community developed SDK around the Python bindings for the C++ SDK
Stars: ✭ 42 (+68%)
Mutual labels:  imu
IMU-VR-Full-Body-Tracker
Inertial Measurement Unit (IMU) based full body tracker for Steam VR.
Stars: ✭ 46 (+84%)
Mutual labels:  imu
PCF8574
Arduino library for PCF8574 - I2C IO expander
Stars: ✭ 60 (+140%)
Mutual labels:  i2c
digital-electronics-2
AVR course at Brno University of Technology
Stars: ✭ 12 (-52%)
Mutual labels:  i2c
ros2 examples
Examples for individual ROS2 functionalities inc. Subscribers, Publishers, Timers, Services, Parameters. ...
Stars: ✭ 46 (+84%)
Mutual labels:  ros2

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

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 [email protected]:~/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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].