📅  最后修改于: 2023-12-03 15:11:22.660000             🧑  作者: Mango
相对电机移动 PROS(PROS-relative motor movement)是一个用于编程 PROS 下机器人电机的库。与传统的电机控制方式不同,PROS-relative motor movement 通过控制电机相对于当前位置的移动来控制电机的运动。此库可以使机器人编程更加灵活、准确。
curl https://pros.cs.purdue.edu/download/installer.sh | sudo sh
project.properties
文件中添加以下行:deps=relative-motor
.vscode/c_cpp_properties.json
文件中添加以下行:"includePath": [
"${workspaceFolder}/**",
"${workspaceFolder}/src/**",
"${workspaceFolder}/.pros/include/**",
"${workspaceFolder}/.pros/relative-motor/include/**"
]
在使用PROS-relative motor movement之前,需要将其初始化。可以使用以下代码片段在程序的开头进行初始化:
#include "relativeMotor.h"
void initialize() {
relativeMotorInit();
}
PROS-relative motor movement 的核心函数为 relativeMotorSet()
。 它的用法如下:
relativeMotorSet(motor_port, relative_distance, max_speed);
其中:
motor_port
是电机连接的端口号relative_distance
是电机移动的相对距离,单位为度。max_speed
是电机运动的最大速度,单位为度/秒。以下是一个使用 relativeMotorSet()
函数的示例代码:
#include "main.h"
#include "relativeMotor.h"
void initialize() {
relativeMotorInit();
}
void disabled() {}
void competition_initialize() {}
void autonomous() {
relativeMotorSet(1, 360, 60); // 控制 1 号电机旋转 360 度,速度为 60 度/秒。
}
void opcontrol() {}
void test() {}
如果要实现非阻塞(即多任务)运动,可以使用 relativeMotorTaskCreate()
函数:
relativeMotorTaskCreate(motor_port, relative_distance, max_speed, callback, callback_parameter);
其中:
motor_port
是电机连接的端口号relative_distance
是电机移动的相对距离,单位为度。max_speed
是电机运动的最大速度,单位为度/秒。callback
是运动结束后的回调函数指针callback_parameter
是回调函数的参数以下是一个使用 relativeMotorTaskCreate()
函数的示例代码:
#include "main.h"
#include "relativeMotor.h"
void initialize() {
relativeMotorInit();
}
void disabled() {}
void competition_initialize() {}
void my_callback(void *parameter) {
// 运动结束后的代码
}
void autonomous() {
relativeMotorTaskCreate(1, 360, 60, my_callback, NULL); // 控制 1 号电机旋转 360 度,速度为 60 度/秒。
}
void opcontrol() {}
void test() {}
PROS-relative motor movement 集成了 PID 控制器,以提高控制电机的精度。可以使用以下函数进行 PID 控制:
relativeMotorSetWithPID(motor_port, relative_distance, max_speed, pid_Kp, pid_Ki, pid_Kd);
其中:
motor_port
是电机连接的端口号relative_distance
是电机移动的相对距离,单位为度。max_speed
是电机运动的最大速度,单位为度/秒。pid_Kp
, pid_Ki
, pid_Kd
分别是PID控制器的比例、积分、微分系数。以下是一个使用 relativeMotorSetWithPID()
函数的示例代码:
#include "main.h"
#include "relativeMotor.h"
void initialize() {
relativeMotorInit();
}
void disabled() {}
void competition_initialize() {}
void autonomous() {
relativeMotorSetWithPID(1, 360, 60, 0.1, 0.01, 0.1); // 控制 1 号电机旋转 360 度,速度为 60 度/秒,并使用PID控制器。
}
void opcontrol() {}
void test() {}
PROS-relative motor movement 是一个用于编程 PROS 下机器人电机的库,通过控制电机相对于当前位置的移动来控制电机的运动。它通过非阻塞运动、PID 控制等特点提高了机器人编程的灵活性和准确性。