{"id":26962313,"url":"https://github.com/flynneva/bno055","last_synced_at":"2025-04-03T05:27:58.068Z","repository":{"id":43403553,"uuid":"200556447","full_name":"flynneva/bno055","owner":"flynneva","description":"ROS2 driver for Bosch BNO055 using UART or I2C","archived":false,"fork":false,"pushed_at":"2024-02-17T17:15:08.000Z","size":743,"stargazers_count":78,"open_issues_count":12,"forks_count":45,"subscribers_count":7,"default_branch":"main","last_synced_at":"2024-06-20T09:27:51.688Z","etag":null,"topics":["bno055","i2c","imu","ros2","ros2-driver","sensor-msgs","uart-communication"],"latest_commit_sha":null,"homepage":"https://flynneva.github.io/bno055/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flynneva.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.rst","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null}},"created_at":"2019-08-05T00:36:12.000Z","updated_at":"2024-06-17T17:10:57.000Z","dependencies_parsed_at":"2023-12-02T17:41:48.539Z","dependency_job_id":null,"html_url":"https://github.com/flynneva/bno055","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flynneva%2Fbno055","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flynneva%2Fbno055/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flynneva%2Fbno055/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flynneva%2Fbno055/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flynneva","download_url":"https://codeload.github.com/flynneva/bno055/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246942999,"owners_count":20858627,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bno055","i2c","imu","ros2","ros2-driver","sensor-msgs","uart-communication"],"created_at":"2025-04-03T05:27:57.647Z","updated_at":"2025-04-03T05:27:58.058Z","avatar_url":"https://github.com/flynneva.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# A BNO05 ROS2 Package \n\n## Description\nA ROS2 driver for the sensor IMU Bosch BNO055.\n\nThis repo was based off of [Michael Drwiega's work on the Bosch IMU Driver for ROS 1](https://github.com/mdrwiega/bosch_imu_driver)\n\n---\n## Wiring Guide\n\n### Selecting Connection Type\n\nThe default mode is I2C.\nTo select UART mode connect the `3.3V` pin to the `PS1` pin.\n\n### CP2104 USB-to-UART Bridge\n\nWhen using a CP2104 USB-to-UART Bridge:\n\n| BNO055 | CP2104 Friend    |\n| ------ | ---------------- |\n| Vin    |   5V             |\n| GND    |   GND            |\n| SDA    |   RXD            |\n| SCL    |   TXD            |\n\n**NOTE: on the CP2104 the pins above refer to the FTDI pins at the opposite end from the USB connector\n\n---\n## ROS Node Parameters\n\nTo configure with your own settings please adjust the [node parameter file](bno055/params/bno055_params.yaml) and pass it\nas an argument when starting the node:\n\n```\nros2 run bno055 bno055 --ros-args --params-file ./src/bno055/bno055/params/bno055_params.yaml\n```\n\n### UART Connection\n\n- **connection_type=uart**: Defines UART as sensor connection type; default='uart'\n- **uart_port**: The UART port to use; default='/dev/ttyUSB0'\n- **uart_baudrate**: The baud rate to use; default=115200\n- **uart_timeout**: The timeout for UART transmissions in seconds to use; default=0.1\n\n### I2C Connection\n\n- **connection_type=i2c**: Defines I2C as sensor connection type; default='uart'\n- **i2c_bus**: The integer I2C bus number to use; default=0\n- **i2c_address**: The hexadecimal I2C address to use; default=0x28\n  \n\n### Sensor Configuration\n\n- **frame_id**: coordinate frame id of sensor default='bno055'\n- **baudrate**: baudrate of sensor default=115200\n- **data_query_frequency**: frequency (HZ) to read and publish data from sensor; default=100 Hz\n- **calib_status_frequency**: frequency (HZ) to read and publish calibration status data from sensor; default=0.1 Hz\n- **placement_axis_remap**: The sensor placement configuration (Axis remapping) defines the position and orientation of the sensor mount.\nSee Bosch BNO055 datasheet section \"Axis Remap\" for valid positions: \"P0\", \"P1\" (default), \"P2\", \"P3\", \"P4\", \"P5\", \"P6\", \"P7\".   \n\n### ROS Topic Prefix\n\n- **ros_topic_prefix**: ROS topic prefix to be used. Will be prepended to the default topic names (see below). Default=\"bno055/\"\n\n### Calibration\n\nThe current calibration values can be requested via the **calibration_request** service (this puts the imu into **CONFIGMODE** for a short time):\n\n```\nros2 service call /bno055/calibration_request example_interfaces/srv/Trigger\n```\n---\n## ROS Topics\n\nROS topics published by this ROS2 Node: \n\n  - **bno055/imu** [(sensor_msgs/Imu)](http://docs.ros.org/api/sensor_msgs/html/msg/Imu.html)\n  - **bno055/imu_raw** [(sensor_msgs/Imu)](http://docs.ros.org/api/sensor_msgs/html/msg/Imu.html)\n  - **bno055/temp** [(sensor_msgs/Temperature)](http://docs.ros.org/api/sensor_msgs/html/msg/Temperature.html); The sensor's ambient temperature\n  - **bno055/mag** [(sensor_msgs/MagneticField)](http://docs.ros.org/api/sensor_msgs/html/msg/MagneticField.html)\n  - **bno055/grav** [(geometry_msgs/Vector3)](http://docs.ros.org/en/api/geometry_msgs/html/msg/Vector3.html)\n  - **bno055/calib_status** [(std_msgs/String)](http://docs.ros.org/en/api/std_msgs/html/msg/String.html) : \n  Sensor Calibration Status as JSON string - e.g. `{\"sys\": 3, \"gyro\": 3, \"accel\": 0, \"mag\": 3}`\n  \n  \nWhile _bno055_ is the default ROS topic prefix, it can be configured by following the directions above.\n\n---\n  \n## Development Workspace Setup\n\n### On a Remote Device\nSetup of a ROS2 workspace \u0026 IDE for a remote device (for example Raspberry Pi):\n\n#### Clone \u0026 Build\n\nCreate a ROS2 [workspace](https://index.ros.org/doc/ros2/Tutorials/Workspace/Creating-A-Workspace/) on your remote device - for instance `~/ros2_ws`\n\nMake sure you sourced your ROS2 installation (underlay).\n\nThen clone the project into your workspace's src directory:\n\n    cd ~/ros2_ws/src\n    git clone https://github.com/flynneva/bno055.git\n    \nPerform a build of your workspace\n    \n    cd ~/ros2_ws\n    colcon build\n\n#### Integrate in your IDE\n\nIn order to work with the sources in your remote workspace and to integrate them in your IDE, use `sshfs`:\n\n    sudo apt-get install sshfs\n    sudo modprobe fuse\n\nCreate a IDE project directory and mount the remote ROS2 workspace:\n\n    mkdir -p ~/projects/bno055/ros2_ws\n    sshfs ubuntu@192.168.2.153:~/ros2_ws ~/projects/bno055/ros2_ws\n    \nCreate a new project in your IDE from existing sources in `~/projects/bno055/ros2_ws`. \nYou can now manipulate the remote ROS2 workspace using your local IDE (including git operations). \n\n### Running the ROS2 node\nRun the `bno055` ROS2 node with default parameters:\n\n    # source your local workspace (overlay) in addition to the ROS2 sourcing (underlay):\n    source ~/ros2_ws/install/setup.sh\n    # run the node:\n    ros2 run bno055 bno055\n    \nRun with customized parameter file:\n\n    ros2 run bno055 bno055 --ros-args --params-file ./src/bno055/bno055/params/bno055_params.yaml\n    \nRun launch file:\n\n    ros2 launch bno055 bno055.launch.py\n    \n\n### Performing flake8 Linting\n\nTo perform code linting with [flake8](https://gitlab.com/pycqa/flake8), just perform:\n\n    cd ~/ros2_ws/src/bno055\n    ament_flake8\n\nSee [www.flake8rules.com](https://www.flake8rules.com/) for more detailed information about flake8 rules.\n\n**Note:** We take advantage of [flake8's noqa mechanisim](https://flake8.pycqa.org/en/3.1.1/user/ignoring-errors.html) to selectively ignore some errors. Just search for `# noqa:` in the source code to find them.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflynneva%2Fbno055","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflynneva%2Fbno055","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflynneva%2Fbno055/lists"}