Repository Summary
Checkout URI | https://github.com/LORD-MicroStrain/microstrain_inertial.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2024-11-22 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Packages
Name | Version |
---|---|
microstrain_inertial_description | 4.5.0 |
microstrain_inertial_driver | 4.5.0 |
microstrain_inertial_examples | 4.5.0 |
microstrain_inertial_msgs | 4.5.0 |
microstrain_inertial_rqt | 4.5.0 |
README
Description
Interface (driver) software, including ROS node, for inertial sensors from MicroStrain by HBK, developed in Williston, VT.
Implemented using the MicroStrain Inertial Protocol SDK (mip_sdk
)
Table of Contents
- ROS Wiki
- ROS vs ROS2 versions
- Packages
- Install Instructions
- Building From Source
- Run Instructions
- Docker Development
- Shared Codebases
- Previous Versions
- Licenses
ROS Wiki
For more information on the data published and services available see our ROS wiki page
ROS vs ROS2 Versions
Note that this branch contains the ROS2 implementation for the packages. If you are looking for the ROS version, you should go to the ros
branch
Packages
This repo contains the following packages:
-
microstrain_inertial_driver
– ROS node that will communicate with the devices -
microstrain_inertial_msgs
– Collection of messages produced by themicrostrain_inertial_driver
node -
microstrain_inretial_examples
– Collection of examples that show how to interact with themicrostrain_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 themicrostrain_inertial_driver
Install Instructions
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 galactic
or humble
:
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 the Building From Source guide below.
IMPORTANT NOTE ABOUT CLONING
This repo 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 update --init --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
Building from source
-
Install ROS2 and create a workspace: Configuring Your ROS2 Environment
-
Clone the repository into your workspace:
git clone --recursive --branch ros2 https://github.com/LORD-MicroStrain/microstrain_inertial.git ~/your_workspace/src/microstrain_inertial
-
Install rosdeps for this package:
rosdep install --from-paths ~/your_workspace/src -i -r -y
-
Build your workspace:
cd ~/your_workspace
colcon build
source ~/your_workspace/install/setup.bash
The source command will need to be run in each terminal prior to launching a ROS node.
Udev Rules
NOTE: If installing from the buildfarm, the udev rules will be installed automatically
This driver comes with udev rules that will create a symlink for all microstrain devices.
To install the rules. Download the udev file from this repo and copy it to
/etc/udev/rules.d/100-microstrain.rules
Once the udev rules are installed, the devices will appear as follows in the file system, where {serial} is the serial number of the device:
-
/dev/microstrain_main
- Most recent non-GQ7 device, or the main port of a GQ7 connected. NOTE: Do not use this rule with multiple devices as it gets overridden with multiple devices. -
/dev/microstrain_aux
- Most recent GQ7 aux port connected. NOTE: Do not use this rule with multiple devices as it gets overridden with multiple devices. -
/dev/microstrain_main_{serial}
- All non-GQ7 devices, and the main port of GQ7 devices -
/dev/microstrain_aux_{serial}
- The aux port of GQ7 devices
Run Instructions
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.
ros2 launch microstrain_inertial_driver microstrain_launch.py
The node has some optional launch parameters that can be specified from the command line in the format param:=value
-
namespace
: namespace that the driver will run in. All services and publishers will be prepended with this, default:/
-
node_name
: name of the driver, default:microstrain_inertial_driver
-
debug
: output debug logs, default:false
-
params_file
: path to a parameter file to override the default parameters stored inparams.yml
, default:empty.yml
[!NOTE] The example
params.yml
file is formatted to work with ROS and will not work if specified as the params_file argument in ROS2.If you want to override parameters for ROS2, start with
empty.yml
.
Publish data from two devices simultaneously
- Create the following files somewhere on your system (we will assume they are stored in your home (
~
) directory):-
~/sensor_a_params.yml
with the contents:
-
microstrain_inertial_driver:
ros__parameters:
port: /dev/ttyACM0
2. `~/sensor_b_params.yml` with the contents:
microstrain_inertial_driver:
ros__parameters:
port: /dev/ttyACM1
- In two different terminals:
ros2 launch microstrain_inertial_driver microstrain_launch.py node_name:=sensor_a_node namespace:=sensor_a params_file:="$HOME/sensor_a_params.yml"
ros2 launch microstrain_inertial_driver microstrain_launch.py node_name:=sensor_b_node namespace:=sensor_b params_file:="$HOME/sensor_b_params.yml"
This will launch two nodes that publish data to different namespaces:
-
/sensor_a
, connected over port:/dev/ttyACM0
-
/sensor_b
, connected over port:/dev/ttyACM1
An example subscriber node can be found in the MicroStrain Examples package.
Lifecycle Node
This package also provides a lifecycle node implementation. This version of the driver can be launched by running:
ros2 launch microstrain_inertial_driver microstrain_lifecycle_launch.py
This launch file accepts all of the same arguments as the above node as well as:
-
configure
: If set to the exact stringtrue
the driver will automatically transition into the configure state. -
activate
: If set to the exact stringtrue
the driver will automatically transition into the activate state.
Additionally, the node may be transitioned anytime after startup using the following commands (note that the namespace
and name
parameters will affect the node name in the following commands):
- Transition to configure state:
ros2 lifecycle set /microstrain_inertial_driver_node configure
- Transition to active state:
ros2 lifecycle set /microstrain_inertial_driver_node activate
You can stop data from streaming by putting the device into the “deactivate” state. Both the “cleanup” and “shutdown” states will disconnect from the device and close the raw data log file (if enabled.)
Docker Development
VSCode
The easiest way to develop in docker while still using an IDE is to use VSCode. Follow the steps below to develop on this repo in a docker container.
- Install the following dependencies:
- Open VSCode and install the following plugins:
- Open this directory in a container:
- Open the
microstrain_inertial
directory in VSCode - Click the green
><
icon in the bottom left corner of the window - Choose
Reopen In Container
- Open the
- Once the project is open in the container, it will take some time to automatically install the rosdeps inside the container, you can then build and run the container by following step 4 of Building from source
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
- Install the following dependencies:
- Make
- Docker
-
qemu-user-static (only for multiarch builds)
- Run the following command to register the qemu binaries with docker:
docker run --rm --privileged multiarch/qemu-user-static:register
- Run the following command to register the qemu binaries with docker:
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 ascatkin_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
Shared codebases
Both the ros
and ros2
branches share most of their code by using git submodules. The following submodules contain most of the actual implementations:
-
microstrain_inertial_driver_common submoduled in this repo at
microstrain_inertial_driver/microstrain_inertial_driver_common
-
microstrain_inertial_msgs_common submoduled in this repo at
microstrain_inertial_msgs/microstrain_inertial_msgs_common
-
microstrain_inertial_rqt_common submoduled in this repo at
microstrain_inertial_rqt/microstrain_inertial_rqt_common
Previous Versions
Previous versions of the driver were released as tags on Github. They can also be found in specific branches:
-
ros2-3.x.x
contains the most recent code before the standardizing refactor -
ros2-2.x.x
contains the most recent code before the MIP SDK refactor
License
Different packages in this repo are released 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 |
CONTRIBUTING
Repository Summary
Checkout URI | https://github.com/LORD-MicroStrain/microstrain_inertial.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2024-11-22 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Packages
Name | Version |
---|---|
microstrain_inertial_description | 4.5.0 |
microstrain_inertial_driver | 4.5.0 |
microstrain_inertial_examples | 4.5.0 |
microstrain_inertial_msgs | 4.5.0 |
microstrain_inertial_rqt | 4.5.0 |
README
Description
Interface (driver) software, including ROS node, for inertial sensors from MicroStrain by HBK, developed in Williston, VT.
Implemented using the MicroStrain Inertial Protocol SDK (mip_sdk
)
Table of Contents
- ROS Wiki
- ROS vs ROS2 versions
- Packages
- Install Instructions
- Building From Source
- Run Instructions
- Docker Development
- Shared Codebases
- Previous Versions
- Licenses
ROS Wiki
For more information on the data published and services available see our ROS wiki page
ROS vs ROS2 Versions
Note that this branch contains the ROS2 implementation for the packages. If you are looking for the ROS version, you should go to the ros
branch
Packages
This repo contains the following packages:
-
microstrain_inertial_driver
– ROS node that will communicate with the devices -
microstrain_inertial_msgs
– Collection of messages produced by themicrostrain_inertial_driver
node -
microstrain_inretial_examples
– Collection of examples that show how to interact with themicrostrain_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 themicrostrain_inertial_driver
Install Instructions
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 galactic
or humble
:
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 the Building From Source guide below.
IMPORTANT NOTE ABOUT CLONING
This repo 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 update --init --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
Building from source
-
Install ROS2 and create a workspace: Configuring Your ROS2 Environment
-
Clone the repository into your workspace:
git clone --recursive --branch ros2 https://github.com/LORD-MicroStrain/microstrain_inertial.git ~/your_workspace/src/microstrain_inertial
-
Install rosdeps for this package:
rosdep install --from-paths ~/your_workspace/src -i -r -y
-
Build your workspace:
cd ~/your_workspace
colcon build
source ~/your_workspace/install/setup.bash
The source command will need to be run in each terminal prior to launching a ROS node.
Udev Rules
NOTE: If installing from the buildfarm, the udev rules will be installed automatically
This driver comes with udev rules that will create a symlink for all microstrain devices.
To install the rules. Download the udev file from this repo and copy it to
/etc/udev/rules.d/100-microstrain.rules
Once the udev rules are installed, the devices will appear as follows in the file system, where {serial} is the serial number of the device:
-
/dev/microstrain_main
- Most recent non-GQ7 device, or the main port of a GQ7 connected. NOTE: Do not use this rule with multiple devices as it gets overridden with multiple devices. -
/dev/microstrain_aux
- Most recent GQ7 aux port connected. NOTE: Do not use this rule with multiple devices as it gets overridden with multiple devices. -
/dev/microstrain_main_{serial}
- All non-GQ7 devices, and the main port of GQ7 devices -
/dev/microstrain_aux_{serial}
- The aux port of GQ7 devices
Run Instructions
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.
ros2 launch microstrain_inertial_driver microstrain_launch.py
The node has some optional launch parameters that can be specified from the command line in the format param:=value
-
namespace
: namespace that the driver will run in. All services and publishers will be prepended with this, default:/
-
node_name
: name of the driver, default:microstrain_inertial_driver
-
debug
: output debug logs, default:false
-
params_file
: path to a parameter file to override the default parameters stored inparams.yml
, default:empty.yml
[!NOTE] The example
params.yml
file is formatted to work with ROS and will not work if specified as the params_file argument in ROS2.If you want to override parameters for ROS2, start with
empty.yml
.
Publish data from two devices simultaneously
- Create the following files somewhere on your system (we will assume they are stored in your home (
~
) directory):-
~/sensor_a_params.yml
with the contents:
-
microstrain_inertial_driver:
ros__parameters:
port: /dev/ttyACM0
2. `~/sensor_b_params.yml` with the contents:
microstrain_inertial_driver:
ros__parameters:
port: /dev/ttyACM1
- In two different terminals:
ros2 launch microstrain_inertial_driver microstrain_launch.py node_name:=sensor_a_node namespace:=sensor_a params_file:="$HOME/sensor_a_params.yml"
ros2 launch microstrain_inertial_driver microstrain_launch.py node_name:=sensor_b_node namespace:=sensor_b params_file:="$HOME/sensor_b_params.yml"
This will launch two nodes that publish data to different namespaces:
-
/sensor_a
, connected over port:/dev/ttyACM0
-
/sensor_b
, connected over port:/dev/ttyACM1
An example subscriber node can be found in the MicroStrain Examples package.
Lifecycle Node
This package also provides a lifecycle node implementation. This version of the driver can be launched by running:
ros2 launch microstrain_inertial_driver microstrain_lifecycle_launch.py
This launch file accepts all of the same arguments as the above node as well as:
-
configure
: If set to the exact stringtrue
the driver will automatically transition into the configure state. -
activate
: If set to the exact stringtrue
the driver will automatically transition into the activate state.
Additionally, the node may be transitioned anytime after startup using the following commands (note that the namespace
and name
parameters will affect the node name in the following commands):
- Transition to configure state:
ros2 lifecycle set /microstrain_inertial_driver_node configure
- Transition to active state:
ros2 lifecycle set /microstrain_inertial_driver_node activate
You can stop data from streaming by putting the device into the “deactivate” state. Both the “cleanup” and “shutdown” states will disconnect from the device and close the raw data log file (if enabled.)
Docker Development
VSCode
The easiest way to develop in docker while still using an IDE is to use VSCode. Follow the steps below to develop on this repo in a docker container.
- Install the following dependencies:
- Open VSCode and install the following plugins:
- Open this directory in a container:
- Open the
microstrain_inertial
directory in VSCode - Click the green
><
icon in the bottom left corner of the window - Choose
Reopen In Container
- Open the
- Once the project is open in the container, it will take some time to automatically install the rosdeps inside the container, you can then build and run the container by following step 4 of Building from source
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
- Install the following dependencies:
- Make
- Docker
-
qemu-user-static (only for multiarch builds)
- Run the following command to register the qemu binaries with docker:
docker run --rm --privileged multiarch/qemu-user-static:register
- Run the following command to register the qemu binaries with docker:
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 ascatkin_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
Shared codebases
Both the ros
and ros2
branches share most of their code by using git submodules. The following submodules contain most of the actual implementations:
-
microstrain_inertial_driver_common submoduled in this repo at
microstrain_inertial_driver/microstrain_inertial_driver_common
-
microstrain_inertial_msgs_common submoduled in this repo at
microstrain_inertial_msgs/microstrain_inertial_msgs_common
-
microstrain_inertial_rqt_common submoduled in this repo at
microstrain_inertial_rqt/microstrain_inertial_rqt_common
Previous Versions
Previous versions of the driver were released as tags on Github. They can also be found in specific branches:
-
ros2-3.x.x
contains the most recent code before the standardizing refactor -
ros2-2.x.x
contains the most recent code before the MIP SDK refactor
License
Different packages in this repo are released 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 |
CONTRIBUTING
Repository Summary
Checkout URI | https://github.com/LORD-MicroStrain/microstrain_inertial.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2024-11-22 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Packages
Name | Version |
---|---|
microstrain_inertial_description | 4.5.0 |
microstrain_inertial_driver | 4.5.0 |
microstrain_inertial_examples | 4.5.0 |
microstrain_inertial_msgs | 4.5.0 |
microstrain_inertial_rqt | 4.5.0 |
README
Description
Interface (driver) software, including ROS node, for inertial sensors from MicroStrain by HBK, developed in Williston, VT.
Implemented using the MicroStrain Inertial Protocol SDK (mip_sdk
)
Table of Contents
- ROS Wiki
- ROS vs ROS2 versions
- Packages
- Install Instructions
- Building From Source
- Run Instructions
- Docker Development
- Shared Codebases
- Previous Versions
- Licenses
ROS Wiki
For more information on the data published and services available see our ROS wiki page
ROS vs ROS2 Versions
Note that this branch contains the ROS2 implementation for the packages. If you are looking for the ROS version, you should go to the ros
branch
Packages
This repo contains the following packages:
-
microstrain_inertial_driver
– ROS node that will communicate with the devices -
microstrain_inertial_msgs
– Collection of messages produced by themicrostrain_inertial_driver
node -
microstrain_inretial_examples
– Collection of examples that show how to interact with themicrostrain_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 themicrostrain_inertial_driver
Install Instructions
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 galactic
or humble
:
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 the Building From Source guide below.
IMPORTANT NOTE ABOUT CLONING
This repo 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 update --init --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
Building from source
-
Install ROS2 and create a workspace: Configuring Your ROS2 Environment
-
Clone the repository into your workspace:
git clone --recursive --branch ros2 https://github.com/LORD-MicroStrain/microstrain_inertial.git ~/your_workspace/src/microstrain_inertial
-
Install rosdeps for this package:
rosdep install --from-paths ~/your_workspace/src -i -r -y
-
Build your workspace:
cd ~/your_workspace
colcon build
source ~/your_workspace/install/setup.bash
The source command will need to be run in each terminal prior to launching a ROS node.
Udev Rules
NOTE: If installing from the buildfarm, the udev rules will be installed automatically
This driver comes with udev rules that will create a symlink for all microstrain devices.
To install the rules. Download the udev file from this repo and copy it to
/etc/udev/rules.d/100-microstrain.rules
Once the udev rules are installed, the devices will appear as follows in the file system, where {serial} is the serial number of the device:
-
/dev/microstrain_main
- Most recent non-GQ7 device, or the main port of a GQ7 connected. NOTE: Do not use this rule with multiple devices as it gets overridden with multiple devices. -
/dev/microstrain_aux
- Most recent GQ7 aux port connected. NOTE: Do not use this rule with multiple devices as it gets overridden with multiple devices. -
/dev/microstrain_main_{serial}
- All non-GQ7 devices, and the main port of GQ7 devices -
/dev/microstrain_aux_{serial}
- The aux port of GQ7 devices
Run Instructions
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.
ros2 launch microstrain_inertial_driver microstrain_launch.py
The node has some optional launch parameters that can be specified from the command line in the format param:=value
-
namespace
: namespace that the driver will run in. All services and publishers will be prepended with this, default:/
-
node_name
: name of the driver, default:microstrain_inertial_driver
-
debug
: output debug logs, default:false
-
params_file
: path to a parameter file to override the default parameters stored inparams.yml
, default:empty.yml
[!NOTE] The example
params.yml
file is formatted to work with ROS and will not work if specified as the params_file argument in ROS2.If you want to override parameters for ROS2, start with
empty.yml
.
Publish data from two devices simultaneously
- Create the following files somewhere on your system (we will assume they are stored in your home (
~
) directory):-
~/sensor_a_params.yml
with the contents:
-
microstrain_inertial_driver:
ros__parameters:
port: /dev/ttyACM0
2. `~/sensor_b_params.yml` with the contents:
microstrain_inertial_driver:
ros__parameters:
port: /dev/ttyACM1
- In two different terminals:
ros2 launch microstrain_inertial_driver microstrain_launch.py node_name:=sensor_a_node namespace:=sensor_a params_file:="$HOME/sensor_a_params.yml"
ros2 launch microstrain_inertial_driver microstrain_launch.py node_name:=sensor_b_node namespace:=sensor_b params_file:="$HOME/sensor_b_params.yml"
This will launch two nodes that publish data to different namespaces:
-
/sensor_a
, connected over port:/dev/ttyACM0
-
/sensor_b
, connected over port:/dev/ttyACM1
An example subscriber node can be found in the MicroStrain Examples package.
Lifecycle Node
This package also provides a lifecycle node implementation. This version of the driver can be launched by running:
ros2 launch microstrain_inertial_driver microstrain_lifecycle_launch.py
This launch file accepts all of the same arguments as the above node as well as:
-
configure
: If set to the exact stringtrue
the driver will automatically transition into the configure state. -
activate
: If set to the exact stringtrue
the driver will automatically transition into the activate state.
Additionally, the node may be transitioned anytime after startup using the following commands (note that the namespace
and name
parameters will affect the node name in the following commands):
- Transition to configure state:
ros2 lifecycle set /microstrain_inertial_driver_node configure
- Transition to active state:
ros2 lifecycle set /microstrain_inertial_driver_node activate
You can stop data from streaming by putting the device into the “deactivate” state. Both the “cleanup” and “shutdown” states will disconnect from the device and close the raw data log file (if enabled.)
Docker Development
VSCode
The easiest way to develop in docker while still using an IDE is to use VSCode. Follow the steps below to develop on this repo in a docker container.
- Install the following dependencies:
- Open VSCode and install the following plugins:
- Open this directory in a container:
- Open the
microstrain_inertial
directory in VSCode - Click the green
><
icon in the bottom left corner of the window - Choose
Reopen In Container
- Open the
- Once the project is open in the container, it will take some time to automatically install the rosdeps inside the container, you can then build and run the container by following step 4 of Building from source
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
- Install the following dependencies:
- Make
- Docker
-
qemu-user-static (only for multiarch builds)
- Run the following command to register the qemu binaries with docker:
docker run --rm --privileged multiarch/qemu-user-static:register
- Run the following command to register the qemu binaries with docker:
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 ascatkin_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
Shared codebases
Both the ros
and ros2
branches share most of their code by using git submodules. The following submodules contain most of the actual implementations:
-
microstrain_inertial_driver_common submoduled in this repo at
microstrain_inertial_driver/microstrain_inertial_driver_common
-
microstrain_inertial_msgs_common submoduled in this repo at
microstrain_inertial_msgs/microstrain_inertial_msgs_common
-
microstrain_inertial_rqt_common submoduled in this repo at
microstrain_inertial_rqt/microstrain_inertial_rqt_common
Previous Versions
Previous versions of the driver were released as tags on Github. They can also be found in specific branches:
-
ros2-3.x.x
contains the most recent code before the standardizing refactor -
ros2-2.x.x
contains the most recent code before the MIP SDK refactor
License
Different packages in this repo are released 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 |
CONTRIBUTING
Repository Summary
Checkout URI | https://github.com/LORD-MicroStrain/microstrain_inertial.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2024-11-22 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Packages
Name | Version |
---|---|
microstrain_inertial_description | 4.5.0 |
microstrain_inertial_driver | 4.5.0 |
microstrain_inertial_examples | 4.5.0 |
microstrain_inertial_msgs | 4.5.0 |
microstrain_inertial_rqt | 4.5.0 |
README
Description
Interface (driver) software, including ROS node, for inertial sensors from MicroStrain by HBK, developed in Williston, VT.
Implemented using the MicroStrain Inertial Protocol SDK (mip_sdk
)
Table of Contents
- ROS Wiki
- ROS vs ROS2 versions
- Packages
- Install Instructions
- Building From Source
- Run Instructions
- Docker Development
- Shared Codebases
- Previous Versions
- Licenses
ROS Wiki
For more information on the data published and services available see our ROS wiki page
ROS vs ROS2 Versions
Note that this branch contains the ROS2 implementation for the packages. If you are looking for the ROS version, you should go to the ros
branch
Packages
This repo contains the following packages:
-
microstrain_inertial_driver
– ROS node that will communicate with the devices -
microstrain_inertial_msgs
– Collection of messages produced by themicrostrain_inertial_driver
node -
microstrain_inretial_examples
– Collection of examples that show how to interact with themicrostrain_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 themicrostrain_inertial_driver
Install Instructions
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 galactic
or humble
:
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 the Building From Source guide below.
IMPORTANT NOTE ABOUT CLONING
This repo 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 update --init --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
Building from source
-
Install ROS2 and create a workspace: Configuring Your ROS2 Environment
-
Clone the repository into your workspace:
git clone --recursive --branch ros2 https://github.com/LORD-MicroStrain/microstrain_inertial.git ~/your_workspace/src/microstrain_inertial
-
Install rosdeps for this package:
rosdep install --from-paths ~/your_workspace/src -i -r -y
-
Build your workspace:
cd ~/your_workspace
colcon build
source ~/your_workspace/install/setup.bash
The source command will need to be run in each terminal prior to launching a ROS node.
Udev Rules
NOTE: If installing from the buildfarm, the udev rules will be installed automatically
This driver comes with udev rules that will create a symlink for all microstrain devices.
To install the rules. Download the udev file from this repo and copy it to
/etc/udev/rules.d/100-microstrain.rules
Once the udev rules are installed, the devices will appear as follows in the file system, where {serial} is the serial number of the device:
-
/dev/microstrain_main
- Most recent non-GQ7 device, or the main port of a GQ7 connected. NOTE: Do not use this rule with multiple devices as it gets overridden with multiple devices. -
/dev/microstrain_aux
- Most recent GQ7 aux port connected. NOTE: Do not use this rule with multiple devices as it gets overridden with multiple devices. -
/dev/microstrain_main_{serial}
- All non-GQ7 devices, and the main port of GQ7 devices -
/dev/microstrain_aux_{serial}
- The aux port of GQ7 devices
Run Instructions
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.
ros2 launch microstrain_inertial_driver microstrain_launch.py
The node has some optional launch parameters that can be specified from the command line in the format param:=value
-
namespace
: namespace that the driver will run in. All services and publishers will be prepended with this, default:/
-
node_name
: name of the driver, default:microstrain_inertial_driver
-
debug
: output debug logs, default:false
-
params_file
: path to a parameter file to override the default parameters stored inparams.yml
, default:empty.yml
[!NOTE] The example
params.yml
file is formatted to work with ROS and will not work if specified as the params_file argument in ROS2.If you want to override parameters for ROS2, start with
empty.yml
.
Publish data from two devices simultaneously
- Create the following files somewhere on your system (we will assume they are stored in your home (
~
) directory):-
~/sensor_a_params.yml
with the contents:
-
microstrain_inertial_driver:
ros__parameters:
port: /dev/ttyACM0
2. `~/sensor_b_params.yml` with the contents:
microstrain_inertial_driver:
ros__parameters:
port: /dev/ttyACM1
- In two different terminals:
ros2 launch microstrain_inertial_driver microstrain_launch.py node_name:=sensor_a_node namespace:=sensor_a params_file:="$HOME/sensor_a_params.yml"
ros2 launch microstrain_inertial_driver microstrain_launch.py node_name:=sensor_b_node namespace:=sensor_b params_file:="$HOME/sensor_b_params.yml"
This will launch two nodes that publish data to different namespaces:
-
/sensor_a
, connected over port:/dev/ttyACM0
-
/sensor_b
, connected over port:/dev/ttyACM1
An example subscriber node can be found in the MicroStrain Examples package.
Lifecycle Node
This package also provides a lifecycle node implementation. This version of the driver can be launched by running:
ros2 launch microstrain_inertial_driver microstrain_lifecycle_launch.py
This launch file accepts all of the same arguments as the above node as well as:
-
configure
: If set to the exact stringtrue
the driver will automatically transition into the configure state. -
activate
: If set to the exact stringtrue
the driver will automatically transition into the activate state.
Additionally, the node may be transitioned anytime after startup using the following commands (note that the namespace
and name
parameters will affect the node name in the following commands):
- Transition to configure state:
ros2 lifecycle set /microstrain_inertial_driver_node configure
- Transition to active state:
ros2 lifecycle set /microstrain_inertial_driver_node activate
You can stop data from streaming by putting the device into the “deactivate” state. Both the “cleanup” and “shutdown” states will disconnect from the device and close the raw data log file (if enabled.)
Docker Development
VSCode
The easiest way to develop in docker while still using an IDE is to use VSCode. Follow the steps below to develop on this repo in a docker container.
- Install the following dependencies:
- Open VSCode and install the following plugins:
- Open this directory in a container:
- Open the
microstrain_inertial
directory in VSCode - Click the green
><
icon in the bottom left corner of the window - Choose
Reopen In Container
- Open the
- Once the project is open in the container, it will take some time to automatically install the rosdeps inside the container, you can then build and run the container by following step 4 of Building from source
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
- Install the following dependencies:
- Make
- Docker
-
qemu-user-static (only for multiarch builds)
- Run the following command to register the qemu binaries with docker:
docker run --rm --privileged multiarch/qemu-user-static:register
- Run the following command to register the qemu binaries with docker:
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 ascatkin_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
Shared codebases
Both the ros
and ros2
branches share most of their code by using git submodules. The following submodules contain most of the actual implementations:
-
microstrain_inertial_driver_common submoduled in this repo at
microstrain_inertial_driver/microstrain_inertial_driver_common
-
microstrain_inertial_msgs_common submoduled in this repo at
microstrain_inertial_msgs/microstrain_inertial_msgs_common
-
microstrain_inertial_rqt_common submoduled in this repo at
microstrain_inertial_rqt/microstrain_inertial_rqt_common
Previous Versions
Previous versions of the driver were released as tags on Github. They can also be found in specific branches:
-
ros2-3.x.x
contains the most recent code before the standardizing refactor -
ros2-2.x.x
contains the most recent code before the MIP SDK refactor
License
Different packages in this repo are released 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 |
CONTRIBUTING
Repository Summary
Checkout URI | https://github.com/LORD-MicroStrain/microstrain_inertial.git |
VCS Type | git |
VCS Version | ros |
Last Updated | 2024-11-07 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Packages
Name | Version |
---|---|
microstrain_inertial_description | 4.5.0 |
microstrain_inertial_driver | 4.5.0 |
microstrain_inertial_examples | 4.5.0 |
microstrain_inertial_msgs | 4.5.0 |
microstrain_inertial_rqt | 4.5.0 |
README
Description
Interface (driver) software, including ROS node, for inertial sensors from MicroStrain by HBK, developed in Williston, VT.
Implemented using the MicroStrain Inertial Protocol SDK (mip_sdk
)
Table of Contents
- ROS Wiki
- ROS vs ROS2 versions
- Packages
- Install Instructions
- Building From Source
- Run Instructions
- Docker Development
- Shared Codebases
- Previous Versions
- Licenses
ROS Wiki
For more information on the data published and services available see our ROS wiki page
ROS vs ROS2 Versions
Note that this branch contains the ROS implementation for the packages. If you are looking for the ROS2 version, you should go to the ros2
branch
Packages
This repo contains the following packages:
-
microstrain_inertial_driver
– ROS node that will communicate with the devices -
microstrain_inertial_msgs
– Collection of messages produced by themicrostrain_inertial_driver
node -
microstrain_inretial_examples
– Collection of examples that show how to interact with themicrostrain_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 themicrostrain_inertial_driver
Install Instructions
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 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 the Building From Source guide below.
IMPORTANT NOTE ABOUT CLONING
This repo 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 update --init --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
Building from source
-
Install ROS and create a workspace: Installing and Configuring Your ROS Environment
-
Clone the repository into your workspace:
git clone --recursive --branch ros https://github.com/LORD-MicroStrain/microstrain_inertial.git ~/your_workspace/src/microstrain_inertial
-
Install rosdeps for this package:
rosdep install --from-paths ~/your_workspace/src -i -r -y
-
Build your workspace:
cd ~/your_workspace
catkin_make
source ~/your_workspace/devel/setup.bash
The source command will need to be run in each terminal prior to launching a ROS node.
Udev Rules
NOTE: If installing from the buildfarm, the udev rules will be installed automatically
This driver comes with udev rules that will create a symlink for all microstrain devices.
To install the rules. Download the udev file from this repo and copy it to
/etc/udev/rules.d/100-microstrain.rules
Once the udev rules are installed, the devices will appear as follows in the file system, where {serial} is the serial number of the device:
-
/dev/microstrain_main
- Most recent non-GQ7 device, or the main port of a GQ7 connected. NOTE: Do not use this rule with multiple devices as it gets overridden with multiple devices. -
/dev/microstrain_aux
- Most recent GQ7 aux port connected. NOTE: Do not use this rule with multiple devices as it gets overridden with multiple devices. -
/dev/microstrain_main_{serial}
- All non-GQ7 devices, and the main port of GQ7 devices -
/dev/microstrain_aux_{serial}
- The aux port of GQ7 devices
Run Instructions
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
The node has some optional launch parameters that can be specified from the command line in the format param:=value
-
namespace
: namespace that the driver will run in. All services and publishers will be prepended with this, default:/
-
node_name
: name of the driver, default:microstrain_inertial_driver
-
debug
: output debug logs, default:false
-
params_file
: path to a parameter file to override the default parameters stored inparams.yml
, default: empty
Publish data from two devices simultaneously
- Create the following files somewhere on your system (we will assume they are stored in the
~
directory):-
~/sensor_a_params.yml
with the contents:
-
port: /dev/ttyACM0
2. `~/sensor_b_params.yml` with the contents:
port: /dev/ttyACM1
- In two different terminals:
roslaunch microstrain_inertial_driver microstrain.launch node_name:=sensor_a_node namespace:=sensor_a params_file:="~/sensor_a_params.yml"
roslaunch microstrain_inertial_driver microstrain.launch node_name:=sensor_b_node namespace:=sensor_b params_file:="~/sensor_b_params.yml"
This will launch two nodes that publish data to different namespaces:
-
/sensor_a
, connected over port:/dev/ttyACM0
-
/sensor_b
, connected over port:/dev/ttyACM1
An example subscriber node can be found in the MicroStrain Examples package.
Docker Development
VSCode
The easiest way to develop in docker while still using an IDE is to use VSCode. Follow the steps below to develop on this repo in a docker container.
- Install the following dependencies:
- Open VSCode and install the following plugins:
- Open this directory in a container:
- Open the
microstrain_inertial
directory in VSCode - Click the green
><
icon in the bottom left corner of the window - Choose
Reopen In Container
- Open the
- Once the project is open in the container, it will take some time to automatically install the rosdeps inside the container, you can then build and run the container by following step 4 of Building from source
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
- Install the following dependencies:
- Make
- Docker
-
qemu-user-static (only for multiarch builds)
- Run the following command to register the qemu binaries with docker:
docker run --rm --privileged multiarch/qemu-user-static:register
- Run the following command to register the qemu binaries with docker:
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 ascatkin_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
Shared codebases
Both the ros
and ros2
branches share most of their code by using git submodules. The following submodules contain most of the actual implementations:
-
microstrain_inertial_driver_common submoduled in this repo at
microstrain_inertial_driver/microstrain_inertial_driver_common
-
microstrain_inertial_msgs_common submoduled in this repo at
microstrain_inertial_msgs/microstrain_inertial_msgs_common
-
microstrain_inertial_rqt_common submoduled in this repo at
microstrain_inertial_rqt/microstrain_inertial_rqt_common
Previous Versions
Previous versions of the driver were released as tags on Github. They can also be found in specific branches:
-
ros-3.x.x
contains the most recent code before the standardizing refactor -
ros-2.x.x
contains the most recent code before the MIP SDK refactor -
master
contains the most recent code before the common codebase refactor (prior to2.0.0
)
License
Different packages in this repo are released 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 |
CONTRIBUTING
Repository Summary
Checkout URI | https://github.com/LORD-MicroStrain/microstrain_inertial.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2024-11-22 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Packages
Name | Version |
---|---|
microstrain_inertial_description | 4.5.0 |
microstrain_inertial_driver | 4.5.0 |
microstrain_inertial_examples | 4.5.0 |
microstrain_inertial_msgs | 4.5.0 |
microstrain_inertial_rqt | 4.5.0 |
README
Description
Interface (driver) software, including ROS node, for inertial sensors from MicroStrain by HBK, developed in Williston, VT.
Implemented using the MicroStrain Inertial Protocol SDK (mip_sdk
)
Table of Contents
- ROS Wiki
- ROS vs ROS2 versions
- Packages
- Install Instructions
- Building From Source
- Run Instructions
- Docker Development
- Shared Codebases
- Previous Versions
- Licenses
ROS Wiki
For more information on the data published and services available see our ROS wiki page
ROS vs ROS2 Versions
Note that this branch contains the ROS2 implementation for the packages. If you are looking for the ROS version, you should go to the ros
branch
Packages
This repo contains the following packages:
-
microstrain_inertial_driver
– ROS node that will communicate with the devices -
microstrain_inertial_msgs
– Collection of messages produced by themicrostrain_inertial_driver
node -
microstrain_inretial_examples
– Collection of examples that show how to interact with themicrostrain_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 themicrostrain_inertial_driver
Install Instructions
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 galactic
or humble
:
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 the Building From Source guide below.
IMPORTANT NOTE ABOUT CLONING
This repo 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 update --init --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
Building from source
-
Install ROS2 and create a workspace: Configuring Your ROS2 Environment
-
Clone the repository into your workspace:
git clone --recursive --branch ros2 https://github.com/LORD-MicroStrain/microstrain_inertial.git ~/your_workspace/src/microstrain_inertial
-
Install rosdeps for this package:
rosdep install --from-paths ~/your_workspace/src -i -r -y
-
Build your workspace:
cd ~/your_workspace
colcon build
source ~/your_workspace/install/setup.bash
The source command will need to be run in each terminal prior to launching a ROS node.
Udev Rules
NOTE: If installing from the buildfarm, the udev rules will be installed automatically
This driver comes with udev rules that will create a symlink for all microstrain devices.
To install the rules. Download the udev file from this repo and copy it to
/etc/udev/rules.d/100-microstrain.rules
Once the udev rules are installed, the devices will appear as follows in the file system, where {serial} is the serial number of the device:
-
/dev/microstrain_main
- Most recent non-GQ7 device, or the main port of a GQ7 connected. NOTE: Do not use this rule with multiple devices as it gets overridden with multiple devices. -
/dev/microstrain_aux
- Most recent GQ7 aux port connected. NOTE: Do not use this rule with multiple devices as it gets overridden with multiple devices. -
/dev/microstrain_main_{serial}
- All non-GQ7 devices, and the main port of GQ7 devices -
/dev/microstrain_aux_{serial}
- The aux port of GQ7 devices
Run Instructions
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.
ros2 launch microstrain_inertial_driver microstrain_launch.py
The node has some optional launch parameters that can be specified from the command line in the format param:=value
-
namespace
: namespace that the driver will run in. All services and publishers will be prepended with this, default:/
-
node_name
: name of the driver, default:microstrain_inertial_driver
-
debug
: output debug logs, default:false
-
params_file
: path to a parameter file to override the default parameters stored inparams.yml
, default:empty.yml
[!NOTE] The example
params.yml
file is formatted to work with ROS and will not work if specified as the params_file argument in ROS2.If you want to override parameters for ROS2, start with
empty.yml
.
Publish data from two devices simultaneously
- Create the following files somewhere on your system (we will assume they are stored in your home (
~
) directory):-
~/sensor_a_params.yml
with the contents:
-
microstrain_inertial_driver:
ros__parameters:
port: /dev/ttyACM0
2. `~/sensor_b_params.yml` with the contents:
microstrain_inertial_driver:
ros__parameters:
port: /dev/ttyACM1
- In two different terminals:
ros2 launch microstrain_inertial_driver microstrain_launch.py node_name:=sensor_a_node namespace:=sensor_a params_file:="$HOME/sensor_a_params.yml"
ros2 launch microstrain_inertial_driver microstrain_launch.py node_name:=sensor_b_node namespace:=sensor_b params_file:="$HOME/sensor_b_params.yml"
This will launch two nodes that publish data to different namespaces:
-
/sensor_a
, connected over port:/dev/ttyACM0
-
/sensor_b
, connected over port:/dev/ttyACM1
An example subscriber node can be found in the MicroStrain Examples package.
Lifecycle Node
This package also provides a lifecycle node implementation. This version of the driver can be launched by running:
ros2 launch microstrain_inertial_driver microstrain_lifecycle_launch.py
This launch file accepts all of the same arguments as the above node as well as:
-
configure
: If set to the exact stringtrue
the driver will automatically transition into the configure state. -
activate
: If set to the exact stringtrue
the driver will automatically transition into the activate state.
Additionally, the node may be transitioned anytime after startup using the following commands (note that the namespace
and name
parameters will affect the node name in the following commands):
- Transition to configure state:
ros2 lifecycle set /microstrain_inertial_driver_node configure
- Transition to active state:
ros2 lifecycle set /microstrain_inertial_driver_node activate
You can stop data from streaming by putting the device into the “deactivate” state. Both the “cleanup” and “shutdown” states will disconnect from the device and close the raw data log file (if enabled.)
Docker Development
VSCode
The easiest way to develop in docker while still using an IDE is to use VSCode. Follow the steps below to develop on this repo in a docker container.
- Install the following dependencies:
- Open VSCode and install the following plugins:
- Open this directory in a container:
- Open the
microstrain_inertial
directory in VSCode - Click the green
><
icon in the bottom left corner of the window - Choose
Reopen In Container
- Open the
- Once the project is open in the container, it will take some time to automatically install the rosdeps inside the container, you can then build and run the container by following step 4 of Building from source
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
- Install the following dependencies:
- Make
- Docker
-
qemu-user-static (only for multiarch builds)
- Run the following command to register the qemu binaries with docker:
docker run --rm --privileged multiarch/qemu-user-static:register
- Run the following command to register the qemu binaries with docker:
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 ascatkin_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
Shared codebases
Both the ros
and ros2
branches share most of their code by using git submodules. The following submodules contain most of the actual implementations:
-
microstrain_inertial_driver_common submoduled in this repo at
microstrain_inertial_driver/microstrain_inertial_driver_common
-
microstrain_inertial_msgs_common submoduled in this repo at
microstrain_inertial_msgs/microstrain_inertial_msgs_common
-
microstrain_inertial_rqt_common submoduled in this repo at
microstrain_inertial_rqt/microstrain_inertial_rqt_common
Previous Versions
Previous versions of the driver were released as tags on Github. They can also be found in specific branches:
-
ros2-3.x.x
contains the most recent code before the standardizing refactor -
ros2-2.x.x
contains the most recent code before the MIP SDK refactor
License
Different packages in this repo are released 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 |
CONTRIBUTING
Repository Summary
Checkout URI | https://github.com/LORD-MicroStrain/microstrain_inertial.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2024-11-22 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Packages
Name | Version |
---|---|
microstrain_inertial_description | 4.5.0 |
microstrain_inertial_driver | 4.5.0 |
microstrain_inertial_examples | 4.5.0 |
microstrain_inertial_msgs | 4.5.0 |
microstrain_inertial_rqt | 4.5.0 |
README
Description
Interface (driver) software, including ROS node, for inertial sensors from MicroStrain by HBK, developed in Williston, VT.
Implemented using the MicroStrain Inertial Protocol SDK (mip_sdk
)
Table of Contents
- ROS Wiki
- ROS vs ROS2 versions
- Packages
- Install Instructions
- Building From Source
- Run Instructions
- Docker Development
- Shared Codebases
- Previous Versions
- Licenses
ROS Wiki
For more information on the data published and services available see our ROS wiki page
ROS vs ROS2 Versions
Note that this branch contains the ROS2 implementation for the packages. If you are looking for the ROS version, you should go to the ros
branch
Packages
This repo contains the following packages:
-
microstrain_inertial_driver
– ROS node that will communicate with the devices -
microstrain_inertial_msgs
– Collection of messages produced by themicrostrain_inertial_driver
node -
microstrain_inretial_examples
– Collection of examples that show how to interact with themicrostrain_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 themicrostrain_inertial_driver
Install Instructions
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 galactic
or humble
:
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 the Building From Source guide below.
IMPORTANT NOTE ABOUT CLONING
This repo 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 update --init --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
Building from source
-
Install ROS2 and create a workspace: Configuring Your ROS2 Environment
-
Clone the repository into your workspace:
git clone --recursive --branch ros2 https://github.com/LORD-MicroStrain/microstrain_inertial.git ~/your_workspace/src/microstrain_inertial
-
Install rosdeps for this package:
rosdep install --from-paths ~/your_workspace/src -i -r -y
-
Build your workspace:
cd ~/your_workspace
colcon build
source ~/your_workspace/install/setup.bash
The source command will need to be run in each terminal prior to launching a ROS node.
Udev Rules
NOTE: If installing from the buildfarm, the udev rules will be installed automatically
This driver comes with udev rules that will create a symlink for all microstrain devices.
To install the rules. Download the udev file from this repo and copy it to
/etc/udev/rules.d/100-microstrain.rules
Once the udev rules are installed, the devices will appear as follows in the file system, where {serial} is the serial number of the device:
-
/dev/microstrain_main
- Most recent non-GQ7 device, or the main port of a GQ7 connected. NOTE: Do not use this rule with multiple devices as it gets overridden with multiple devices. -
/dev/microstrain_aux
- Most recent GQ7 aux port connected. NOTE: Do not use this rule with multiple devices as it gets overridden with multiple devices. -
/dev/microstrain_main_{serial}
- All non-GQ7 devices, and the main port of GQ7 devices -
/dev/microstrain_aux_{serial}
- The aux port of GQ7 devices
Run Instructions
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.
ros2 launch microstrain_inertial_driver microstrain_launch.py
The node has some optional launch parameters that can be specified from the command line in the format param:=value
-
namespace
: namespace that the driver will run in. All services and publishers will be prepended with this, default:/
-
node_name
: name of the driver, default:microstrain_inertial_driver
-
debug
: output debug logs, default:false
-
params_file
: path to a parameter file to override the default parameters stored inparams.yml
, default:empty.yml
[!NOTE] The example
params.yml
file is formatted to work with ROS and will not work if specified as the params_file argument in ROS2.If you want to override parameters for ROS2, start with
empty.yml
.
Publish data from two devices simultaneously
- Create the following files somewhere on your system (we will assume they are stored in your home (
~
) directory):-
~/sensor_a_params.yml
with the contents:
-
microstrain_inertial_driver:
ros__parameters:
port: /dev/ttyACM0
2. `~/sensor_b_params.yml` with the contents:
microstrain_inertial_driver:
ros__parameters:
port: /dev/ttyACM1
- In two different terminals:
ros2 launch microstrain_inertial_driver microstrain_launch.py node_name:=sensor_a_node namespace:=sensor_a params_file:="$HOME/sensor_a_params.yml"
ros2 launch microstrain_inertial_driver microstrain_launch.py node_name:=sensor_b_node namespace:=sensor_b params_file:="$HOME/sensor_b_params.yml"
This will launch two nodes that publish data to different namespaces:
-
/sensor_a
, connected over port:/dev/ttyACM0
-
/sensor_b
, connected over port:/dev/ttyACM1
An example subscriber node can be found in the MicroStrain Examples package.
Lifecycle Node
This package also provides a lifecycle node implementation. This version of the driver can be launched by running:
ros2 launch microstrain_inertial_driver microstrain_lifecycle_launch.py
This launch file accepts all of the same arguments as the above node as well as:
-
configure
: If set to the exact stringtrue
the driver will automatically transition into the configure state. -
activate
: If set to the exact stringtrue
the driver will automatically transition into the activate state.
Additionally, the node may be transitioned anytime after startup using the following commands (note that the namespace
and name
parameters will affect the node name in the following commands):
- Transition to configure state:
ros2 lifecycle set /microstrain_inertial_driver_node configure
- Transition to active state:
ros2 lifecycle set /microstrain_inertial_driver_node activate
You can stop data from streaming by putting the device into the “deactivate” state. Both the “cleanup” and “shutdown” states will disconnect from the device and close the raw data log file (if enabled.)
Docker Development
VSCode
The easiest way to develop in docker while still using an IDE is to use VSCode. Follow the steps below to develop on this repo in a docker container.
- Install the following dependencies:
- Open VSCode and install the following plugins:
- Open this directory in a container:
- Open the
microstrain_inertial
directory in VSCode - Click the green
><
icon in the bottom left corner of the window - Choose
Reopen In Container
- Open the
- Once the project is open in the container, it will take some time to automatically install the rosdeps inside the container, you can then build and run the container by following step 4 of Building from source
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
- Install the following dependencies:
- Make
- Docker
-
qemu-user-static (only for multiarch builds)
- Run the following command to register the qemu binaries with docker:
docker run --rm --privileged multiarch/qemu-user-static:register
- Run the following command to register the qemu binaries with docker:
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 ascatkin_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
Shared codebases
Both the ros
and ros2
branches share most of their code by using git submodules. The following submodules contain most of the actual implementations:
-
microstrain_inertial_driver_common submoduled in this repo at
microstrain_inertial_driver/microstrain_inertial_driver_common
-
microstrain_inertial_msgs_common submoduled in this repo at
microstrain_inertial_msgs/microstrain_inertial_msgs_common
-
microstrain_inertial_rqt_common submoduled in this repo at
microstrain_inertial_rqt/microstrain_inertial_rqt_common
Previous Versions
Previous versions of the driver were released as tags on Github. They can also be found in specific branches:
-
ros2-3.x.x
contains the most recent code before the standardizing refactor -
ros2-2.x.x
contains the most recent code before the MIP SDK refactor
License
Different packages in this repo are released 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 |
CONTRIBUTING
Repository Summary
Checkout URI | https://github.com/LORD-MicroStrain/microstrain_inertial.git |
VCS Type | git |
VCS Version | ros |
Last Updated | 2024-11-07 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Packages
Name | Version |
---|---|
microstrain_inertial_description | 4.5.0 |
microstrain_inertial_driver | 4.5.0 |
microstrain_inertial_examples | 4.5.0 |
microstrain_inertial_msgs | 4.5.0 |
microstrain_inertial_rqt | 4.5.0 |
README
Description
Interface (driver) software, including ROS node, for inertial sensors from MicroStrain by HBK, developed in Williston, VT.
Implemented using the MicroStrain Inertial Protocol SDK (mip_sdk
)
Table of Contents
- ROS Wiki
- ROS vs ROS2 versions
- Packages
- Install Instructions
- Building From Source
- Run Instructions
- Docker Development
- Shared Codebases
- Previous Versions
- Licenses
ROS Wiki
For more information on the data published and services available see our ROS wiki page
ROS vs ROS2 Versions
Note that this branch contains the ROS implementation for the packages. If you are looking for the ROS2 version, you should go to the ros2
branch
Packages
This repo contains the following packages:
-
microstrain_inertial_driver
– ROS node that will communicate with the devices -
microstrain_inertial_msgs
– Collection of messages produced by themicrostrain_inertial_driver
node -
microstrain_inretial_examples
– Collection of examples that show how to interact with themicrostrain_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 themicrostrain_inertial_driver
Install Instructions
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 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 the Building From Source guide below.
IMPORTANT NOTE ABOUT CLONING
This repo 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 update --init --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
Building from source
-
Install ROS and create a workspace: Installing and Configuring Your ROS Environment
-
Clone the repository into your workspace:
git clone --recursive --branch ros https://github.com/LORD-MicroStrain/microstrain_inertial.git ~/your_workspace/src/microstrain_inertial
-
Install rosdeps for this package:
rosdep install --from-paths ~/your_workspace/src -i -r -y
-
Build your workspace:
cd ~/your_workspace
catkin_make
source ~/your_workspace/devel/setup.bash
The source command will need to be run in each terminal prior to launching a ROS node.
Udev Rules
NOTE: If installing from the buildfarm, the udev rules will be installed automatically
This driver comes with udev rules that will create a symlink for all microstrain devices.
To install the rules. Download the udev file from this repo and copy it to
/etc/udev/rules.d/100-microstrain.rules
Once the udev rules are installed, the devices will appear as follows in the file system, where {serial} is the serial number of the device:
-
/dev/microstrain_main
- Most recent non-GQ7 device, or the main port of a GQ7 connected. NOTE: Do not use this rule with multiple devices as it gets overridden with multiple devices. -
/dev/microstrain_aux
- Most recent GQ7 aux port connected. NOTE: Do not use this rule with multiple devices as it gets overridden with multiple devices. -
/dev/microstrain_main_{serial}
- All non-GQ7 devices, and the main port of GQ7 devices -
/dev/microstrain_aux_{serial}
- The aux port of GQ7 devices
Run Instructions
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
The node has some optional launch parameters that can be specified from the command line in the format param:=value
-
namespace
: namespace that the driver will run in. All services and publishers will be prepended with this, default:/
-
node_name
: name of the driver, default:microstrain_inertial_driver
-
debug
: output debug logs, default:false
-
params_file
: path to a parameter file to override the default parameters stored inparams.yml
, default: empty
Publish data from two devices simultaneously
- Create the following files somewhere on your system (we will assume they are stored in the
~
directory):-
~/sensor_a_params.yml
with the contents:
-
port: /dev/ttyACM0
2. `~/sensor_b_params.yml` with the contents:
port: /dev/ttyACM1
- In two different terminals:
roslaunch microstrain_inertial_driver microstrain.launch node_name:=sensor_a_node namespace:=sensor_a params_file:="~/sensor_a_params.yml"
roslaunch microstrain_inertial_driver microstrain.launch node_name:=sensor_b_node namespace:=sensor_b params_file:="~/sensor_b_params.yml"
This will launch two nodes that publish data to different namespaces:
-
/sensor_a
, connected over port:/dev/ttyACM0
-
/sensor_b
, connected over port:/dev/ttyACM1
An example subscriber node can be found in the MicroStrain Examples package.
Docker Development
VSCode
The easiest way to develop in docker while still using an IDE is to use VSCode. Follow the steps below to develop on this repo in a docker container.
- Install the following dependencies:
- Open VSCode and install the following plugins:
- Open this directory in a container:
- Open the
microstrain_inertial
directory in VSCode - Click the green
><
icon in the bottom left corner of the window - Choose
Reopen In Container
- Open the
- Once the project is open in the container, it will take some time to automatically install the rosdeps inside the container, you can then build and run the container by following step 4 of Building from source
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
- Install the following dependencies:
- Make
- Docker
-
qemu-user-static (only for multiarch builds)
- Run the following command to register the qemu binaries with docker:
docker run --rm --privileged multiarch/qemu-user-static:register
- Run the following command to register the qemu binaries with docker:
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 ascatkin_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
Shared codebases
Both the ros
and ros2
branches share most of their code by using git submodules. The following submodules contain most of the actual implementations:
-
microstrain_inertial_driver_common submoduled in this repo at
microstrain_inertial_driver/microstrain_inertial_driver_common
-
microstrain_inertial_msgs_common submoduled in this repo at
microstrain_inertial_msgs/microstrain_inertial_msgs_common
-
microstrain_inertial_rqt_common submoduled in this repo at
microstrain_inertial_rqt/microstrain_inertial_rqt_common
Previous Versions
Previous versions of the driver were released as tags on Github. They can also be found in specific branches:
-
ros-3.x.x
contains the most recent code before the standardizing refactor -
ros-2.x.x
contains the most recent code before the MIP SDK refactor -
master
contains the most recent code before the common codebase refactor (prior to2.0.0
)
License
Different packages in this repo are released 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 |