All Projects → LORD-MicroStrain → microstrain_inertial

LORD-MicroStrain / microstrain_inertial

Licence: other
ROS driver for all of MicroStrain's current G and C series products. To learn more visit

Projects that are alternatives of or similar to microstrain inertial

Kimera Vio Ros
ROS wrapper for Kimera-VIO
Stars: ✭ 182 (+313.64%)
Mutual labels:  ros, imu, slam
Lego Loam
LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain
Stars: ✭ 1,138 (+2486.36%)
Mutual labels:  ros, imu, slam
isaac ros apriltag
CUDA-accelerated Apriltag detection
Stars: ✭ 42 (-4.55%)
Mutual labels:  ros, ros2-foxy
Cleanit
Open-source Autonomy Software in Rust-lang with gRPC for the Roomba series robot vacuum cleaners. Under development.
Stars: ✭ 125 (+184.09%)
Mutual labels:  ros, slam
Lili Om
LiLi-OM is a tightly-coupled, keyframe-based LiDAR-inertial odometry and mapping system for both solid-state-LiDAR and conventional LiDARs.
Stars: ✭ 159 (+261.36%)
Mutual labels:  ros, slam
Turtlebot3 simulations
Simulations for TurtleBot3
Stars: ✭ 104 (+136.36%)
Mutual labels:  ros, slam
Awesome Robotic Tooling
Tooling for professional robotic development in C++ and Python with a touch of ROS, autonomous driving and aerospace.
Stars: ✭ 1,876 (+4163.64%)
Mutual labels:  ros, slam
RGB-D-SLAM
Work in Progress. A SLAM implementation based on plane and superquadric tracking.
Stars: ✭ 23 (-47.73%)
Mutual labels:  slam, slam-algorithms
Mrpt slam
ROS wrappers for SLAM algorithms in MRPT
Stars: ✭ 84 (+90.91%)
Mutual labels:  ros, slam
Hypharos minicar
1/20 MiniCar: An ackermann based rover for MPC and Pure-Pursuit controller
Stars: ✭ 194 (+340.91%)
Mutual labels:  ros, slam
lidar-sync-mimics-gps
Open-Source LiDAR Time Synchronization System by Mimicking GPS-clock
Stars: ✭ 52 (+18.18%)
Mutual labels:  ros, imu
ndtpso slam
ROS package for NDT-PSO, a 2D Laser scan matching algorithm for SLAM
Stars: ✭ 32 (-27.27%)
Mutual labels:  slam, slam-algorithms
Evo
Python package for the evaluation of odometry and SLAM
Stars: ✭ 1,373 (+3020.45%)
Mutual labels:  ros, slam
Se2clam
SE(2)-Constrained Localization and Mapping by Fusing Odometry and Vision (IEEE Transactions on Cybernetics 2019)
Stars: ✭ 116 (+163.64%)
Mutual labels:  ros, slam
Awesome Visual Slam
📚 The list of vision-based SLAM / Visual Odometry open source, blogs, and papers
Stars: ✭ 1,336 (+2936.36%)
Mutual labels:  ros, slam
Venom
All Terrain Autonomous Quadruped
Stars: ✭ 145 (+229.55%)
Mutual labels:  ros, imu
Loam velodyne
Laser Odometry and Mapping (Loam) is a realtime method for state estimation and mapping using a 3D lidar.
Stars: ✭ 1,135 (+2479.55%)
Mutual labels:  ros, slam
dvo python
Coding dense visual odometry in a little more than a night (yikes)!
Stars: ✭ 40 (-9.09%)
Mutual labels:  slam, slam-algorithms
Visual Gps Slam
This is a repo for my master thesis research about the Fusion of Visual SLAM and GPS. It contains the research paper, code and other interesting data.
Stars: ✭ 175 (+297.73%)
Mutual labels:  ros, slam
AVP-SLAM-PLUS
An implementation of AVP-SLAM and some new contributions
Stars: ✭ 371 (+743.18%)
Mutual labels:  slam, slam-algorithms

Description

Interface (driver) software, including ROS node, for inertial sensors compatible with the Microstrain Communication Library (MSCL).

MSCL is developed by LORD Sensing - Microstrain in Williston, VT.

Different Codebases

This repo is now structured differently as of 2.0.0.

Important Branches

There are three important branches that you may want to checkout:

  • ros -- Contains ROS1 implementation for this node as of 2.0.0. This version is being actively updated and supported
  • ros2 -- Contains ROS2 implementation for this node as of 2.0.0. This version is being actively updated and supported
  • master -- Contains the most recent ROS1 changes before the transition to 2.0.0. Kept for backwards compatibility, but no longer updated or supported

Both the ros and ros2 branches share most of their code by using git submodules. The following submodules contain most of the actual implementations:

Different Package Names

Prior to version 2.0.0, this repo contained the following ROS packages:

  • ros_mscl -- ROS node that will communicate with the devices
  • mscl_msgs -- Collection of messages produced by the ros_mscl node
  • ros_mscl_cpp_example -- Simple subscriber written in C++ that will consume a message produced by ros_mscl
  • ros_mscl_py_example -- Simple subscriber written in Python that will consume a message produced by ros_mscl

Due to requirements laid out by the ROS maintainers here, as of version 2.0.0, this repo contains the following ROS packages:

  • microstrain_inertial_driver -- ROS node that will communicate with the devices
  • microstrain_inertial_msgs -- Collection of messages produced by the microstrain_inertial_driver node
  • microstrain_inretial_examples -- Collection of examples that show how to interact with the microstrain_inertial_driver node. Currently contains one simple C++ and python subscriber node
  • microstrain_inertial_rqt -- Collection of RQT plugins to view the status of inertial devices when running the microstrain_inertial_driver

Install Instructions

Docker

As of v2.2.2 the microstrain_inertial_driver is distributed as a docker image. More information on how to use the image can be found on DockerHub

Buildfarm

As of v2.0.5 this package is being built and distributed by the ROS build farm. If you do not need to modify the source, it is recommended to install directly from the buildfarm by running the following commands where ROS_DISTRO is the version of ROS you are using such as melodic or noetic:

Driver:

sudo apt-get update && sudo apt-get install ros-ROS_DISTRO-microstrain-inertial-driver

RQT:

sudo apt-get update && sudo apt-get install ros-ROS_DISTRO-microstrain-inertial-rqt

For more information on the ROS distros and platforms we support, please see index.ros.org

Source

If you need to modify the source of this repository, or are running on a platform that we do not support, you can build from source by following these instructions

Submodules

This repo now takes advantage of git submodules in order to share code between ROS versions. When cloning the repo, you should clone with the --recursive flag to get all of the submodules.

If you have already cloned the repo, you can checkout the submodules by running git submodule init && git submodule update --recursive from the project directory

The CMakeLists.txt will automatically checkout the submodule if it does not exist, but it will not keep it up to date. In order to keep up to date, every time you pull changes you should pull with the --recurse-submodules flag, or alternatively run git submodule update --recursive after you have pulled changes

MSCL

MSCL is now installed in the CMakeLists.txt. The version installed can be changed by passing the flag -DMSCL_VERSION="62.0.0"

If you already have MSCL installed and want to use your installed version instead of the one automatically downloaded, you can specify the location by passing the flag -DMSCL_DIR=/usr/share/c++-mscl

We do our best to keep ROS-MSCL up-to-date with the latest MSCL changes, but sometimes there is a delay. The currently supported version of MSCL is v62.1.2

Building from source

  1. Install ROS and create a workspace: Installing and Configuring Your ROS Environment

  2. Move the entire microstrain_inertial folder (microstrain_inertial_driver, microstrain_inertial_msgs , and microstrain_common for just source) to the your_workspace/src directory.

  3. Locate and register the ros_mscl package: rospack find microstrain_inertial_driver

  4. Install rosdeps for this package: rosdep install --from-paths ~/your_workspace/src --ignore-src -r -y

  5. Build your workspace:

     cd ~/your_workspace
     catkin_make
     source ~/your_workspace/devel/setup.bash
    

    The source command may need to be run in each terminal prior to launching a ROS node.

Launch the node and publish data

The following command will launch the driver. Keep in mind each instance needs to be run in a separate terminal.

    roslaunch microstrain_inertial_driver microstrain.launch

Optional launch parameters:

  • name: namespace the node will publish messages to, default: gx5
  • port: serial port name to connect to the device over, default: /dev/ttyACM0
  • baudrate: baud rate to open the connection with, default: 115200
  • imu_rate: sample rate for IMU data (hz), default: 100
  • debug: output debug info? default: false
  • diagnostics: output diagnostic info? default: true

To check published topics:

rostopic list

Example: Connect to and publish data from two devices simultaneously
In two different terminals:

roslaunch microstrain_inertial_driver microstrain.launch name:=sensor1234

roslaunch microstrain_inertial_driver microstrain.launch name:=bestSensor port:=/dev/ttyACM1

This will launch two nodes that publish data to different namespaces:

  • sensor1234, connected over port: /dev/ttyACM0
  • bestSensor, connected over port: /dev/ttyACM1

An example subscriber node can be found here: Microstrain Examples

Docker Development

VSCode

The easiest way to develop in docker while still using an IDE is to use VSCode as an IDE. Follow the steps below to develop on this repo in a docker container

  1. Install the following dependencies:
    1. VSCode
    2. Docker
  2. Open VSCode and install the following plugins:
    1. VSCode Docker plugin
    2. VSCode Remote Containers plugin
  3. Open this directory in a container by following this guide
    1. Due to a bug in the remote container plugin, you will need to refresh the window once it comes up. To do this, type Ctrl+Shift+p and type Reload Window and hit enter. Note that this will have to be repeated every time the container is rebuilt
  4. Once the folder is open in VSCode, you can build the project by running Ctrl+Shift+B to trigger a build, or Ctrl+p to open quick open, then type task build and hit enter
  5. You can run the project by following this guide

Make

If you are comfortable working from the command line, or want to produce your own runtime images, the Makefile in the .devcontainer directory can be used to build docker images, run a shell inside the docker images and produce a runtime image. Follow the steps below to setup your environment to use the Makefile

  1. Install the following dependencies:
    1. Make
    2. Docker
    3. qemu-user-static (for multiarch builds)
      1. Run the following command to register the qemu binaries with docker: docker run --rm --privileged multiarch/qemu-user-static:register

The Makefile exposes the following tasks. They can all be run from the .devcontainer directory:

  • make build-shell - Builds the development docker image and starts a shell session in the image allowing the user to develop and build the ROS project using common commands such as catkin_make
  • make image - Builds the runtime image that contains only the required dependencies and the ROS node.
  • make clean - Cleans up after the above two tasks

License

Different packages in this repo are releasd under different licenses. For more information, see the LICENSE files in each of the package directories.

Here is a quick overview of the licenses used in each package:

Package License
microstrain_inertial_driver MIT
microstrain_inertial_msgs MIT
microstrain_inertial_rqt BSD
microstrain_inertial_examples MIT
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].