A minimal driver for VectorNav IMUs
sudo apt-get install libspdlog-dev
mkdir -p catkin_ws/src
cd catkin_ws/src
git clone [email protected]:ntnu-arl/vectornav.git
cd ..
catkin config -DCMAKE_BUILD_TYPE=Release
catkin build
Usage of the VN100 via a USB connection requires an FTDI TTL converter. The converter should be connected to the VN100 as shown below
Pin Number on VN100 | Label on VN100 | Label on FTDI TTL Converter |
---|---|---|
1 | VCC | VCC |
5 | GND | GND |
8 | TX2_TTL | RX |
9 | RX2_TTL | TX |
The complete pin assignments for the VN100 can be found in the user manual
Note that the default output from the VN100 is in the NED coordinate system.
Note that the filter
topics are bias compensated (with the onboard filter) whereas the imu
topics are not.
Topic | Message Type | Description |
---|---|---|
imu/data |
sensor_msgs/Imu |
Raw IMU data |
imu/mag |
sensor_msgs/MagneticField |
Raw magnetometer data |
filter/data |
sensor_msgs/Imu |
IMU data from the onboard filter |
filter/mag |
sensor_msgs/MagneticField |
Magnetometer data from the onboard filter |
temperature |
sensor_msgs/Temperature |
Temperature of the IMU |
pressure |
sensor_msgs/FluidPressure |
Pressure measured by the IMU |
sync_out_stamp |
std_msgs/Header |
Approximate timestamp of the sync_out signal |
Service Name | Service Type | Description |
---|---|---|
reset |
std_srvs/Empty |
Resets the IMU |
-
Use
udevadm info --attribute-walk /dev/ttyUSB0
(change/dev/ttyUSB0
to the port that the converter is connected to) to find the values for your FTDI converter. Typically,idProduct
,idVendor
andserial
should be enough. -
Edit the
vectornav_driver/udev/99-vn100.rules
file and replace the values with the ones from your converter. -
Edit the
SYMLINK
line in thevectornav_driver/udev/99-vn100.rules
file and replace the value with the name of the device that you want to use. -
Copy the
vectornav_driver/udev/99-vn100.rules
file to/etc/udev/rules.d/
.cd catkin_ws/src sudo cp vectornav/vectornav_driver/udev/* /etc/udev/rules.d/ sudo udevadm control --reload-rules && udevadm trigger
-
Add your user to the
dialout
group withsudo usermod -a -G dialout $USER
. -
Restart the computer.
Note:
- The USB latency timer should be set to 1 for the IMU to avoid the bunching up of IMU messages. The udev rule automatically does this for you.
- You can use
udevadm test $(udevadm info --query=path --name=/dev/ttyUSB0)
to test whether the new rule works as expected. If the rule works, it should show you the attributes for the converter with the rule that was triggered. - You may need to unplug and replug the IMU to make the udev rule take effect.
- If the udev rules do not load, you may need to restart the computer. This only needs to be done once during the setup.
Modify the vectornav_driver/config/vn100_params.yaml
per your requirements.
cd catkin_ws
source devel/setup.bash
roslaunch vectornav_driver vectornav_driver.launch
This driver has been tested on the following systems:
- VN100 Rugged - USB:
- Pop OS 20.04 x86-64
- Ubuntu 20.04 arm64
- Ubuntu 20.04 x86-64
The Seeed Studio A603 carrier board for the NVIDIA Orin NX has an issue with the kernel drivers for usbserial
. Essentially, instead of using the usbserial.ko
for the board which are modified by Seeed, the default usbserial.ko
is used. This causes the FTDI driver to not work as expected. The solution is to move the usbserial.ko
file which causes the new file from Seeed Studio to be used.
cd /lib/modules/5.10.120-tegra/kernel/drivers/usb/serial/
sudo mv usbserial.ko usbserial.ko.bk
- VN100 Datasheet
- VN100 User Manual
- Inertial Navigation Primer
- Time Synchronization Application Note: Contact VectorNav for access
For any questions, please contact