Robomaster-S1 Python API 整合版
-
-
- 系统
- 灯效
- 底盘
-
- 1、设置(PWM_all)输出百分比为(7.5)
- 2、(开启)底盘速度杆量叠加
- 3、设置底盘以(0)度跟随云台
- 4、设置底盘平移速率(0.5)米/秒
- 5、设置底盘旋转速率(30)度/秒
- 6、控制麦轮以转速 左前轮(100)右前轮(100)左后轮(100)右后轮(100)转/分转动
- 7、控制底盘向(0)度平移
- 8、控制底盘向(0)度平移(1)秒
- 9、控制底盘向(0)度平移(1)米
- 10、控制底盘以(0.5)米/秒向(0)度平移
- 11、控制底盘(向右)旋转
- 12、控制底盘(向右)旋转(1)秒
- 13、控制底盘(向右)旋转(0)度
- 14、控制机器人向底盘前方(0)度平移且(向右)旋转
- 15、控制底盘以(0.5)米/秒沿X轴平移 (0.5)米/秒沿Y轴平移 (30)度/秒绕 Z 轴旋转
- 16、控制底盘停止运动
- 17、底盘(航向轴)姿态角
- 18、底盘当前位置(X 坐标)
- 19、当底盘撞击到障碍物
- 20、底盘撞击到障碍物
- 云台
- 发射器
- 智能
- 装甲板
- 移动设备
- 多媒体
- 数据对象
-
系统
1、开始运行
说明
(1)含义:当机器人启动时首先执行的程序
(2)类型:内置模块
注意:
如果模块没有放置在“开始运行”内部(事件触发、函数模块除外),将不会执行。例如在如下例程中,RoboMaster S1 不会拍照。
Python API
Function: start()
Type: Main function
2、设置整机运动(云台跟随底盘模式)
说明
(1)含义:设置整机运动的 3 种模式:
-
云台跟随底盘模式:云台始终跟随底盘绕航向轴旋转
-
底盘跟随云台模式:底盘始终跟随云台绕航向轴旋转
-
自由模式:云台与底盘运动分离,互不影响
(2)类型:设置类
注意:
1)RoboMaster S1 的默认运动模式为“云台跟随底盘模式”,若在程序中未另行设置,则默认选择的是“云台跟随底盘模式”。
2)在“云台跟随底盘模式”下,如果底盘不旋转,云台无法单独左右旋转。
②一起摇摆
在“底盘跟随云台模式”下,只对云台进行设置:
云台绕航向轴来回旋转,观察底盘是否同样左右摇摆,并最终跟随云台回到初始位置。
注意:
在“底盘跟随云台模式”下,如果云台不旋转,底盘无法单独左右旋转。
③反向旋转
在“自由模式”下,控制云台和底盘各自向相反方向旋转。观察它们是否会相互干扰。
注意:
在“自由模式”下,“设置底盘以(x)度跟随云台”和“设置云台以(x)度跟随底盘”这两个模块不生效。
Python API
Function: robot.set_mode(mode_enum)
Parameters:
-
mode_enum(enum)
-
- rm_define.robot_mode_gimbal_follow
-
- rm_define.robot_mode_chassis_follow
-
- rm_define.robot_mode_free
3、计时器(开始)计时
说明
(1)含义:控制计时器开始、暂停或结束计时
(2)类型:执行类
注意:
Python API
Function: tools.timer_ctrl(behavior_enum)
Parameters:
-
behavior_enum(enum):
-
- rm_define.timer_start
-
- rm_define.timer_stop
-
- rm_define.timer_reset
4、控制相机放大(1)倍
说明
(1)含义:放大相机倍镜,让机器人的视觉识别距离更远,局部图像更清晰
(2)类型:执行类
Python API
Function: media_ctrl.zoom_value_update(value)
Parameters:
- value (int): [1, 4]
5、计时器时间
说明
(1)含义:获取计时器从开始到当前时刻的用时,返回秒数
(2)类型:信息类(变量型数据)
Python API
Function: tools.timer_current()
Return value:
- time_stamp(float)
6、程序运行时间
说明
(1)含义:获取程序运行用时,返回秒数
(2)类型:信息类(变量型数据)
Python API
Function: tools.run_time_of_program()
Return value:
- time (float)
7、当前的(年)
说明
(1)含义:获取当前的时间信息,如年/月/日/时/分/秒等。
(2)类型:信息类(变量型数据)
Python API
Function: tools.get_localtime(time_enum)
Parameters:
-
time_enum (enum):
-
- rm_define.localtime_year
-
- rm_define.localtime_month
-
- rm_define.localtime_day
-
- rm_define.localtime_hour
-
- rm_define.localtime_minute
-
- rm_define.localtime_second
Return value
- time (int)
8、当前的时间戳
说明
(1)含义:机器人启动时刻至今的时间间隔,返回累计的秒数
(2)类型:信息类(变量型数据)
当运行用时超过1小时(runTime_hour>1),要注意休息。
注意:
1)机器人的启动时刻是指上电时刻。
2)如果机器人在断电后重启,会重新累计时间戳。
Python API
Function: tools.get_unixtime()
Return value:
- time (float)
灯效
1、设置(所有)LED 闪烁(2)Hz
说明
(1)含义:设置指定位置LED灯的闪烁频率,2Hz 即每秒闪烁 2 次
(2)类型:设置类
Python API
Function: led_ctrl.set_flash(armor_enum, frequency)
Parameters:
-
armor_enum(enum):
-
- rm_define.armor_all
-
- rm_define.armor_bottom_front
-
- rm_define.armor_bottom_back
-
- rm_define.armor_bottom_left
-
- rm_define.armor_bottom_right
-
- rm_define.armor_top_left
-
- rm_define.armor_top_right
-
frequency(int): [1, 10]
2、底盘(所有)LED 颜色(青色)灯效(常亮)
说明
(1)含义:控制底盘指定位置LED灯的颜色和灯效:
-
常亮,LED 灯保持点亮状态
-
熄灭,LED 灯关闭
-
呼吸,LED 灯明暗变化(由暗变亮再变暗)
-
闪烁,LED 灯以一定频率闪烁
(2)类型:执行类
Python API
Function: led_ctrl.set_bottom_led(armor_enum, r, g, b, led_effect_enum)
Parameters:
-
armor_enum(enum):
-
- rm_define.armor_bottom_all
-
- rm_define.armor_bottom_front
-
- rm_define.armor_bottom_back
-
- rm_define.armor_bottom_left
-
- rm_define.armor_bottom_right
-
r(int): [0, 255]
-
g(int): [0, 255]
-
b(int): [0, 255]
-
led_effect_enum(enum):
-
- rm_define.effect_always_on
-
- rm_define.effect_always_off
-
- rm_define.effect_breath
-
- rm_define.effect_flash
3、云台(所有)LED 颜色(青色)灯效(常亮)
说明
(1)含义:设置云台指定位置 LED 灯的颜色和灯效:
-
常亮,LED 灯保持点亮状态
-
熄灭,LED 灯关闭
-
呼吸,LED 灯明暗变化(由暗变亮再变暗)
-
闪烁,LED 灯以一定频率闪烁
-
跑马灯,呈圆形排布的 8 颗 LED 灯顺时针滚动点亮
(2)类型:执行类
Python API
Function: led_ctrl.set_top_led(armor_enum, r, g, b, led_effect_enum)
Parameters:
-
armor_enum(enum):
-
- rm_define.armor_top_all
-
- rm_define.armor_top_left
-
- rm_define.armor_top_right
-
r(int): [0, 255]
-
g(int): [0, 255]
-
b(int): [0, 255]
-
led_effect_enum(enum):
-
- rm_define.effect_always_on
-
- rm_define.effect_always_off
-
- rm_define.effect_breath
-
- rm_define.effect_flash
-
- rm_define.effect_marquee
4、云台(所有)LED 序号(1)灯效(常亮)
说明
(1)含义:设置云台指定序号 LED 灯的亮灭,序号 1~8 分别对应云台两侧可独立控制的 8 颗 LED 灯
(2)类型:执行类
注意:LED灯支持多选。
Python API
Function: led_ctrl.set_signle_led(armor_enum, led_index, led_effect_enum)
Parameters:
-
armor_enum(enum):
-
- rm_define.armor_top_all
-
- rm_define.armor_top_left
-
- rm_define.armor_top_right
-
index(int/list): [1, 8]
-
led_effect_enum(enum):
-
- rm_define.effect_always_on
-
- rm_define.effect_always_off
5、关闭(所有)LED
说明
(1)含义:关闭指定位置的LED灯
(2)类型:执行类
Python API
Function: led_ctrl.turn_off(armor_enum)
Parameters:
-
armor_enum(enum)
-
- rm_define.armor_all
-
- rm_define.armor_bottom_front
-
- rm_define.armor_bottom_back
-
- rm_define.armor_bottom_left
-
- rm_define.armor_bottom_right
-
- rm_define.armor_top_left
-
- rm_define.armor_top_right
6、(开启)弹道灯
说明
(1)含义:控制发射器弹道灯的亮灭
(2)类型:执行类
Python API
Function: led_ctrl.gun_on()
led_ctrl.gun_off()
底盘
1、设置(PWM_all)输出百分比为(7.5)
说明
(1)含义:设置 PWM 输出百分比,数值越大,在某一周期内高电平的持续时间越长。该 PWM 基础频率为50Hz。
(2)类型:设置类
注意:
1)PWM 口位于底盘控制模块上,拿开底盘后侧的透明盖板即可看到。
从上至下共6个 PWM 口。
2)PWM 又称脉冲宽度调制,控制的是某一周期内高电平的持续时间,现广泛应用于LED 灯、舵机等的控制上。
3)上电后,PWM 接口默认输出7.5%占空比的信号,每次程序运行结束后,也会恢复默认的输出信号。
4)对灯条来说,PWM 输出百分比范围为0%~100%,0意味着灯最暗,100意味着灯最亮。
5)对舵机来说,PWM 输出百分比范围为2.5% ~ 12.5%。因为大部分舵机的控制脉冲频率为50 Hz,控制周期为20 ms,可调节角度-90 °~ 90°对应的高电平脉宽为0.5 ms ~ 2.5 ms, 因此舵机占空比的控制范围便是0.5/20~2.5/20,即2.5% ~ 12.5%。
玩家们可以根据自己想要控制的旋转角度设置舵机 PWM 的输出百分比。
Python API
Function: chassis_ctrl.set_pwm_value(pwm_port_enum, output_percent)
Parameters:
-
pwm_port_enum(enum)
-
- rm_define.pwm_all
-
- rm_define.pwm1
-
- rm_define.pwm2
-
- rm_define.pwm3
-
- rm_define.pwm4
-
- rm_define.pwm5
-
- rm_define.pwm6
-
output_percent(int): [0, 100]
2、(开启)底盘速度杆量叠加
说明
(1)含义:开启或关闭底盘速度杆量叠加
(2)类型:设置类
注意:
1)如果不添加“开启底盘速度杆量叠加”模块,在运行程序时我们无法手控底盘;而添加此模块后,我们就可以对运行中的机器人进行移动控制,并且控制量会叠加。
2)杆量是指摇杆幅值的推动大小。杆量范围为 -1 ~ 1。
如图,在 FPV 界面中将虚拟摇杆推满,杆量便为 1。
3)速度杆量叠加是将底盘在程序中的速度与摇杆速度相加。
如图,在程序中设置底盘以 0.5m/s 向前平移,同时我们将杆量推满,
开启底盘速度杆量叠加后,机器人就会将两种控制数据“叠加”,
最终机器人将以(0.5+1*当前最大向前速度)m/s的速率向前平移。
Python API
Function: chassis_ctrl.enable_stick_overlay()
chassis_ctrl.disable_stick_overlay()
3、设置底盘以(0)度跟随云台
说明
(1)含义:在“底盘跟随云台模式”下,当云台左右旋转时,底盘始终与云台保持指定夹角
(2)类型:设置类
注意:
1)在“云台跟随底盘模式”或“自由模式”下,此模块不生效。
2)0度意味着没有夹角,底盘和云台绕航向轴的运动方向始终保持一致。
Python API
Function: chassis_ctrl. set_follow_gimbal_offset(degree)
Parameters:
- degree(int): [-180, 180]°
4、设置底盘平移速率(0.5)米/秒
说明
(1)含义:设置底盘平移速率,默认平移速率是 0.5 米/秒。数值越大,移动越快。
(2)类型:设置类
注意:
在为底盘设定较大的平移速率前,请确保底盘运动方向上没有障碍物。
Python API
Function: chassis_ctrl.set_trans_speed(speed)
Parameters:
- speed(float): [0, 3.5] m/s
5、设置底盘旋转速率(30)度/秒
说明
(1)含义:设置底盘旋转速率,默认旋转速率是 30 度/秒。数值越大,旋转越快。
(2)类型:设置类
Python API
Function: chassis_ctrl.set_rotate_speed(speed)
Parameters:
- speed(int): [0, 600] °/s
6、控制麦轮以转速 左前轮(100)右前轮(100)左后轮(100)右后轮(100)转/分转动
说明
(1)含义:独立控制四个麦轮的转速,符合麦轮转动方向和速度的有效组合才会生效。
(2)类型:执行类
注意:
1)默认的麦轮组合“左前轮(100)右前轮(100)左后轮(100)右后轮 (100)转/分”是控制机器人向前平移。
2)如何判定组合是否有效?
请用手推着机器人作期望动作,俯视观察每个麦轮的转动方向——向前转动为正值,向后转动为负值。
例:
当机器人向右平移时,左前轮和右后轮向前转动,所以转速值为正值;右前轮和左后轮向后转动,所以转速值为负值。
当机器人向左后平移时,左前轮和右后轮向后转动,所以转速值为负值;右前轮和左后轮不动,所以转速值为 0。
当机器人向左旋转时,右前轮和右后轮向前转动,所以转速值为正值;左前轮和左后轮向后转动,所以转速值为负值。
Python API
Function: chassis_ctrl.set_wheel_speed(lf_speed, rf_speed, lr_speed, rr_speed)
Parameters:
-
lf_speed(int): [-1000, 1000] rpm
-
rf_speed(int): [-1000, 1000] rpm
-
lr_speed(int): [-1000, 1000] rpm
-
rr_speed(int): [-1000, 1000] rpm
7、控制底盘向(0)度平移
说明
(1)含义