Repo symbol

ess_imu_driver repository

Repo symbol

ess_imu_driver repository

Repo symbol

ess_imu_driver repository

Repo symbol

ess_imu_driver repository

Repo symbol

ess_imu_driver repository

Repo symbol

ess_imu_driver repository

Repo symbol

ess_imu_driver repository

Repo symbol

ess_imu_driver repository

Repo symbol

ess_imu_driver repository

Repo symbol

ess_imu_driver repository

Repo symbol

ess_imu_driver repository

Repo symbol

ess_imu_driver repository

Repo symbol

ess_imu_driver repository

Repo symbol

ess_imu_driver repository

Repo symbol

ess_imu_driver repository

Repo symbol

ess_imu_driver repository

Repo symbol

ess_imu_driver repository

Repo symbol

ess_imu_driver repository

Repo symbol

ess_imu_driver repository

ess_imu_driver

Repository Summary

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

Packages

Name Version
ess_imu_driver 2.0.2

README

README for Epson IMU Driver for ROS1 Node

What is this repository for?

  • This code is a ROS1 package for demonstrating a ROS node that configures and publishes IMU messages from a supported Epson IMU.
  • This code provides software communication between Epson IMU and ROS using the either the UART or SPI interface.
  • For the UART connection, this code uses the standard Unix Terminal I/O library (termios) for communicating either direct or by USB-serial converter such as FTDI USB-UART bridge ICs.
  • For the SPI connection, this code uses the Unofficial wiringPi library for accessing GPIO and SPI functions on the Raspberry Pi platform running Ubuntu Linux distro.
  • This ROS1 node demonstration software is a ROS C++ wrapper around the Linux C driver software:
    • src/epson_imu_uart_ros_node.cpp is for the UART interface
    • src/epson_imu_spi_ros_node.cpp is for the SPI interface
  • The other source files in src/ are based on the Linux C driver originally released and can be found here: Linux C driver and logger example for EPSON IMU
  • Information about ROS, and tutorials can be found: ROS.org

What kind of hardware or software will I likely need?

  • Epson IMU Epson IMU models
    • At the time software release:
      • G320PDG0, G320PDGN, G354PDH0, G364PDCA, G364PDC0
      • G365PDC1, G365PDF1, G370PDF1, G370PDS0
      • G330PDG0, G366PDG0, G370PDG0, G370PDT0
      • G570PR20
  • ROS Noetic (via download) ROS.org
  • This software was developed and tested on the following:
  ROS1:        Noetic
  Description: Ubuntu 20.04 LTS
  Hardware Platform: Core i7 PC, Raspberry Pi 3B+, RaspberryPi 4

For the UART Interface:

  • Epson USB evaluation board or equivalent FTDI USB-Serial interface connecting the Epson IMU to ROS host (tty/serial) See M-G32EV041
  • Alternatively, a direct connection from the Epson IMU to the ROS platform supporting a 3.3V CMOS compatible UART interface See M-G32EV031.

For the SPI Interface:

  • NOTE: This software is intended for an embedded Linux host system with 3.3V I/O compatible SPI interface (SCLK, MISO, MOSI) and 3 GPIOs (CS#, RST#, DRDY).
  • For Raspberry Pi, if not enabled already the SPI interface can be enabled using raspi-config or equivalent.
  • This code uses a separate GPIO to manually control CS# chipselect instead of the chipselect assigned to by the RapsberryPi SPI interface.
    • The chipselect assigned by the HW SPI interface should also work, but has not been thoroughly tested.
  • Epson Breakout evaluation board or some equivalent is required to connect to the 3.3V CMOS compatible pins of the ROS host (SPI & GPIOs) See M-G32EV031

How do I use the driver?

  • This code assumes that the user is familiar with building ROS packages using the catkin_make build process.

  • This README is NOT detailed step by step instructions on how to build and install ROS software.

  • Please refer to the ROS.org website for more detailed instructions on the ROS package build process. ROS.org

  • NOTE: At a bare minimum, the user must re-build the package with catkin_make after modifying the CMakeLists.txt to configure any of the following:

    • serial interface type, INTERFACE= (UART or SPI)
    • host platform type, PLATFORM= (RPI or NONE=PC)
  • Changes to IMU settings should be made by editing the .launch files located in the launch/ folder instead of modifying the src/ source files

How do I use the driver if usleep() is not supported for time delays?

  • NOTE: In the hcl_linux.c or hcl_rpi.c, there are seDelayMS() and seDelayMicroSecs() wrapper functions for time delays in millisecond and microseconds, respectively.
  • On embedded Linux platforms, the user may need to modify and redirect to platform specific delay routines if usleep() is not supported.
  • For example on RaspberryPi, the time delay functions for millisecond and microseconds are redirected to WiringPi library delay() and delayMicroseconds(), respectively.
  • If a hardware delay is not available from a library, then a software delay loop is possible but not preferred.

How do I use the driver with GPIOs to control IMU RESET#, DRDY, EXT pins?

  • When connecting the IMU using the UART interface, the use of GPIO pins for connecting to the IMU RESET# or DRDY is optional, but can be useful on an embedded Linux platforms (such as RapsberryPi).
  • When connecting the IMU using the SPI interface, the use of GPIO pins for connecting to the IMU DRDY is mandatory (RESET# is recommended, EXT is optional).
  • When using the time_correction function for accurate time stamping with an external 3.3V GNSS 1PPS signal, the IMU EXT pin must be connected to the 1PPS.

File truncated at 100 lines see the full file