跳转至

机器人跳舞

OriginMan内置动作

大家通过前面的诸多案例已经体验了OriginMan的运动天赋,其实OriginMan内置了几十种动作,大家都可以快速使用起来。

动作列表与实现方法

动作名称 中文描述
stand 立正
go_forward 前进
back_fast 后退
left_move_fast 左移
right_move_fast 右移
push_ups 俯卧撑
sit_ups 仰卧起坐
turn_left 左转
turn_right 右转
wave 挥手
bow 鞠躬
squat 下蹲
chest 庆祝
left_shot_fast 左脚踢
right_shot_fast 右脚踢
wing_chun 永春
left_uppercut 左勾拳
right_uppercut 右勾拳
left_kick 左侧踢
right_kick 右侧踢
stand_up_front 前跌倒起立
stand_up_back 后跌倒起立
twist 扭腰
stand_slow 立正
stepping 原地踏步
jugong 鞠躬
weightlifting 举重

既然有这么多种动作,那么该如何让OriginMan表演给我们看呢?

不妨运行以下指令快速来体验:

python3 /userdata/dev_ws/src/originman/originman_pydemo/action_bow.py

运行后,大家看到OriginMan给我们表演了一个鞠躬的动作,那它是如何实现以及如何切换为其他动作呢?

#!/usr/bin/env python3
# encoding:utf-8
import time
import hiwonder.ActionGroupControl

class RobotActionController:
    def __init__(self):
        pass

    def run_action_group(self, action_group_name, wait_time=5):
        """
        运行指定的动作组
        :param action_group_name: 动作组文件名(不包含后缀.dfca)
        :param wait_time: 执行完动作组后的等待时间(秒),默认5秒
        """
        try:
            hiwonder.ActionGroupControl.runActionGroup(action_group_name)
            # 根据动作组的预期执行时间等待
            print(f"执行动作组: {action_group_name}")
            time.sleep(wait_time)  # 等待动作组完成
        except Exception as e:
            print(f"执行动作组 {action_group_name} 时出错: {e}")

if __name__ == "__main__":
    controller = RobotActionController()

    # 先执行 'stand' 动作组
    controller.run_action_group("stand")

    # 然后执行 'bow' 动作组
    controller.run_action_group("bow")

不妨看到这段代码,大家只需要调用controller.run_action_group方法即可,通过替换括号内的动作,大家就可以体验诸多OriginMan的动作啦!

和机器人一起跳舞吧!

不难发现,这些好像只是让机器人做一些单一的动作,那有没有可能把动作连贯起来给大家表演一个舞蹈呢?

接下来请运行如下指令:

python3 /userdata/dev_ws/src/originman/originman_pydemo/action_dance.py

此时大家看到OriginMan已经开始舞动起来啦,快来和OriginMan一起玩耍吧!

Attention

OriginMan的动作组内置于/userdata/dev_ws/src/originman/driver/ActionGroups,其中16-24都是舞蹈动作,大家快快体验吧!

图片1