440 new firmware issue

RMP 210, 220, 440LE, 440SE, 440 Omni
Post Reply
bch36
Posts: 12
Joined: Thu Dec 20, 2012 1:25 pm
Contact:

440 new firmware issue

Post by bch36 » Tue Feb 26, 2013 2:01 pm

We recently received an RMP X440 high-clearance vehicle with the new firmware installed (1224 processor build ID, 1274 UI processor build ID). When the robot is powered on, after a variable number of seconds (0:37, 0:26, and 3:37 in three successive timed runs), the robot will have a seizure (tires jolt abruptly) and power off. This occurs when the vehicle isn't plugged into anything--power, USB, Ethernet, etc.

When I plug the USB line into my Windows laptop (no Segway driver installed) the robot will power on regardless of whether the power switch is on or off, then have the usual seizure and power off (no status or power lights) before I can install the Segway drivers or run the fault extraction program.

When I plug the USB line into my Linux desktop, the status light will start blinking a rapid red, I believe indicating there's a fault. This happens regardless of whether the power switch is on or off. The vehicle will not show up on the USB bus.

Potentially relevant background: we're writing our own interface, so after we received the vehicle, I plugged the robot into my Linux desktop via USB, powered it on, and started running our OCU. This was the first time I'd run the code connected to the vehicle. The vehicle quickly had the seizure and died. My concern is that my code may have sent a "bad" message and something got written into NVM or something like that--I don't know enough about the internals of the Segway to know what the possibilities are.

At the risk of overkill, here are the data portions of the messages I'm sending and receiving:

Send: 05 01 00 00 00 1e 00 00 00 01 42 74 (force config feedback bitmaps)

Receive: 41 00 00 00 40 40 00 00 40 40 00 00 3f fb 22 d1 3e 48 e8 a7 40 90 00 00 41 e2 31 27 3e f7 9c 84 3f 15 8e 22 3f 36 11 34 3f 80 00 00 00 00 00 01 28 00 a8 c0 00 00 00 37 00 ff ff ff 01 00 a8 c0 f8 00 1a 00 38 ff ff ff f0 80 00 00 00 00 00 00 00 00 71 2c

Send: 05 01 00 00 00 11 f8 00 1a 00 83 db (set user feedback bitmap 1)

Receive: 41 00 00 00 40 40 00 00 40 40 00 00 3f fb 22 d1 3e 48 e8 a7 40 90 00 00 41 e2 31 27 3e f7 9c 84 3f 15 8e 22 3f 36 11 34 3f 80 00 00 00 00 00 01 28 00 a8 c0 00 00 00 37 00 ff ff ff 01 00 a8 c0 f8 00 1a 00 38 ff ff ff f0 80 00 00 00 00 00 00 00 00 71 2c

Send: 05 01 00 00 00 12 38 ff ff ff 63 99 (set user feedback bitmap 2)

Receive: 41 00 00 00 40 40 00 00 40 40 00 00 3f fb 22 d1 3e 48 e8 a7 40 90 00 00 41 e2 31 27 3e f7 9c 84 3f 15 8e 22 3f 36 11 34 3f 80 00 00 00 00 00 01 28 00 a8 c0 00 00 00 37 00 ff ff ff 01 00 a8 c0 f8 00 1a 00 38 ff ff ff f0 80 00 00 00 00 00 00 00 00 71 2c

Send: 05 01 00 00 00 13 f0 80 00 0c ae aa (set user feedback bitmap 3)

Receive: 41 00 00 00 40 40 00 00 40 40 00 00 3f fb 22 d1 3e 48 e8 a7 40 90 00 00 41 e2 31 27 3e f7 9c 84 3f 15 8e 22 3f 36 11 34 3f 80 00 00 00 00 00 01 28 00 a8 c0 00 00 00 37 00 ff ff ff 01 00 a8 c0 f8 00 1a 00 38 ff ff ff f0 80 00 00 00 00 00 00 00 00 71 2c

Send: 05 01 00 00 00 14 00 00 00 00 83 2d (set user feedback bitmap 4)

Receive: 41 00 00 00 40 40 00 00 40 40 00 00 3f fb 22 d1 3e 48 e8 a7 40 90 00 00 41 e2 31 27 3e f7 9c 84 3f 15 8e 22 3f 36 11 34 3f 80 00 00 00 00 00 01 28 00 a8 c0 00 00 00 37 00 ff ff ff 01 00 a8 c0 f8 00 1a 00 38 ff ff ff f0 80 00 00 00 00 00 00 00 00 71 2c

Send: 05 01 00 00 00 1e 00 00 00 00 82 b5 (stop forcing feedback)

Receive: 00 00 00 03 42 c5 a8 00 42 c6 6e 6f ba d0 b2 19 3d 0d fe 4a bc c3 01 a7 3c e9 8d a2 bb 84 21 aa 37 fe 83 e4 bd a4 e0 71 3d 27 cf 78 bd a6 a8 d4 3d b4 ab b6 bb cb 61 b6 3e bc ca 40 bf 82 33 33 3e 43 4c cd bf 0b f7 0a bf 82 33 33 42 0b f7 0a 42 0b f7 0a 42 0b f7 0a 42 0b f7 0a 42 0b f7 0a 42 c5 a8 00 42 c5 a8 00 42 c5 a8 00 42 c5 a8 00 41 5f 00 00 41 5e 00 00 41 7f 00 00 41 8d 00 00 42 99 d8 00 3e 30 00 00 41 36 00 00 00 00 04 c8 00 00 04 fa 00 00 00 01 f8 00 1a 00 38 ff ff ff f0 80 00 00 00 00 00 00 00 00 0c 6f

Send: 05 01 00 00 00 0c 00 00 00 01 41 cc (set input config bitmap)

Receive: 00 00 00 03 42 c5 a8 00 42 c6 6e 6f bb 71 9b 78 3d 05 fc b5 bc 52 78 06 bc 54 96 f5 bc bb 1e 11 3c 8d cb 59 bd a5 95 fa 3d 28 07 8d bd a7 6e 5c 3d b4 ec 3f bb cc d4 b1 3e 8f 38 52 bf 50 51 ec 3e 43 4c cd be dd 57 0b bf 50 51 ec 42 0b f7 0a 42 0b f7 0a 42 0b f7 0a 42 0b f7 0a 42 0b f7 0a 42 c5 a8 00 42 c5 a8 00 42 c5 a8 00 42 c5 a8 00 41 5f 00 00 41 5e 00 00 41 7f 00 00 41 8d 80 00 42 99 d8 00 3e 30 00 00 41 36 00 00 00 00 04 c8 00 00 04 fa 00 00 00 01 f8 00 1a 00 38 ff ff ff f0 80 00 0c 00 00 00 00 00 00 cc 94

Send: 05 01 00 00 00 01 41 00 00 00 7c 34 (set maximum velocity)

Receive: 00 00 00 03 42 c5 a8 00 42 c6 6e 6f bb 23 82 e4 3c eb e3 86 bb 6f 9b 13 3b b5 7d e2 bb d5 05 8b 3b a1 6c 90 bd a5 9f b1 3d 28 45 a2 bd a7 9b e6 3d b5 02 72 bb cc d4 b1 3e 82 33 36 bf 60 98 52 3e 9c 3d 71 be b6 47 af bf 60 98 52 42 0b f7 0a 42 0b f7 0a 42 0b f7 0a 42 0b f7 0a 42 0b f7 0a 42 c5 a8 00 42 c5 a8 00 42 c5 a8 00 42 c5 a8 00 41 5f 00 00 41 5e 00 00 41 7f 00 00 41 8d 80 00 42 99 d8 00 3e 30 00 00 41 36 00 00 00 00 04 c8 00 00 04 fa 00 00 00 01 f8 00 1a 00 38 ff ff ff f0 80 00 0c 00 00 00 00 00 00 4e 25

Send: 05 01 00 00 00 02 40 40 00 00 54 70 (set maximum acceleration)

Receive: 00 00 00 03 42 c5 a8 00 42 c6 6e 6f ba 34 d0 18 3c f6 90 a3 ba 88 63 5f 3c 31 13 fb bc 35 90 9e 3c 2e 38 ea bd a5 9f b1 3d 29 22 8a bd a8 0e 7a 3d b5 6e 45 bb cc d4 b1 3e bc ca 40 bf 1c 3d 70 3f 02 33 34 be a2 c0 01 bf 1c 3d 70 42 0b f7 0a 42 0b f7 0a 42 0b f7 0a 42 0b f7 0a 42 0b f7 0a 42 c5 a8 00 42 c5 a8 00 42 c5 a8 00 42 c5 a8 00 41 5f 00 00 41 5e 00 00 41 7f 00 00 41 8d 80 00 42 99 d8 00 3e 30 00 00 41 36 00 00 00 00 04 c8 00 00 04 fa 00 00 00 01 f8 00 1a 00 38 ff ff ff f0 80 00 0c 00 00 00 00 00 00 8f 0b

Send: 05 01 00 00 00 03 40 40 00 00 94 4d (set maximum deceleration)

Receive: 00 00 00 03 42 c5 a8 00 42 c6 6e 6f 3a f1 64 36 3d 20 5f 8e bc db ce e2 3d 44 ea 80 bb 4e b3 4f 3b 46 57 62 bd a6 55 93 3d 2d 0e 97 bd a8 13 42 3d b5 71 cc bb cb 22 ab 3e f7 61 48 bf 1c 3d 70 3e c9 cf 5c be d6 d4 7b bf 1c 3d 70 42 0b f7 0a 42 0b f7 0a 42 0b f7 0a 42 0b f7 0a 42 0b f7 0a 42 c5 a8 00 42 c5 a8 00 42 c5 a8 00 42 c5 a8 00 41 5f 00 00 41 5e 00 00 41 7f 00 00 41 8d 80 00 42 99 d8 00 3e 30 00 00 41 36 00 00 00 00 04 c8 00 00 04 fa 00 00 00 01 f8 00 1a 00 38 ff ff ff f0 80 00 0c 00 00 00 00 00 00 48 cb

Send: 05 01 00 00 00 06 40 90 00 00 6d 80 (set maximum turn rate)

Receive: 00 00 00 03 42 c5 a8 00 42 c6 6e 6f 3b 2e ab 86 3d 13 b4 9c bb fa 3c ec 3c fd d8 50 ba 6b 50 cf 3a 61 cc a3 bd a6 94 3c 3d 2e f7 96 bd a8 13 42 3d b5 71 cc bb ca dd 2b 3e 82 33 36 bf 49 cf 5c 3e 9c 3d 71 bf 33 06 66 bf 49 cf 5c 42 0b f7 0a 42 0b f7 0a 42 0b f7 0a 42 0b f7 0a 42 0b f7 0a 42 c5 a8 00 42 c5 a8 00 42 c5 a8 00 42 c5 a8 00 41 5f 00 00 41 5e 00 00 41 7f 00 00 41 8d 00 00 42 99 d8 00 3e 30 00 00 41 36 00 00 00 00 04 c8 00 00 04 fa 00 00 00 01 f8 00 1a 00 38 ff ff ff f0 80 00 0c 00 00 00 00 00 00 5b 07

Send: 05 01 00 00 00 20 00 00 00 05 44 5c (set operational mode [tractor request], repeated 3 times until response indicates that mode was achieved)

Receive: 00 00 00 03 42 c5 a8 00 42 c6 6e 6f bb 56 08 7c 3c 6a 1b 88 bc 2a 3f 9a 3b 9a 2b c8 b9 0e ea d9 bd 7e a8 b8 bd a6 fc 68 3d 2f 98 8c bd a8 13 42 3d b3 51 60 bb d2 48 b4 3e 95 ba e4 bf 56 d4 7c 3e 43 4c cd bf 1c 3d 71 bf 56 d4 7c 42 0b f7 0a 42 0b f7 0a 42 0b f7 0a 42 0b f7 0a 42 0b f7 0a 42 c5 a8 00 42 c5 a8 00 42 c5 a8 00 42 c5 a8 00 41 5f 00 00 41 5e 00 00 41 7f 00 00 41 8d 00 00 42 99 d8 00 3e 30 00 00 41 37 00 00 00 00 04 c8 00 00 04 fa 00 00 00 01 f8 00 1a 00 38 ff ff ff f0 80 00 0c 00 00 00 00 00 00 88 e1

At this point, I've tried sending drive commands, which seem to cause the robot to fault immediately; and stop sending anything, which causes the robot to wait the usual variable amount of time before faulting.

Unfortunately, if the robot is plugged into my Linux desktop, when it faults it disappears from the USB line, so I can't get the fault logs. If the robot is plugged into my Windows laptop, it doesn't fault, it just powers off, so I can't get the fault logs. I'd welcome any suggestions on where to proceed from here, and I'm happy to provide any additional information, videos, or pictures. Thanks!

Ben Hardin

Craig
Posts: 58
Joined: Thu Jan 26, 2012 3:02 pm
Contact:

Re: 440 new firmware issue

Post by Craig » Tue Feb 26, 2013 3:36 pm

Ben,

Thanks for your post.

I'll try and answer your questions below but first things first. Please extract the fault log and post it here. See this link for a fault log extractor and instructions on how to use it.
http://rmp.segway.com/viewtopic.php?f=9&t=80

There is no way you could have accidentally corrupted the NVM or the memory of the RMP. A large number of operations have to be just right to load code including passing a CRC before the flash is unlocked for write. So rest easy on that front. You can load values into the NVM that will produce un-desirable behavior but they will not cause a fault.

The RMP will power up when the USB is plugged into a computer. This is a feature that is covered in the users guide (also available on the forum). If you have an early evaluation unit powering up from the USB will cause a flashing red light similar to not having the kill switch installed.

It sounds like your not getting through check start up so we will need to see that log to understand why.

/Craig
Craig Shaffer
Principal Engineer

STANLEY INNOVATION, INC
www.stanleyinnovation.com

User avatar
phussey
Posts: 79
Joined: Fri Apr 20, 2012 8:12 am
Contact:

Re: 440 new firmware issue

Post by phussey » Tue Feb 26, 2013 4:24 pm

Based on your printout your configuration is:

max_vel : 8.0
max_accel : 3.0
max_decel : 3.0
max_dtz : 1.9620000124
max_coastdown : 0.19619999826
max_yaw_rate : 4.5
max_yaw_accel : 28.2740001678
tire_diam : 0.483615994453
wheel_base : 0.584200024605
track_width : 0.711199998856
gearbox_ratio : 1.0
config_bitmap : 0x00000001
eth_ip : 192.168.0.40
eth_port : 55
eth_subnet : 255.255.255.0
eth_gateway : 192.168.0.1
UDFB1 : 0xF8001A00
UDFB2 : 0x38FFFFFF
UDFB3 : 0xF0800000
UDFB4 : 0x00000000

Unless you removed the gearboxes the default gear ratio should be 24.2667. The value of 1.0 will cause the issue you are seeing because it scales all of the feedback in the system and would cause the machine to think it is moving very fast even though it is not. Change the parameter back to 24.2667.

command should be:

[0x05, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x41, 0xc2, 0x22, 0x34, 0xf6, 0x14]
PATRICK HUSSEY
Principal Engineer

STANLEY INNOVATION, INC
www.stanleyinnovation.com

Craig
Posts: 58
Joined: Thu Jan 26, 2012 3:02 pm
Contact:

Re: 440 new firmware issue

Post by Craig » Tue Feb 26, 2013 4:35 pm

Ben,

I would like to add that we see +5V monitor faults which generally indicates that the system is not getting enough voltage from the USB port. This can occur for a variety of reasons but long USB cables are usually the culprit.

/Craig
Craig Shaffer
Principal Engineer

STANLEY INNOVATION, INC
www.stanleyinnovation.com

bch36
Posts: 12
Joined: Thu Dec 20, 2012 1:25 pm
Contact:

Re: 440 new firmware issue

Post by bch36 » Tue Feb 26, 2013 5:33 pm

Craig and Patrick, thanks for the responses. I think our problems are solved. A little post-mortem:

1. Craig, you're correct about the USB cable. For my desktop, I was using an extender cable. For the laptop, I was plugging in directly. Apparently the extender cable doesn't prevent the robot from operating once it's running, but it DOES annoy the power-follows-USB system that powers the robot on when the USB cable is connected, even when the power switch is in the off position.

2. When we first received the Segway, one of our teammates accidentally connected the old version of our OCU to the Segway with the new firmware. Our old OCU sent the SET_INPUT_CONFIG_BITMAP message with a value of 1, which the new firmware of course interpreted as the SET_TRANSMISSION_RATIO message.

3. This brings me to an issue. With the firmware modifications and more specifically the message number changes, we can find no way to dynamically tell which firmware version we're running on until it's too late. We'd like our OCU to auto-discover the firmware and use the appropriate message numbers, but at the moment we have manually set which Segway platform we expect to be connecting to. Is there any way your team can suggest that we accomplish this? I know with certainty that with a mix of old and new platforms, someone's going to run the old firmware version with a new robot and cause the problem again.

In our optimal world, the first message we'd send would be a message requesting the firmware version, and it would be absolutely consistent across every firmware version. Based on the response, we could dynamically adjust our message numbers to communicate properly. Not sure if your team has contemplated other approaches to this particular problem.

Thanks again for your help, especially with how prompt it was! It's always a pleasure working with the Segway platform and the Segway employees.

User avatar
phussey
Posts: 79
Joined: Fri Apr 20, 2012 8:12 am
Contact:

Re: 440 new firmware issue

Post by phussey » Wed Feb 27, 2013 9:55 am

The build id's for each processor are available in UDFB3 but the position in the feedback changed during the interface update to accommodate future platforms. Going forward the index of the build IDs will not change and can be used to identify the interface (if any changes are made in the future).

If you really want to test for the old interface you can try sending the force config feedback bitmaps command and checking for a response and the length of the response. Since that command ID does not exist in the old software the machine should not respond to it (I admit I have not tested this).

My official advice is to please ensure that all the machines are updated to the latest release, there are some major bug fixes from the pre-production releases. And going forward the interface for new releases will be backward compatible. Also for support purposes, staying up to date will ensure a quick response.
PATRICK HUSSEY
Principal Engineer

STANLEY INNOVATION, INC
www.stanleyinnovation.com

Post Reply

Who is online

Users browsing this forum: No registered users and 2 guests