Difference between revisions of "Reddy Update"

From IntRoLab
(CAN command format for RS-232 communication)
(CAN command format for RS-232 communication)
Line 131: Line 131:
 
* bit 6 = Boot (EEPROM=1/RAM=0)
 
* bit 6 = Boot (EEPROM=1/RAM=0)
 
|
 
|
 +
if (MSG_TYPE == REQUEST)
 +
* CMD = RAM OFFSET FOR READ/WRITE
 +
endif
 +
if (MSG_TYPE == SENSOR_HIGH_PRIORITY)
 +
* CAN_ACTUATOR_CMD_POSITIONS=0x90
 +
* CAN_ACTUATOR_CMD_CURRENTS=0x91
 +
* CAN_ACTUATOR_CMD_SETPOINTS=0x92
 +
endif
 
|
 
|
 
|
 
|

Revision as of 14:54, 28 July 2009

Schedule

Week 31, July 27 - August 1
  • Ordered new coupling for shoulder
  • Fab. + installation of head mechanism for gravity assist (previous one had interference problems with other head parts)
  • Assembly and installation of 1 motor PCB for neck
  • Assembly and installation of the speaker PCB + support
  • Final tuning of motor controllers
  • Documentation (protocol)
Week 32, August 3 - August 9
  • Final tests & tuning
Week 33, August 10 - August 15
  • Schedule a meeting for robot exchange

Arm Improvements

To have better control of the arm (and neck) motors, we did the following :

  • Change the Motor PCB to support
    • Temperature detector. A signal will be sent to the motor controller if the motor temperature is higher than 60 degrees celcius. Analog temperature value is also available.
    • Potentiometer feedback.
    • Motor power connection.
  • Design a new PCB with support to 4 motors
  • Communicate with the CAN bus already available on Reddy
  • Allow position feedback from the RS-232 interface
  • Create a tuning GUI for easier setup of the robot controllers

Motor PCB

Motor Controllers

ReddyMotorControllers.jpg

  • A new motor drive that can connect up to 4 motors have been designed.
  • A new adjustable bracket for fixing the drive to the side of the robot have been designed.
  • We installed two motor controllers (one on each side) to allow the modification of 8 motors. Motors modified are :
    • Arm-elbow (x2)
    • Arm-shoulder (x2)
    • Arm-updown (x2)
    • Neck-YES (x1)
    • Neck-NO (x1)

Cabling Improvements

ReddyArmCables.jpg

  • Cables are now better organized
  • Added connectors inside the arm to disconnect motors easily for repairs
  • Signals are color coded as follow (TODO ADD DOCUMENTATION)
    • Red
    • Green
    • Black
    • Yellow
    • Purple
    • Gray
    • White
    • Blue

Head Improvements

File:ReddyGravityCompensation.jpg


Motor controllers for head movement (YES-NO)

  • Same motor controllers were used for the neck to add overheating protection and better feedback / control
  • Internal servo potentiometers were used for position control.

Tuning the motor controller

A GUI was created to facilitate motor tuning.



RS-232 protocol enhancements

  • We added a CAN command to the RS-232 robot interface to allow direct communication with the motor controllers. The RS-232 robot interface now acts as a RS-232 to CAN bridge and bidirectional communication is now possible. This will allow feedback from the motor controllers (current, position, speed, etc.)
(RS-232 CAN COMMAND) <------------------------> (MOTOR DRIVE CAN INTERFACE)


CAN command format for RS-232 communication

RS-232 Data Format (16 bytes total)
HEADER CAN_MSG_PRI_MSB_CMD CAN_MSG_TYPE CAN_MSG_BOOT_RTR_LENGTH CAN_MSG_CMD CAN_MSG_DEST CAN_MSG_DATA
(3 bytes) (1 byte) (1 byte) (1 byte) (1 byte) (1 byte) (8 bytes)
  • header[0] = 'c'
  • header[1] = 'a'
  • header[2] = 'n'
  • We had to change the standard protocol here to address more than 256 bytes of internal memory of the motor controlers. MSB of the MSG_CMD will be stored here (3 bits max).
  • CAN_TYPE_EMERGENCY=0x01
  • CAN_TYPE_ACTUATOR_HIGH_PRIORITY=0x02
  • CAN_TYPE_SENSOR_HIGH_PRIORITY=0x04
  • CAN_TYPE_ACTUATOR_LOW_PRIORITY=0x08
  • CAN_TYPE_SENSOR_LOW_PRIORITY=0x10
  • CAN_TYPE_REQUEST_DATA=0x20
  • CAN_TYPE_USER2=0x40
  • CAN_TYPE_EVENTS=0x80
  • bit 0-3 = DATA_LENGTH (0-8)
  • bit 4 = RTR
  • bit 5 = Boot (READ=1/WRITE=0)
  • bit 6 = Boot (EEPROM=1/RAM=0)

if (MSG_TYPE == REQUEST)

  • CMD = RAM OFFSET FOR READ/WRITE

endif if (MSG_TYPE == SENSOR_HIGH_PRIORITY)

  • CAN_ACTUATOR_CMD_POSITIONS=0x90
  • CAN_ACTUATOR_CMD_CURRENTS=0x91
  • CAN_ACTUATOR_CMD_SETPOINTS=0x92

endif


Future Improvements

  • Single 12V power supply could be useful for direct connection to Pioneer robots. A 12V-->8.5V DC-DC (100W) converter is required for this operation. This item can be ordered at Vicor. 8.5V batteries would then be useless.

Additional Notes

Documents

File:MotorControllerTuningWin32.zip