To control EMYS, communication should be established according to the protocol of Robotis Dynamixel servos. All motors are controlled via binary data. In order to unify the different components of the robot’s control system, reading the status of touch sensors is the same as reading from the drives.
The master PC controller and the robot communicate with each other by sending and receiving data packets. There are two kinds of packets: Instruction Packet, which the PC sends to the robot, and Status Packet, which is sent in response. Each device has an ID number which enables addressing each device when several are connected to one bus. By passing IDs to Instruction and Status Packets, Master PC controller can control each motor separately. If multiple drives have the same ID, packet collision will occur. Avoid this by giving unique IDs to each motor.
The robot communicates using asynchronous serial communication with the following parameters
Communication hardware layer utilizes EIA-485, a half duplex UART serial communication protocol where both TxD and RxD cannot be used at the same time. This method is generally used when many devices need to be connected to a single bus. Since more than one device is connected to the same bus, all the other devices need to be in receive mode while one device is transmitting. The master PC controller that controls the actuators sets the communication direction to receive mode, and only when it is transmitting an Instruction Packet, it changes the direction to transmit mode.
All the servos mounted in the head have Status Return Level set to 1. It means that the servo returns data only after receiving READ DATA command.
For more details on controlling EMYS' neck and disc motors read ROBOTIS Dynamixel documentation:
Remember, that joint q1 consists of two servomotors (master and slave) working synchronously. The slave servo also has a unique ID number but no commands should be sent to it during normal operation. Slave drive is running in Slave and Reverse mode (see 10 (0x0A) register).
WARNING: It is highly recommended NOT to change the range of the servos movement.
RC servos and custom linear drives are used to move EMYS' eyes. They are controlled by a dedicated on-board motion controller (for more details on the controller go to Hardware/Controllers section). The joints responsible for eye rotation, protrusion and eyelid movements comply with the Dynamixel protocol but do not fully support it's features (no temperature sensing, torque control, voltage measurement, etc,). For all these joints the on-board motion controller translates Dynamixel protocol commands to the individual analog servos control signals or linear position.
WARNING: It is highly recommended NOT to change the range of the servos movement and position offsets.
Touch sensors have been installed in five points on the EMYS head. In order to unify the different components of the head’s control system, reading the status of individual sensors is the same as reading from the drives. Each touch sensor has its own unique ID number. The available parameters for each sensor are: analog value corresponding to touch intensity, threshold values and a digital value resulting from the classification between the threshold values of the hysteresis. Data are stored in registers, which are read using the same functions as for the servomotors.
|q1||neck pitch - slave (rotation)||100|
|q1||neck pitch - master (rotation)||101|
|q2||head yaw (rotation)||102|
|q3||head pitch (rotation)||103|
|q4||lower disc (rotation)||104|
|q5||upper disc (rotation)||105|
|q6||left eyelid (rotation)||106|
|q7||left eyebrow (rotation)||107|
|q8||left eye (translation)||108|
|q9||right eyelid (rotation)||109|
|q10||right eyebrow (rotation)||110|
|q11||right eye (translation)||111|