USB IMU conflict

Hi,
I try to connect an USB IMU to the exernal USB port of my rosbot 2.0 (with ASUS board) but I have a conflit when I launch my ROS application:

  • IMU device is on USB0 port
  • teleop node is on USB0 port

In fact I can plug the imu and start the corresponding node :ok
If I don’t plug the imu I can teleop my RosBOT
But not both

Is there a way to specify the usb port name to use for each device ? (at least for the serial_bridge node ?)

thanks for help

Hello Baptiste,

There can not be two devices on the same USB port, I am sure, that one of devices get port USB1.
By default, following devices are bound to ports:

  • /dev/ttyUSB0 is RpLidar device.
  • /dev/ttyCORE2 is CORE2 board (interface for serial_bridge node).

To bind specific port name for device, you could use udev rules

Create udev file for IMU:

sudo nano /etc/udev/rules.d/91-imu.rules

And paste following content:

# set the udev rule , make the device_port be fixed by IMU

KERNEL=="ttyUSB*", ATTRS{idVendor}=="xxxx", ATTRS{idProduct}=="yyyy", MODE:="0777", SYMLINK+="imu"

You will need to replace values xxxx and yyyy with device VID and PID parameters. You can find them with lsusb, output will contain few lines like this:

Bus 001 Device 055: ID xxxx:yyyy DEVICE_NAME

Find one corresponding to your device and use appropriate values.
Your device will be available at port /dev/imu.

Regards,
Łukasz

Hello Lukasz,
I tried your solution but the problem persists.

When I plug my usb imu I can see the /dev/ttyUSB1 mounted and the /dev/imu.
I took a look to the “core2serial.rules” file:

KERNEL==“ttyUSB1”, MODE:=“0777”, SYMLINK+=“core2serial”
KERNEL==“ttyCORE2”, MODE:=“0777”

My previous post was a bit confused sorry, my problem is with the ttyUSB1 port. It seems to be used for core2serial and imu. So if I plug the imu the usb driver is crashing and I need to restart the board.

Regards,
Baptiste

Hello Baptiste,

You can safely remove entry KERNEL==“ttyUSB1”, MODE:=“0777”, SYMLINK+="core2serial" from file.
It was used for configuration with AWS RoboMaker.

What make and model of IMU are you using?

Regards,
Łukasz

Ok thanks for your answer.

My imu is a custom made with serial to usb converter (embedded on the imu pcb).

I’ve been able to launch fine all equipment by specifying the SYMLINK name of the imu and the rplidar directif into theire launch file. It’s not a very good think for the lidar because I have changed into the “/opt/ros/kinetic/share/rplidar_ros/launch/” folder … by default the value of the “serial_port” is “ttyUSB0” for rplidar (corrected with “/dev/rplidar”).

This hack works for the moment but it’s really not clean…