bluespace-ai / bluespace_ai_xsens_ros_mti_driver Goto Github PK
View Code? Open in Web Editor NEWxsens ros2 driver
License: BSD 3-Clause "New" or "Revised" License
xsens ros2 driver
License: BSD 3-Clause "New" or "Revised" License
=[ Xsens MTi driver for ROS 2.0]============================================================ Documentation: You can find the full documentation in "<your MT SDK directory>/doc/xsensdeviceapi/doc/html/index.html" under "ROS MTi driver" section. The SDK can be downloaded from https://www.xsens.com/software-downloads. Please note, this is a 3rd Party driver built from MTSDK2021.2 with no official support. Check the compatibility section for the compatible devices. For official support on Xsens MTi products, please refer to Xsens knowledge base: https://base.xsens.com Prerequisites: - ROS 2.0 Galactic/Foxy - C/C++ Compiler: GCC 5.4.0 or MSVC 14.0 - C++14 Building: - Copy bluespace_ai_xsens_mti_driver folder into your ROS 2.0 workspace 'src' folder. Make sure the permissions are set to o+rw on your files and directories. - Build Xsens MTi driver package: $ colcon build - Source workspace: $ source install/setup.bash Note: Building of 'xspublic' from the ament workspace has been automated in the CMake script. To build it manually, run the following from the ROS2.0 workspace root: $ pushd src/bluespace_ai_xsens_ros_mti_driver/lib/xspublic && make && popd Changes in this release compared to the Xsens ROS 1.0 driver open source: - Added ROS 2.0 support: The ROS 1.0 wrapper node was modified to work with ROS 2.0. - Migration to declared configuration parameters: ROS 1.0 driver supported undeclared parameters. Since ROS 2.0 guidelines discourage undeclared parameters, there are some minor modifications in the xsens_mti_node.yaml to support all the configuration capabilities from ROS1.0. For more details check the config file. - A boolean parameter scan_for_devices was added to enable switching between port scanning and connecting to a specific port for Xsens devices. - A boolean parameter enable_logging was added for logging. When enabled, the name of the file needs to be specified in the log_file parameter. - Magnetometer topic switched to sensor_msgs/MagneticField : The message type of the magnetometer measurement topic (/imu/mag) was switched to sensor_msgs/MagneticField from previous geometry_msgs/Vector3Stamped. This was a TODO item left in the original source. Running: - Configure your MTi device to output desired data (e.g. for display example - orientation output) - Launch the Xsens MTi driver from your ament workspace: $ ros2 launch bluespace_ai_xsens_mti_driver xsens_mti_node.launch.py After the device has been detected, you can communicate with it from another process / terminal window. For example: $ ros2 topic echo /filter/quaternion This will result in a continuous stream of data output: --- header: seq: 1386351 stamp: secs: 1545223809 nsecs: 197252179 frame_id: "imu_link" quaternion: x: 0.00276306713931 y: 0.00036825647112 z: -0.89693570137 w: -0.442152231932 --- - There is also an example that shows a 3D visualization of the device (orientation data should be enabled in the device): $ ros2 launch bluespace_ai_xsens_mti_driver display.launch.py Compatibility: - The driver is compatible with following Xsens IMU product lines: MTi 1-series MTi 10-series MTi 100-series MTi 600-series - The driver has been tested on amd64 as well as ARM 64-bit (aarch64) architectures. Notes: - ROS timestamps The data messages from devices are time stamped on arrival in the ROS driver. When collecting data at higher rates, eg 100 Hz, the times between reads can differ from the configured output rate in the device. This is caused by possible buffering in the USB/FTDI driver. For instance: 10 us, 10 us, 10 us, 45 ms, 10 us, 10 us, 10 us, 39 ms, 10 us, etc. instead of 10 ms, 10 ms, 10 ms, 10 ms, 10 ms, 10 ms, 10 ms, 10 ms, 10 ms, etc. Work-around: for accurate and stable time stamp information, users can make use of the sensor reported time stamp (/imu/time_ref) instead. -[ Troubleshooting ]------------------------------------------------------------ - The Mti1 (Motion Tracker Development Board) is not recognized. Support for the Development Board is present in recent kernels. (Since June 12, 2015). If your kernel does not support the Board, you can add this manually $ sudo /sbin/modprobe ftdi_sio $ echo 2639 0300 | sudo tee /sys/bus/usb-serial/drivers/ftdi_sio/new_id - The device is recognized, but I cannot ever access the device - Make sure you are in the correct group (often dialout or uucp) in order to access the device. You can test this with $ ls -l /dev/ttyUSB0 crw-rw---- 1 root dialout 188, 0 May 6 16:21 /dev/ttyUSB0 $ groups dialout audio video usb users plugdev If you aren't in the correct group, you can fix this in two ways. 1. Add yourself to the correct group You can add yourself to it by using your distributions user management tool, or call $ sudo usermod -G dialout -a $USER Be sure to replace dialout with the actual group name if it is different. After adding yourself to the group, either relogin to your user, or call $ newgrp dialout to add the current terminal session to the group. 2. Use udev rules Alternatively, put the following rule into /etc/udev/rules.d/99-custom.rules SUBSYSTEM=="tty", ATTRS{idVendor}=="2639", ACTION=="add", GROUP="$GROUP", MODE="0660" Change $GROUP into your desired group (e.g. adm, plugdev, or usb). - The device is inaccessible for a while after plugging it in - When having problems with the device being busy the first 20 seconds after plugin, purge the modemmanager application. Acknowledgement: Thank you to Steven Gies and his engineering team at Xsens Technologies for testing this driver against their complete MTi IMU product portfolio and reviewing the driver source.
When using this code on my MTi-G-710, the code kept crashing with the messege
[xsens_mti_node-1] what(): cannot store a negative time point in rclcpp::Time
This seems to be due to a casting issue in timereferencepublisher.h, where
sec is declared to be an uint32_t, but in the rclcpp::Time sample_time() it is
expected to be an int32_t.
Are there any plans to update the package to work with ROS2 Humble?
My colcon build exits on errors:
Failed <<< bluespace_ai_xsens_mti_driver [1.33s, exited with code 2]
Summary: 0 packages finished [1.47s]
1 package failed: bluespace_ai_xsens_mti_driver
1 package had stderr output: bluespace_ai_xsens_mti_driver
`
And apparently these libraries don't exist anywhere else on the internet.
Did anybody else face this problem? How do I solve it?
According to the manual to this repo, the driver is compatible with the following models of sensor: MTi 1-series, MTi 10-series, MTi 100-series and MTi 600-series.
I have two models: MTi-G-710 and MTi-30. I am able to connect to these devices and read the data. However, some topics are empty for these devices. For model MTi-G-710 inside topic /imu/data there is only orientation data(x, y, z, w), linear_acceleration and angular_velocities are set to 0.0. For model MTi-G-710 inside topic /imu/data there are values of orientation and linear accelerations, but angular velocities are 0.0.
I tested the devices with official Xsens Software and both of them work correctly. Also I tested this driver with different ROS2 distributions but the results are always the same. Have you encountered such kind of problem with different devices?
Hello everyone,
i am having a problem with building the package with Colcon. I am trying to use the foxy branch as there is no humble available at the moment and ROS2 foxy has reached the EoL status.
I tried the packages from
[Guido Sanchez for humble] (https://github.com/gmsanchez/bluespace_ai_xsens_ros_mti_driver/tree/ros2_0_humble ) but unfortentlay i had the same error.
can anyone give me a hint why is the error appearing? I could not find any answer online
Just FYI, I tested this with:
MTi-320
https://www.mouser.com/ProductDetail/Movella-Xsens/MTi-320-3A-SK?qs=Imq1NPwxi77GQP%2FjOXJZ1A%3D%3D
Works well! :)
Hi,
I have a MTI-30 model. When I run the driver it crashes with
[ERROR] [1628158672.132779485] [xsens_mti_node]: No MTi device found.
but lsusb does show this ;
Bus 001 Device 007: ID 2639:0003 Xsens MTi-30 AHRS
How can I use this driver for my sensor ?
The imu is linked to world as reference frame.
It is benificial to have the reference frame as parameter such that it can be changed in the params file
Is there the possibility in order to increase the measuring frequency?
Right now the ros messages are published with 100 hz but the Xsens MTI 680 ist supposed to measure up to 400 hz.
Can I adjust that somehow?
I tried installing the bluespace_ai_xsens_ros_mti_driver on a Ubuntu 20.04 machine with ros2 foxy. I followed the installlation guidelines and I am also in the correct group (dialout).
When running
ros2 launch bluespace_ai_xsens_mti_driver xsens_mti_node.launch.py
I get the error:
[xsens_mti_node-1] [ERROR] [1636372933.308295039] [xsens_mti_node]: No MTi device found.
The xsens mtmanager can find the MTi-3 device when clicking 'Scan Single Port' ttyUSB0. But the mtmanager cannot find the device when clicking 'Scan All Ports', I don't know if this information might be helpful.
Dear all,
I am facing a problem to launch the package.
As you see in the figure below,
Here are the specifications of my setup:
When I start the MT Manager, I have access to the IMU data.
This problem might me similar to #13 (comment).
hi i am currently using the xsens MTi-630R on my Jetson Xavier on Ubuntu 22 / ROS Humble. I am unable to see any data on topics such as /filter/positionlla, /filter/quaternion, /filter/free_acceleration, /filter_twist, /filter_velocity. How do i activate or get data in this topics? in the xsens_mti_node.yaml all my message publisher options are set to True. Kindly help
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.