机器谱
图文展示3264

图文展示3264

副标题

按位置转动
1. 功能描述

位置转动,是指给定一个位置参数,让电机运动到该位置。

按位置转动包含三种不同的模式:

——

1.1 直接位置模式

在该模式下,电机从一个位置直接转动到一个或多个指定位置。直接PID控制位置,对实时位置命令响应迅速,急起急停,但位置命令频率高时容易抖动。

1.2 滤波位置模式

在该模式下,电机从一个位置平滑地转动到一个或多个指定位置。电机的运动曲线经过滤波处理,有一个加速和减速的过程。对实时位置命令响应较快,但运动姿态平顺,位置命令频率高时表现优异。

1.3 轨迹位置模式

在该模式下,电机从一个位置平滑地转动到一个指定位置,只对最终指定位置发生响应。电机有一个均匀加速的过程和一个均匀减速的过程。无法快速响应实时位置命令,但运动非常平顺,且轨迹的运动时间非常稳定,位置命令频率低时较为常用。


3.1 实现步骤

3.1根据3D图,完成电机模组的装配,扫描二维码,可查看及下载3D文件。

3.2 按照图示,完成电路连接。

4.Python编程(Linux)

以下代码在Linux系统(Ubuntu 18.04)下,Jupyter环境中测试实现。

4.1 输入并运行以下代码,可实现直接位置模式:

1. # 初始化电机对象

2. from protobot.can_bus import Robot

3. from protobot.can_bus.nodes import MotorFactory

4. motor = Robot().add_device('motor0', MotorFactory(), node_id=0x10, reduction=-44)

5. # 电机使能

6. motor.enable()

7. # 进入直接位置模式

8. motor.position_mode()

9. # 设置位置参数

10. motor.set_pos(6.28) # 6.28代表2π位置,您可以修改为其他参数以体验本功能

4.2 输入并运行以下代码,可实现滤波位置模式:

1.# 初始化电机对象(Linux)

2.from protobot.can_bus import Robot

3.from protobot.can_bus.nodes import MotorFactory

4.motor = Robot().add_device('motor0', MotorFactory(), node_id=0x10, reduction=-44)

5.# 电机使能

6.motor.enable()

7.# 进入滤波位置模式

8.motor.position_filter_mode(1) # 括号中的参数代表“滤波带宽 / 控制频率(Hz)”,数值越高,频率越高

9.# 设置位置参数

10.motor.set_pos(6.28) # 6.28代表2π位置,您可以修改为其他参数以体验本功能

4.3 输入并运行以下代码,可实现轨迹位置模式: 1.# 初始化电机对象(Linux) 2.from protobot.can_bus import Robot 3.from protobot.can_bus.nodes import MotorFactory 4.motor = Robot().add_device('motor0', MotorFactory(), node_id=0x10, reduction=-44) 5.# 电机使能 6.motor.enable() 7.# 进入轨迹位置模式 8.motor.position_traj_mode(2,0.5,0.5) # 括号中的参数代表“(最高速度,加速度,减速度)” 9.# 设置位置参数 10.motor.set_pos(6.28) # 6.28代表2π位置,您可以修改为其他参数以体验本功能

5.Python编程(Windows) 在Windows10系统下,Jupyter环境中运行代码时,只需要将“初始化电机对象”部分的代码替换为以下内容即可: 1.# 初始化电机对象 2.from protobot.can_bus import Robot 3.from protobot.can_bus.nodes import MotorFactory 4.robot = Robot(bustype='pcan', channel='PCAN_USBBUS1', bitrate=1000000) 5.motor = robot.add_device('motor0', MotorFactory(), 0x10, reduction=-44) 其余代码相同。


4.4 分别用三种模式,依次走到A、B、C三个位置: 1.# 初始化电机对象(Linux) 2.from protobot.can_bus import Robot 3.from protobot.can_bus.nodes import MotorFactory 4.motor = Robot().add_device('motor0', MotorFactory(), node_id=0x10, reduction=-44) 5.# 电机使能 6.motor.enable() 7.# 进入直接位置模式 8.motor.position_mode() 9.# 设置位置参数 10.motor.set_pos(6.28) 11.robot.delay(2) #该函数代表为上一行的动作流出多长时间,括号里的2代表2秒, 12.# 进入滤波位置模式 13.motor.position_filter_mode(1) 14.# 设置位置参数 15.motor.set_pos(0) 16.robot.delay(3) #由于滤波位置模式有加减速过程,所以留给的时间稍微长一些 17.# 进入轨迹位置模式 18.motor.position_traj_mode(2,0.5,0.5) 19.# 设置位置参数 20.motor.set_pos(-6.28) 21.robot.delay(3)#由于轨迹位置模式有加减速过程,所以留给的时间稍微长一些

2.准备工作

序号   名称                                           备注

 1        Robodyno pro电机模组          
 2        CAN数据线                          

 3        Robodyno pro通信坞          
 4        12V电源适配器                    
 5        TypeC数据线                          
 6        系统准备  
                                 查看教程  

 7        Jupyter准备                         查看教程

文章作者:机器谱
© 2022 机器时代(北京)科技有限公司  版权所有
机器谱——机器人共享方案网站
学习  开发  设计  应用