Odrive常用控制参数

Odrive常用控制参数,第1张

[RW] odrv0.axis0.controller.input_pos

类型为 [float],单位为 [turn],输入的电机目标位置,如:设置为 0.1 即表示电机轴转动到 36°(360° * 0.1 = 36°)。

[RW] odrv0.axis0.controller.input_vel

类型为 [float],单位为 [turn/s],输入的电机目标转速,如:设置为 1 即表示电机将以 1转/秒的速度旋转。

[RW] odrv0.axis0.controller.input_torque

类型为 [float],单位为 [Nm],输入的电机输出的力矩大小。

[RO] odrv0.axis0.controller.pos_setpoint

类型为 [float],单位为 [turn],设定的电机目标位置。

[RO] odrv0.axis0.controller.vel_setpoint

类型为 [float],单位为 [turn/s],设定的电机目标转速。

[RO] odrv0.axis0.controller.torque_setpoint

类型为 [float],单位为 [Nm],设定的电机输出的力矩大小。

[RO] odrv0.axis0.controller.trajectory_done

类型为 [bool],轨迹模式下是否已运行到设定位置。

[RW] odrv0.axis0.controller.vel_integrator_torque

类型为 [float],单位为 [Nm],维持当前角度或位置需要输出的扭矩大小。

[OP] odrv0.axis0.controller.move_incremental(displacement: float, from_input_pos: bool)

命令电机转动一定角度,displacement 想要转动多少转,from_input_pos 是否以 input_pos 作为参考,如果设置为 False 则相对于 pos_setpoint。

要相对于当前实际位置设置目标位置,请设置参数from_goal_point = False。

要设置相对于先前目标位置的目标位置,请设置参数from_goal_point = True。

如果你想改变某个位的状态而不影响其他的,那用BSRR或BRR就很容易了。直接 *** 作ODR需要“读- *** 作-写”的过程,速度反而变慢了。

比如说让PA1、PA3、PA7清零而不影响其他位的状态,那就是:

GPIOA->BRR=PA1|PA3|PA7

你要用ODR来 *** 作的话,那就变成这样了:

GPIOA->ODR&=~(PA1|PA3|PA7)

虽然C的语句都只有一个,但你看汇编代码,就发现使用BRR比ODR快的多。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11305930.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存