Robomaster-S1 Python API 整合

本文详细介绍了 RoboMaster S1 的 Python API 使用,涵盖系统设置、灯效控制、底盘运动、云台操作、发射器管理、智能识别、装甲板反应、移动设备联动以及多媒体操作等多个方面,提供了丰富的示例代码,帮助开发者全面掌握 S1 的编程控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Robomaster-S1 Python API 整合版

系统

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)含义

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值