Giter VIP home page Giter VIP logo

imu_vn_100's Introduction

imu_vn_100


This repo is not actively maintained. Please consider using dawonn/vectornav


The imu_vn_100 package is a linux ROS driver for VN-100 Rugged IMU of VECTORNAV. The package is developed based on the official SDK v0.3.2 for Linux. The user manual for the device can be found here.

The package is tested on Ubuntu 14.04 with ROS indigo.

Note that the official SDK is modified within this package due to some bugs or unsupported features. Please carefully update the SDK, since the new SDK may not work with the provided software.

License

  • The license for the official SDK is the MIT license which is included in the include/imu_vn_100/vncpplib
  • The license for the other codes is Apache 2.0 whenever not specified.

Compiling

This is a Catkin package. Make sure the package is on ROS_PACKAGE_PATH after cloning the package to your workspace. And the normal procedure for compiling a catkin package will work.

cd your_work_space
catkin_make --pkg imu_vn_100 --cmake-args -DCMAKE_BUILD_TYPE=Release

Example Usage

Parameters

port (string, default: \tty\USB0)

Port which the device connected to. This can be checked by command dmesg.

frame_id (string, default: imu)

The frame ID entry for the sent messages.

baudrate (int, 921600)

The baud rate of the serial port. The available baud rates can be checked on the user manual. It is suggested that the baud rate is kept at 921600 to ensure the high frequency transmission. The device will send permission denied error code if the baud rate cannot support the desired data package at the desired frequency.

imu_rate (int, 200)

The rate of the IMU data.

enable_magn  (bool, default: true)
enable_press (bool, default: true)
enable_temp  (bool, default: true)

Enable other possible messages that the driver is available to send. Note that the frequency of the data for each of these messages will be the same with the IMU data, if the topic is enabled.

sync_rate (int, 20)

The rate of the sync out trigger signal. Note that the actual rate may not exactly match the provided rate, unless the provided rate is a divisor of 800. When sync_rate <= 0, it is disabled.

Published Topics

imu/imu (sensor_msgs/Imu)

The message contains the uncompensated (for the definition of UNCOMPENSATED, please refer to the user manual) angular velocity and linear acceleration. Note that the orientation is not provided on this topic.

imu/magnetic_field (sensor_msgs/MagneticField)

Uncompensated magnetic field.

imu/pressure (sensor_msgs/FluidPressure)

Pressure.

imu/temperature (sensor_msgs/Temperature)

Temperature in degree Celsius

Node

With the provided launch file, do

roslaunch imu_vn_100 vn_100_cont.launch

FAQ

  1. The driver can't open my device? Make sure you have ownership of the device in /dev.

  2. Why I have permission error during the initialization process of the driver? Most often, this is because the baud rate you set does not match the package size to be received. Try increase the baud rate.

Bugs or Features Required of the Official SDK

  • [Solved] Define macros for options to set synchronization register and communication control register. (vndevice.h)

  • [Solved] Pressure entry is not properly parsed and overwrites temperature in vndevice_processAsyncData when the async data output type is set to VNASYNC_VNIMU. (vndevice.c)

  • [Solved] Synchronization time or count is not parsed in vndevice_processAsyncData. (vndevice.c)

  • Angular velocity and linear acceleration are flipped when the device is set to binary output using BG1_IMU

  • Orientation and uncompensated IMU measurements cannot be acquired within a single setting using async output.

imu_vn_100's People

Contributors

berndpfrommer avatar fcladera avatar kartikmohta avatar ke-sun avatar stevemacenski avatar versatran01 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

imu_vn_100's Issues

Suspicious shared_ptr

May be I'm wrong, but all those

pub_temp = nh.advertise<sensor_msgs::Temperature>("temperature", 1);
pub_temp_ptr = boost::shared_ptr<ros::Publisher>(&pub_temp);

look very suspicious/dangerous to me.

One workaround is to use a custom null deleter. Or maybe just use plain pointer?

ERROR: cannot launch node of type [imu_vn_100/imu_vn_100_cont_node]: Cannot locate node of type [imu_vn_100_cont_node] in package [imu_vn_100]. Make sure file exists in package path and permission is set to executable (chmod +x)

Hello Sir, how are you?
I install your package and build them without any error.
When I was run the launch appear: ERROR: cannot launch node of type [imu_vn_100/imu_vn_100_cont_node]: Cannot locate node of type [imu_vn_100_cont_node] in package [imu_vn_100]. Make sure file exists in package path and permission is set to executable (chmod +x)

Screenshot_20200403_022754

Opertation time out.

screenshot from 2018-07-12 17-04-45
After make the ROS work space, the first try of IMU VN100T is workable with my own DIY USB-IMU cable.
Then I use the official USB cable and plug in to windows OS software to test its performance, the test is ok.
However, after I re-try with the ROS launch. the /imu/imu has no new message anymore.
I try to change the Baud Rate to meet with the Window OS one. but still failed.
Does Anyone met the same problem as me?

IMU hardware trigger

Hi.
I was planning to by this sensor, and I have a question:
Should a purchase the serial, the usb or both cables, in order to get access to hardware triggering?

Thanks

VN: Permission Denied

I'm getting a permission denied error when I'm running the launch file. I've changed the baud rate to 921600 and the serial to 1 in line 17, but it's still giving me the error. I'm using an FTDI cable to connect (not just the standard IMU cable), but it looks like it's outputting correct data since it's not getting operation timeouts. Any ideas?

Magnetic field messages publishing 0 values

I am running this driver with enable_mag set to true, however the published magnetic field messages show all 0 vales. Has anyone else ever experienced this? Any thoughts?

Thanks
Vik

IMU rate consistently lower than setting

Hello, I have been having an issue where the IMU rate is consistently lower than what I set it at. For example, when I set the IMU to run at a rate of 80 Hz, rostopic hz /imu/imu shows that messages are only being published at a rate of approximately 56 Hz. Similarly, when I try to set the frequency to 200 Hz, messages are published at a rate of 144 Hz. I am setting the serial baudrate to 921600, which I believe should be plenty for receiving messages at any of the rates I've been experimenting with, and it is possible to increase the IMU rate by setting it to higher numbers, but the output rates are not consistent with the ones that have been set.

I've tried the FTDI fix in the FAQ section, but it doesn't seem to solve the problem, nor does setting sync_rate to 0. Has anyone else encountered a similar problem and come up with a solution? Thanks in advance for the help.

VN permission denied error when enabling binary mode

Using the default launch file I get a permission denied error. The driver permissions look fine, and it sets the baud rate as expected. This call triggers the Permission denied error:

  VnEnsure(vn100_setBinaryOutput1Configuration(
      &imu_, BINARY_ASYNC_MODE_SERIAL_2, kBaseImuRate / imu_rate_,
      BG1_QTN | BG1_IMU | BG1_MAG_PRES | BG1_SYNC_IN_CNT | BG1_TIME_SYNC_IN,
      BG3_NONE, BG5_NONE, true));

I can operate the device in ASCII mode and get data just fine. Any idea what the problem could be?

Here is the ROS driver output:

[ INFO] [1625943184.351130705]: Sync out rate: 20
[ INFO] [1625943184.862031633]: Connected to device at /dev/ttyUSB0
[ INFO] [1625943184.885040377]: Default serial baudrate: 115200
[ INFO] [1625943184.885198288]: Set serial baudrate to 921600
[ INFO] [1625943185.919464869]: Connected to device at /dev/ttyUSB0
[ INFO] [1625943185.949322535]: New serial baudrate: 921600
[ INFO] [1625943185.966449729]: Fetching device info.
[ INFO] [1625943185.981300794]: Model number: VN-100T-CR
[ INFO] [1625943185.997282869]: Hardware revision: 7
[ INFO] [1625943186.013351897]: Serial number: 0100056785
[ INFO] [1625943186.030187364]: Firmware version: 2.1.0.0
[ INFO] [1625943186.030270266]: Set Synchronization Control Register (id:32).
[ INFO] [1625943186.101733960]: /imu: VN: Permission denied

can not obtain high freuqnecy

At first when i use the driver, if i set hz rate to be 400. it will be close
but after using like 1 month. if i set 400 now, the rate is only 100 to 300 only.
why this could happen?

Error using this driver!!!

I am trying to use this drive on a VN-100 in ROS Kinetic. I am able to compile everything correctly, however I get an error when I run it. The VN-100 is default out of the box, so I am setting the baudrate to 115200 in the config file. However the IMU rate of 100hz, throws a permission error. So I set the IMU rate to 20 and here is what I see...
[ INFO] [1507221665.943186795]: Sync out rate: 100 [ INFO] [1507221666.559237034]: Connected to device at /dev/ttyUSB0 [ INFO] [1507221666.591308742]: Default serial baudrate: 115200 [ INFO] [1507221666.591380828]: Set serial baudrate to 115200 [ INFO] [1507221667.623906113]: Connected to device at /dev/ttyUSB0 [ INFO] [1507221667.651121672]: New serial baudrate: 115200 [ INFO] [1507221667.671867168]: Fetching device info. [ INFO] [1507221667.687437961]: Model number: VN-100S-CR [ INFO] [1507221667.702816139]: Hardware revision: 7 [ INFO] [1507221667.718275868]: Serial number: 0100027862 [ INFO] [1507221667.733840069]: Firmware version: 2.0.1.0 [ INFO] [1507221667.733908211]: Set Synchronization Control Register (id:32). [ INFO] [1507221667.800836884]: Setting IMU rate to 20
When I run rostopic list I am able to see the topics, however rostopic echo /imu/imu does't show me anything.

Any ideas where I am going wrong?

Thanks,
Vikrant

/imu: VN: Permission denied

Hi,

I am trying to run the node through the given roslaunch but strangely it is throwing permission errors even when it could initially talk to the sensor. It's different from the issue #7 as quite a lot has changed since then. This problem raised when I pulled in the latest master today. I was using the earlier version without the VPE controls.
I have tried changing the ownership of /dev/ttyUSB0 to the current user but that didn't work.
Logs are attached below.

[ INFO] [1507493246.354727802]: Sync out rate: 20 [ INFO] [1507493246.855516924]: Connected to device at /dev/ttyUSB0 [ INFO] [1507493246.894644059]: Default serial baudrate: 115200 [ INFO] [1507493246.894686756]: Set serial baudrate to 921600 [ INFO] [1507493247.931730653]: Connected to device at /dev/ttyUSB0 [ INFO] [1507493247.949351739]: New serial baudrate: 921600 [ INFO] [1507493247.969925247]: Fetching device info. [ INFO] [1507493247.985199319]: Model number: VN-100S-CR [ INFO] [1507493248.000538898]: Hardware revision: 7 [ INFO] [1507493248.015881901]: Serial number: 0100022358 [ INFO] [1507493248.031221457]: Firmware version: 2.0.1.0 [ INFO] [1507493248.031265114]: Set Synchronization Control Register (id:32). [ INFO] [1507493248.066934842]: Default VPE enable: 1 [ INFO] [1507493248.066981043]: Default VPE heading mode: 1 [ INFO] [1507493248.067001717]: Default VPE filtering mode: 1 [ INFO] [1507493248.067019919]: Default VPE tuning mode: 1 [ INFO] [1507493248.067053520]: Setting VPE MagnetometerBasicTuning BaseTuning (4.000000, 4.000000, 4.000000) [ INFO] [1507493248.067078179]: Setting VPE MagnetometerBasicTuning AdaptiveTuning (5.000000, 5.000000, 5.000000) [ INFO] [1507493248.067102500]: Setting VPE MagnetometerBasicTuning AdaptiveFiltering (5.500000, 5.500000, 5.500000) [ INFO] [1507493248.082273786]: Setting VPE AccelerometerBasicTuning BaseTuning (5.000000, 5.000000, 5.000000) [ INFO] [1507493248.082320937]: Setting VPE AccelerometerBasicTuning AdaptiveTuning (3.000000, 3.000000, 3.000000) [ INFO] [1507493248.082342291]: Setting VPE AccelerometerBasicTuning AdaptiveFiltering (4.000000, 4.000000, 4.000000) [ INFO] [1507493248.128296534]: Streaming #1: BG1_QTN|BG1_SYNC_IN_CNT|BG1_IMU [ INFO] [1507493248.128346455]: Streaming #3: BG3_UNCOMP_MAG|BG3_TEMP|BG3_PRES [ INFO] [1507493248.153080834]: /imu: VN: Permission denied [imu-2] process has finished cleanly

Unstable generated frequency

Hi,

I'd like to thank you first for sharing the tool with us.
We tested your driver on a vn-100 under the environment:

Ubuntu 16.04 + ROS Kinetic

Actually we record the ros message published by the driver and visualize the statistics of the bag recorded. One thing we noticed abnormal is that the generated frequency seems unstable along the temporal direction. See figures.

We visualize the data by subtracting consecutive frames, and show the temporal interval along the recording time. One may notice that:

a drop of relative exact 0.05s occurs around every 15~20 frames.

And this strange behavior is independent to the choice of imu_rate or sync_rate in the configuration launch file, in other words, if we set the imu_rate to 100 we still notice this drop in similar amount and period (0.05s and 20 frames).

We've been investigating it for quite a long time but failed to come up with a solution, we'd like to know if you have any good insight about this problem.

Thanks ;-)

Test40_05_step_imu

Test40_06_step_imu

Coordinate system of imu output

Hey folks,
I have possibly quite a stupid question. I was looking at the definition of coordinate system on the VN-100 which is given as

However, when I run the sensor with this driver, I see that the z - linear acceleration shows -9.8 ish values. How does this match the provided coordinate system? Is there some kind of coordinate transformation being done in the driver?

Noisy Linear Acceleration

Hi,

I enabled streaming of gravity-removed linear acceleration by adding BG5_LINEAR_ACCEL_BODY to Binary Group 5 in the 'Stream()' method and reading back 'data.linearAccelBody' in the 'PublishData' method. However on visualising the acceleration in Rviz and also on looking at the contents of the topics, it seemed that the values are quite noisy even when the sensor is standing still.

I have set the VPE to be enabled and imu_compensated to be true. Even the non-gravity compensated acceleration seemed to be noisy on rviz. I have not been able to use the acceleration measurements from this IMU in my sensor fusion algorithm because of such noisy data.

Am I missing out on enabling certain flags/settings?

/imu: VN: Permission denied

Hello,

I downloaded the package. When I run:
roslaunch imu_vn_100 vn_100_cont.launch
I get the following result in the terminal. "/imu: VN: Permission denied". Would you please help me to solve the problem.

process[rosout-1]: started with pid [13597]
started core service [/rosout]
process[imu-2]: started with pid [13607]
[ INFO] [1464357306.167245353]: Sync out rate: 20
[ INFO] [1464357306.748363389]: Connected to device at /dev/ttyUSB0
[ INFO] [1464357306.765977143]: Default serial baudrate: 115200
[ INFO] [1464357306.766011559]: Set serial baudrate to 921600
[ INFO] [1464357307.776820987]: Connected to device at /dev/ttyUSB0
[ INFO] [1464357307.783369148]: New serial baudrate: 921600
[ INFO] [1464357307.788441741]: Fetching device info.
[ INFO] [1464357307.793557811]: Model number: VN-100T-CR
[ INFO] [1464357307.798613813]: Hardware revision: 7
[ INFO] [1464357307.803668418]: Serial number: 0100017300
[ INFO] [1464357307.808746557]: Firmware version: 2.0.0.0
[ INFO] [1464357307.808777854]: Set Synchronization Control Register (id:32).
[ INFO] [1464357307.837879233]: /imu: VN: Permission denied
[imu-2] process has finished cleanly

Thank you.
Mahsa

Update: I tried to change the baud rate both on the launch file and the USB port, but it didn't change the error at all.

Changing SyncOutMode

I'm trying to change the IMU code to make it a master and send signals out of the IMU to communicate to some other sensors. I see in vndevice.h that SYNCOUTMODE_IMU_START is defined (this is the one I want), but in all the files I can't find what parameter has set this to the default in order to either edit it in the scripts or in the launch file. Has anyone found anything on this?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.