Control robot movement

1. Experimental goals

Control the forward and backward movement of Transbot-SE, turn left and right, and set the relevant parameters of the car.

2. Experiment preparation

The position of the red box in the picture below is the interface of motor MOTOR A on the left and motor B on the right. The motor interface has an anti-reverse connection function and can be connected to the motor using the Transbot SE motor cable.

The interface line sequence corresponding to the left and right motors is as shown in the figure below:

image-20210903114433917image-20210903115207402

Transbot_Lib library function needed to control the motor of Transbot SE:

Parameter explanation: Car motion control, this function will read the pulse data of the encoder to calculate the speed of the car movement. Velocity represents the speed of the car, the unit is m/s, the positive number is forward, the negative number is backward, the angular control represents the rotation speed of the car, the unit is rad/s, the positive number is left rotation, and the negative number is right rotation.

velocity=[-0.45, 0.45]

angular=[-2.00, 2.00]

Return value: None.

Parameter explanation: PID parameter control will affect the change of the car's movement speed controlled by the set_car_motion function. By default, no adjustment is required.

kp ki kd = [0, 10.00], decimals can be entered.

forever=True is permanently saved, =False is temporarily used.

Permanent storage is to write the data into the Flash of the microcontroller chip. The data will not be lost after restarting, and the writing time is long, so a delay time is added to avoid the problem of packet loss caused by the microcontroller. The temporary effect responds quickly and is effective once, and the data is no longer retained after restarting the single chip.

Return value: None.

Parameter explanation: Set the minimum speed limit value (minimum value) of the car movement. It is not set by default.

For example: when the line speed limit value is set to 0.1, the next time the set_car_motion(0.05, 0) function is called, the microcontroller determines that 0.05 is less than 0.1, and automatically sets the input 0.05 to 0.1. If it is set_car_motion(-0.05, 0) , then -0.05 will be set to -0.1. The angular velocity limit value also has the same function.

line_limit=[0, 0.20], angular_limit=[0, 1.00]

forever=True is permanently saved, =False is temporarily used.

Return value: None.

Parameter explanation: Set the gyroscope to assist in adjusting the direction of the car's movement. After the setting is turned on, the set_car_motion function takes effect when the angular velocity is set to 0. When the car moves forward, due to the external force causing its direction of movement to deviate from the starting point, the gyroscope will adjust the car's forward direction to the original forward direction by adjusting the left and right speed of the motor. This function is only an auxiliary function and cannot guarantee that the car will move completely in a straight line. The same principle applies to retreating.

Due to the vibration of the car and the drift of the gyroscope itself, after turning on the gyroscope to adjust the direction, it cannot keep moving for a long time, otherwise the gyroscope will interfere with the movement of the car, causing one wheel to be faster and the other to be slower. Please turn this function off when testing for a long time.

enable=True turns on, =False turns off.

forever=True is permanently saved, =False is temporarily used.

Return value: None.

Parameter explanation: The microcontroller automatically returns the data status bit. The default is on. If set to off, it will affect the data reading function.

enable=True, the underlying expansion board will send data every 40 milliseconds. If enable=False, it will not be sent.

forever=True is permanently saved, =False is temporarily used.

Return value: None.

Parameter explanation: Clear the cache data automatically sent by the microcontroller.

Return value: None.

Parameter explanation: Reset the data saved in the car's flash and restore to factory default values. This function can also be achieved by pressing and holding the K2 key on the expansion board for about 10 seconds.

Return value: None.

The following functions all return data, and the data needs to be read after create_receive_threading() is started normally:

Parameter explanation: Obtain three-axis accelerometer data

Return value: a_x, a_y, a_z

Parameter explanation: Obtain gyroscope three-axis data

Return value: g_x, g_y, g_z

Parameter explanation: Get the car speed, return linear speed v, angular speed a

Return value: v, a

Parameter explanation: Get the motion PID parameters of the car, and read error returns [-1, -1, -1]

Return value: kp, ki, kd

Parameter explanation: Get the status of gyroscope-assisted car movement. Returning True means turning it on, returning False means turning it off. If the reading fails, it returns -1.

Return value: Gyroscope adjustment status

3. Experimental results

Note: If you modify part of the configuration in this course and set it to be permanently saved, it will cause abnormal situations in the future (for example, set the automatic return data status enable=False and permanently save it to True, resulting in the inability to read the data normally). Please call the reset_flash_value() function, or press and hold the K2 key on the expansion board for about 10 seconds to restore the factory configuration.

3.1jetson motherboard/Raspberry Pi 4B

Please view the course video.

3.2 Raspberry Pi 5

Enter docker

Note: If you have a terminal that automatically starts docker, you can directly enter the temp directory in docker to view it. There is no need to manually start docker

Start docker manually

Run jupyter lab program

 

Taking the current IP address 192.168.2.118 as an example, open the browser of Raspberry Pi 5 or enter in the browser of your computer

Enter the jupyter lab login interface after pressing Enter, enter the password yahboom, and then click login

Enter the Transbot/Samples directory

Double-click the code you want to run

Restart the kernel and clear all output before running

Click on the first code block, then click the run button to start running one by one

 

4. Program source code

Turn on the power of the Transbot SE robot, and open Jetson Nano or the browser of the remote computer to enter the Jupyter lab editor.

Reference code path: Transbot/Samples/6.car_motion.ipynb