Welcome to RDK X5 Board repository
6.Control the movement of the robot
8. Control the movement of the robot
8. Control the movement of the robot 8.1. Experimental objectives 8.2. Experiment preparation 8.3. Experimental effect 8.4. Program source code
8.1. Experimental objectives
Control the forward and backward on the Rosmaster, left and right, and set the relevant parameters of the car.
8.2. Experiment preparation
The motor interface has an anti-reverse connection function, which can be connected to the motor using Rosmaster's motor cable.
The interface line sequence corresponding to the motor is shown in the following figure:

Rosmaster_Lib library functions required to control the Rosmaster motor:
set_car_motion ( v_x , v_y , v_z )
Parameter explanation: trolley motion control, this function will read the pulse data of the encoder to calculate the speed of the trolley motion. There may be differences according to different trolleys. Here is an example of a Mecanum wheel trolley: v_x represents the longitudinal speed of the trolley, in m/s, positive forward, negative backward; v_y control represents the lateral speed of the trolley, in m/s , positive numbers are left, negative numbers are right; v_z represents the rotation speed of the car, the unit is rad/s, positive numbers are left rotation, negative numbers are right rotation.
v_x=[-1.0, 1.0], v_y=[-1.0, 1.0], v_z=[-5.0, 5.0]
Return value: None.
xxxxxxxxxxset_pid_param ( kp , ki , kd , forever = False )
Parameter explanation: PID parameter control will affect the change of the movement speed of the car controlled by the set_car_motion function. By default it can be left unadjusted.
kp ki kd = [0, 10.00], decimals can be entered.
forever=True save forever, =False temporary effect.
Permanent storage is to write the data into the Flash of the MCU chip, the data will not be lost after restarting, and the writing time is long, so the delay time is added to avoid the problem of packet loss caused by the MCU. Temporary action has fast response and is effective once, and the data is no longer maintained after restarting the single chip.
Return value: None.
xxxxxxxxxxset_auto_report_state ( enable , forever = False )
Parameter explanation: The MCU automatically returns the data status bit, which is enabled by default. If it is set to be disabled, it will affect the function of reading data.
enable=True, the underlying expansion board will send data every 40 milliseconds. enable=False, do not send.
forever=True save forever, =False temporary effect.
Return value: None.
xxxxxxxxxxclear_auto_report_data ()
Parameter explanation: Clear the cached data automatically sent by the microcontroller.
Return value: None.
xxxxxxxxxxreset_flash_value ()
Parameter explanation: reset the data saved in the car's flash and restore the factory default value. This function can also be achieved by long pressing the K2 key on the expansion board for about 10 seconds.
Return value: None.
The following functions all return data, which can only be read when create_receive_threading() is started normally:
xxxxxxxxxxget_accelerometer_data ()
Parameter Explanation: Get the three-axis data of the accelerometer
Return statement: a_x, a_y, a_z
xxxxxxxxxxget_gyroscope_data ()
Parameter explanation: Get the three-axis data of the gyroscope
Return value: g_x, g_y, g_z
xxxxxxxxxxget_motion_data ()
Parameter explanation: Get the speed of the car, return val_vx, val_vy, val_vz
Return value: val_vx, val_vy, val_vz
xxxxxxxxxxget_motion_pid ()
Parameter explanation: Get the motion PID parameters of the car, and return [-1, -1, -1] if the error is read.
Return value: kp, ki, kd
8.3. Experimental effect
Check out the course accompanying video.
Note: If you modify a part of the configuration in this course and set it to be permanently saved, it will cause an abnormal situation later (for example, set the automatic return data status enable=False, and permanently save it as True, so that the data cannot be read normally). Please call the reset_flash_value() function, or press and hold the KEY1 key on the expansion board for about 10 seconds to restore the factory configuration.
8.4. Program source code
Power on the Rosmaster robot, and open the browser of the Jetson Nano or remote computer to enter the Jupyter lab editor.
Reference code path: Rosmaster/Samples/8.car_motion.ipynb