Recently, I have connected ArbotiX to my turtlebot, and I'm not sure at what moment, but iCreate is no longer recognized by ubuntu.
process[turtlebot_node-3]: started with pid [12965]
[INFO] [WallTime: 1326474052.569072] serial port: /dev/ttyUSB0
[INFO] [WallTime: 1326474052.570262] update_rate: 30.0
[INFO] [WallTime: 1326474052.571115] drive mode: twist
[INFO] [WallTime: 1326474052.572432] has gyro: True
shutdown request: new node registered with same name
[turtlebot_node-3] process has finished cleanly.
log file: /home/turtlebot/.ros/log/5f3b4ca6-3d9d-11e1-b101-485d60f51088/turtlebot_node-3*.log
With iCreate, Kinect and arbotix connected to Ubuntu, dmesg shows following:
[41790.104418] USB Serial support registered for FTDI USB Serial Device
[41790.104717] ftdi_sio 2-2:1.0: FTDI USB Serial Device converter detected
[41790.104831] usb 2-2: Detected FT232RL
[41790.104840] usb 2-2: Number of endpoints 2
[41790.104848] usb 2-2: Endpoint 1 MaxPacketSize 64
[41790.104855] usb 2-2: Endpoint 2 MaxPacketSize 64
[41790.104862] usb 2-2: Setting MaxPacketSize 64
[41790.107420] usb 2-2: FTDI USB Serial Device converter now attached to ttyUSB0
[41790.107711] usbcore: registered new interface driver ftdi_sio
[41790.107720] ftdi_sio: v1.6.0:USB FTDI Serial Converters Driver
[42018.320055] usb 2-1: new full speed USB device using uhci_hcd and address 3
[42018.535207] ftdi_sio 2-1:1.0: FTDI USB Serial Device converter detected
[42018.535320] usb 2-1: Detected FT232RL
[42018.535329] usb 2-1: Number of endpoints 2
[42018.535336] usb 2-1: Endpoint 1 MaxPacketSize 64
[42018.535343] usb 2-1: Endpoint 2 MaxPacketSize 64
[42018.535349] usb 2-1: Setting MaxPacketSize 64
[42018.537331] usb 2-1: FTDI USB Serial Device converter now attached to ttyUSB1
Both Usb port are used as FTDI, when only one should be. I'm not sure how does this happen, and I hope to find some help here. Thanks.
I searched here for suggestions and found similar topic http://answers.ros.org/question/3094/cant-get-data-from-create-robot-error-reading-from where I've asked for solution, but it looks like my post was removed.
Since both the arbotix and create are using FTDI chips, I'd suggest using a udev rule to assign a new dev entry for each: /dev/arbotix /dev/create or something similar based on the FTDI serial #s.
Here's what I use to differentiate my create from my arduino (you'll have to change this, but you can use the basics for reference):
SUBSYSTEM=="tty", KERNEL=="ttyUSB[0-9]*", ATTRS{manufacturer}=="FTDI", ATTRS{product}=="FT232R USB UART", SYMLINK+="arduino"
SUBSYSTEM=="tty", KERNEL=="ttyUSB[0-9]*", ATTRS{manufacturer}=="FTDI", ATTRS{product}=="US232R", SYMLINK+="create"
This gives me /dev/create and /dev/arduino dev entries, even though they use similar FTDI ICs. I was lucky enough that their product descriptions varried, you may find that they are the same product but have different serials.
Update: If you want to differentiate by their ID_SERIAL, it should be something like this:
SUBSYSTEM=="tty", KERNEL=="ttyUSB[0-9]*",
ENV{ID_VENDOR}=="FTDI", ENV{ID_SERIAL}=="FTDI_FT232R_USB_UART_A400C1Q6",
SYMLINK+="create"
SUBSYSTEM=="tty", KERNEL=="ttyUSB[0-9]*",
ENV{ID_VENDOR}=="FTDI", ENV{ID_SERIAL}=="FTDI_FT232R_USB_UART_A2001nbT",
SYMLINK+="arbotix"
Stick that in a text file called 70-myrobot.rules or something similar and throw it /etc/udev/rules.d/
Note: This is just an example and in reality you'll actually have to figure out which serial is attached to which device. Start with one being unplugged, use udevadm to match the serial. Then fix the rule accordingly. The one I provided you has a 50/50 shot of being correct ;-)
I've run udevadm info to see what would be the difference between two of the ttyUSB* and they looks very much the same:
turtlebot@turtlebot:~$ udevadm info -q all -n /dev/ttyUSB1
P: /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/ttyUSB1/tty/ttyUSB1
N: ttyUSB1
S: serial/by-path/pci-0000:00:1d.0-usb-0:1:1.0-port0
S: serial/by-id/usb-FTDI_FT232R_USB_UART_A400C1Q6-if00-port0
E: UDEV_LOG=3
E: DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/ttyUSB1/tty/ttyUSB1
E: MAJOR=188
E: MINOR=1
E: DEVNAME=/dev/ttyUSB1
E: SUBSYSTEM=tty
E: ID_PORT=0
E: ID_PATH=pci-0000:00:1d.0-usb-0:1:1.0
E: ID_VENDOR=FTDI
E: ID_VENDOR_ENC=FTDI
E: ID_VENDOR_ID=0403
E: ID_MODEL=FT232R_USB_UART
E: ID_MODEL_ENC=FT232R\x20USB\x20UART
E: ID_MODEL_ID=6001
E: ID_REVISION=0600
E: ID_SERIAL=FTDI_FT232R_USB_UART_A400C1Q6
E: ID_SERIAL_SHORT=A400C1Q6
E: ID_TYPE=generic
E: ID_BUS=usb
E: ID_USB_INTERFACES=:ffffff:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=ftdi_sio
E: ID_IFACE=00
E: ID_VENDOR_FROM_DATABASE=Future Technology Devices International, Ltd
E: ID_MODEL_FROM_DATABASE=FT232 USB-Serial (UART) IC
E: ID_MM_CANDIDATE=1
E: DEVLINKS=/dev/serial/by-path/pci-0000:00:1d.0-usb-0:1:1.0-port0 /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A400C1Q6-if00-port0
turtlebot@turtlebot:~$ udevadm info -q all -n /dev/ttyUSB0
P: /devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.0/ttyUSB0/tty/ttyUSB0
N: ttyUSB0
S: serial/by-path/pci-0000:00:1d.0-usb-0:2:1.0-port0
S: serial/by-id/usb-FTDI_FT232R_USB_UART_A2001nbT-if00-port0
E: UDEV_LOG=3
E: DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.0/ttyUSB0/tty/ttyUSB0
E: MAJOR=188
E: MINOR=0
E: DEVNAME=/dev/ttyUSB0
E: SUBSYSTEM=tty
E: ID_PORT=0
E: ID_PATH=pci-0000:00:1d.0-usb-0:2:1.0
E: ID_VENDOR=FTDI
E: ID_VENDOR_ENC=FTDI
E: ID_VENDOR_ID=0403
E: ID_MODEL=FT232R_USB_UART
E: ID_MODEL_ENC=FT232R\x20USB\x20UART
E: ID_MODEL_ID=6001
E: ID_REVISION=0600
E: ID_SERIAL=FTDI_FT232R_USB_UART_A2001nbT
E: ID_SERIAL_SHORT=A2001nbT
E: ID_TYPE=generic
E: ID_BUS=usb
E: ID_USB_INTERFACES=:ffffff:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=ftdi_sio
E: ID_IFACE=00
E: ID_VENDOR_FROM_DATABASE=Future Technology Devices International, Ltd
E: ID_MODEL_FROM_DATABASE=FT232 USB-Serial (UART) IC
E: ID_MM_CANDIDATE=1
E: DEVLINKS=/dev/serial/by-path/pci-0000:00:1d.0-usb-0:2:1.0-port0 /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A2001nbT-if00-port0
So, does it mean that both iCreate and ArbotiX are using the FTDI Usb interface or I messed up something again? :) I've been doing lots of different things which could change dev configuration. Anyway, based on this output it looks like only serial and serial short numbers are different.
Could you please suggest how I can create "generic rule" to distinguish iCreate and Arbotix? I'm new to this, and now sure what should I run (or which configuration file should I create/alter)? A big thanks to this community for saving me again :)
Asked: Jan 13
Seen: 160 times
Last updated: Jan 13
ROS Answers is licensed under Creative Commons Attribution 3.0 Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.