Embedded Component Steering Actuator
From DGC Wiki
Categories: Components | Veh/Emb Components
Alice Steering Actuation
Description | Owners | Specs | Interface | Add'l Info |
Component Description
Alice, a Ford E-350 Econoline is to be modified to operate autonomously. The steering will be operated by means of a motor connected by a chain to the steering shaft inside the passenger compartment, beneath the dash. The steering wheel remains connected to the shaft, and the motor and gearbox are backdriveable, so the vehicle remains driveable by a human. Version 1 of the system uses a motor from Parker-Hannefin's Compumotor Division and is connected the steering column by mean of a 2:1 chain reduction. The controller is also manufactured by Parker. Version 2 of the system uses a motor provided by the Magmotor Division of SatCon. This is connected to the vehicle by means of a 3:1 planetary gearbox from CGI inc. The controller for this version is provided by Roboteq.
Component Owners
- Former (Parker Steering, summer 2003) - William Coulter
- Former (Parker Steering, summer 2004) - Jeremy Gillula
- Current (2005) - Jeff Lamb
Component Specifications
It should be noted here at the start of the specifications that there are two entirely separate steering devices that have been or will be installed in Alice. Version 1 or Parker Steering is currently installed as a temporary measure to allow testing until such time that the permanent device has been recieved and tested. Version 2 or Roboteq Steering will eventually be installed to replace the Parker Steering and will be the permanent unit that will exist during the 2005 Grand Challenge Race.
Version 1: Parker Steering
This steering system uses a motor from Parker Hannefin's Compumotor division model #BE344LJ (---Manual---) and the Gemini GV6 controller (---Manual---). This device is a rotary brushless DC servo motor. The controller runs on 120 volt AC, and the motor runs on 340 volt DC supplied by the controller. The controller is connected to the motor via 2 mil-501c spec cables, one for control and power, the other for position feedback from the encoder. Interface to the controller is gained via RS232. The motor is mounted in the interior of the vehicle beneath the steering column. On the end of the motor output shaft is a 10 tooth 1/2" Pitch #40 sprocket. This is connected via a length of #40 1/2" pitch chain to a 22 tooth sprocket on the shaft of the steering column.
When power is applied and the controlled enabled, the motor servos and locks the steering shaft in place until a command is sent to the controller. This can be over-riden by a switch on the dash panel of the vehicle: flip it to enable and the controller is in charge, flip it to disable and motor will freewheel, allowing the operator to control the steering manually.
Position is measure by means of a 8000 count per revolution encoder on the motor shaft. The steering allows 3.75 turns from one end of travel to the other. With a 2.2:1 reduction from the motor to the shaft, the position limits should be approximately +/-30000 counts when the system is properly calibrated
Failure Recovery Procedure
During the Summer W1 field test, a failure was experienced with the Parker Steering motor. When Skynet4 reached some critical temperature, it began to send garbage to the steering controller. Eventually, the steering controller shut down and reset, meaning all the settings native to the device were cleared (but the firmware was still stable). This failure mode was experienced again during the Summer Week4 field test. In response to these failures, Adrive and the steering drivers have been modified such that all required settings are loaded upon starting Adrive. In addition, should the settings need to be loaded manually, they can be loaded in one of two ways:
- Automated reload
- Needed: Computer running Windows with an RS-232 serial port
- Install MotionPlanner4p3p1.exe from ~/trunk/drivers/alice/MotionPlanner4p3p1.exe
- Connect the serial cable from the motor controller to the computer
- Run MotionPlanner
- Select "GV6 Servo Drive/Controller" on the "Product" tab of the "Default Communications Settings" window
- Select the appropriate COM port on the "Port" tab of the "Default Communications Settings" window and click "OK"
- Click the blue word "Gemini" near the top of the window
- Click "Express Setup" in the "GV6 Setup Wizard - Step 1 of 4" Window and click "Next"
- On the "GV6 Satup Wizard - Step 2 of 4" page choose the following options from the drop down menus:
- Series: BE Series
- Frame: 34
- Part: BE344LJ
- On the "GV6 Setup Wizard - Step 3 of 4" page click "Disable both limits" and click "Next" and then click "Finish" on the following page.
- On the "Communications" drop down menu, click "Download Editor"
- Click "OK" on the "Download Options" window
- Click "OK" on the "Download Editor to GV6 Drive" window
- Click "YES" on the next "Motion Planner" dialog box to appear
- Disconnect communication cable from laptop and reconnect to race computer
- Manual reload (parker_steer_config_params)
- find parker_steer_config_params.txt located in ~/trunk/drivers/alice. Included in this file are all the configuration parameters that need to be loaded to have the parker steering motor properly reconfigured
- Open a command line on the Linux computer the steering motor is connected to
- Run "cat </dev/ttyS0 & cat >/dev/ttyS0"
- manually enter each command listed in the config file
- press "Ctrl+c" to kill your "cat" session
- verify that all "cat" processes on ttyS0 are killed before restarting adrive
Version 2: Roboteq Steering
This steering system uses a motor from the MagMotor Division of SatCon Power Systems , a planetary gearbox from CGI Inc. and a controller from Roboteq, Inc.
- Motor Specs:
- Spec Sheet: Paragon Planetary Gearhead
- Model: B34-B-300-FE
- B34: Motor Model line
- -B: Winding B
- -300: Describes motor's length
- -FE: Nema 34 standard face and encoder
- Max Torque = 1025 oz-in
- Max Current = 130 amps
- Voltage Constant = 15.1 volts/kRPM
- No load speed at 12 volts: 800 RPM
- Output Shaft Diameter = 1/2"
- Output Shaft Length = 1"
- Encoder: 1000 counts per revolution
- Gearbox Specs:
- Name: Paragon Planetary Gearbox
- Spec Sheet: MagMotor B34 Series Motors
- Model: 034PNX0030-XX-34N16
- 034: Nema 34 standard frame size
- PNX: Paragon Planetary Gearbox
- 0030: 3:1 gear reduction
- XX: unknown, unimportant
- 34: Nema 34 standard face mount
- N16: unknown
- Controller Specs:
- Controller Manual: AX2850HE Manual
- Encoder Module Manual: AX2850HE Encoder Module Manual
- Maximum Current: 140 amps
- Operating Voltage: 10-40 volts
- Control Method: RS232 serial or PWM
The motor and gearbox assembly will be mounted beneath the steering column and connected to the steering shaft by means of a chain and sprocket. While not yet certain, this ratio will be 1:1 or perhaps less depending on what maximum angular rate we desire from the steering system. The motor will interface to the controller by means of a 2-wire 12 volt buss.
Position feedback will be provided by means of a string extension potentiometer that will be connected to the steering shaft. The potentiometer will be fully extended when the wheels are all the way left, and fully retracted when the wheels are all the way right. This pot will wrap around a pulley connected to the shaft. The electronics of the pot will be connected to the Roboteq controller's analog position inputs and will allow the computing system to know the steering angle of the vehicle exactly at any time. The controller will return a value of 0 for a left turn and a value of 255 for a right turn.
Interface Specifications
Message Specs
- To command a motion of the wheels
- steer_heading(double)
- Range: [-1,1] where (-1) turns the wheels full left, and (1) hard right
- steer_setposition(int)
- Range (Parker Steering): [-75000,80000] where -75000 is hard right and 80000 hard left
- Range (Roboteq Steering): [-127, 128] where -127 is hard left and 128 is hard right
- steer_zero()
- moves wheels to zero (center) position
- steer_heading(double)
- To recieve position information
- double steer_getheading()
- returns a double [-1,1], same format as steer_heading(double)
- int steer_getposition()
- Parker Steering: range normally [-75000,80000] when calibrated properly
- Roboteq Steering: range [-127, 128]
- double steer_getheading()
Additional Information
- Two things of interest:
- The RoboteQ manual Image:Ax2550man15-031504.pdf
- and supplimental Encoder additional manual Image:Encodermodule.pdf