Welcome to RDK X3 Robot repository
8. Control robot movement
8. Control robot movement
8. Control robot movement8.1. Experimental objectives8.2. Experimental Preparation8.3. Program source code8.4. Experimental effect
8.1. Experimental objectives
Control the robot forward and backward, left and right, and set the relevant parameters of the car.
8.2. Experimental Preparation
MOTOR 1 is connected to the left front MOTOR of the car, MOTOR 2 is connected to the left rear MOTOR of the car, motor 3 is connected to the right front motor of the car, and MOTOR 4 is connected to the right rear motor of the car.
SunriseRobotLib library functions needed to control the robot motor:
set_car_motion(v_x, v_y, v_z)Parameter Description: car motion control, this function will read the pulse data of the encoder, so as to calculate the speed of the car movement. v_x represents the longitudinal speed of the car, the unit is m/s, positive number forward, negative backward; v_y control represents the transverse speed of the car, in m/s, positive numbers are left, negative numbers are right; v_z represents the rotation speed of the car in rad/s, positive numbers are left spin, negative numbers are right spin.
v_x=[-1.0, 1.0], v_y=[-1.0, 1.0], v_z=[-5.0, 5.0]
Returned value: None.
xxxxxxxxxxset_pid_param(kp, ki, kd, forever=False)Parameter description: PID parameter control, will affect the set_car_motion function control car movement speed changes. It is not adjustable by default.
kp ki kd = [0, 10.00], decimals can be entered.
forever=True for permanence, =False For temporary purposes. Permanent saving means that data is written to the Flash of the MCU chip. After the restart, the data is not lost, and the writing time is long. Therefore, the delay time is added to avoid packet loss of the MCU. The temporary action is quick and effective once, and the data is no longer maintained after restarting the single chip.
Returned value: None.
xxxxxxxxxxset_auto_report_state(enable, forever=False)Parameter Description: The single chip microcomputer automatically returns the data status bit, the default is on, if set off will affect the data reading function.
If enable=True, the underlying expansion module sends data every 40 milliseconds. If enable=False, no data is sent.
forever=True for permanence, =False For temporary purposes. Returned value: None.
xxxxxxxxxxclear_auto_report_data()Parameter Description: Clear the cache data automatically sent by the MCU.
Returned value: None.
xxxxxxxxxxreset_flash_value()Parameter Description: Reset the data saved by the car flash and restore the factory default value. You can also perform this function by holding down the K2 button on the expansion board for about 10 seconds.
Returned value: None.
The following functions return data and can only be read if create_receive_threading() starts normally:
xxxxxxxxxxget_accelerometer_data()Parameter interpretation: Obtain accelerometer triaxial data
Return value: a_x, a_y, a_z
xxxxxxxxxxget_gyroscope_data()Parameter interpretation: Obtain gyroscope triaxial data
Return value: g_x, g_y, g_z
xxxxxxxxxxget_motion_data()Parameter Description: Get car speed, return val_vx, val_vy, val_vz
Return value: val_vx, val_vy, val_vz
xxxxxxxxxxget_motion_pid()Parameter description: Get the motion PID parameter of the car, read error return [-1, -1, -1]
Return value: kp, ki, kd
8.3. Program source code
Turn on the robot power switch and open the browser of the robot system or remote computer to enter the Jupyter lab editor.
Reference code path: / root/sunriseRobot _basic/Samples / 1/5 _car_motion. Ipynb
8.4. Experimental effect
When running to control the motor movement, three sliding bars will be generated, and changing the value of the sliding bar can change the speed of the robot. Before modifying the value, please lift the car to avoid running. V_x controls the speed of forward and backward movement, V_y controls the speed of left and right translation, and V_z controls the speed of left and right rotation.
The stopping cell can also be run to stop the car.

For other content, please refer to the comments in the program.
Note: If you modify part of the configuration in this course and set the permanent save, the subsequent abnormal situation will occur (for example, set the automatic return data status enable=False, and permanently save the data to True, resulting in the failure to read the data normally). Call the reset_flash_value() function, or hold down the KEY1 key on the expansion board for about 10 seconds to restore factory Settings, restart the car and set the car type to 6.