基于旭日X3派与MAME模拟器实现体感格斗游戏教程
本教程将手把手指导您借助地平线旭日X3派的人体检测能力,结合Windows电脑上的MAME模拟器,通过手势控制拳皇等格斗游戏。内容涵盖硬件准备、软件安装、代码配置及实际操作步骤,即使零基础用户也能轻松完成。
一、准备工作
Windows电脑端安装拳皇游戏
由于本方案基于按键模拟,理论上任何由按键控制的游戏均可适配。本文以MAME模拟器为例进行说明。
首先下载MAME模拟器:MAMEdev.org | Home of The MAME Project。Windows用户可直接从该目录下载。下载完成后需先解压,解压后即可看到启动程序。

现在我们已经准备好了模拟器,还需要游戏ROM才能运行。您可以自行在网上搜索相关资源(相关资源可点击文末链接获取)。
下载后,将ZIP文件直接放入刚才解压的文件夹下的 roms 目录中。接着,在解压出来的文件夹目录下,在地址栏输入 cmd 并回车。
在弹出的命令行窗口中,输入以下命令启动游戏:
mame -keyboardprovider win32 sfiii3nr1
查看与修改操控按键
启动游戏后,按下键盘上的任意按键,弹出设置界面。选择(双击或回车)Input Settings → Input Assignments(this system),即可查看所有按键介绍。例如 kbd up 表示键盘的向上按键。要修改某个按键,双击或回车该选项,然后输入新的按键即可。
重要提示:游戏默认按键与代码中预设的按键有部分不同,需要提前修改。请按照以下对应关系设置按键:
ACTION2KEY = {
'COIN_P1': '5',
'COIN_P2': '6',
'P1_START': '1',
'P2_START': '2',
'P1_JPUNCH': 'L-CTRL',
'P2_JPUNCH': 'A',
'P1_RIGHT': 'RIGHT',
'P2_RIGHT': 'G',
'P1_LEFT': 'L',
'P2_LEFT': 'D',
'P1_DOWN': 'DOWN',
'P2_DOWN': 'F',
'P1_UP': 'UP',
'P2_UP': 'R',
'P1_SKICK': 'L-SHIFT',
'P2_SKICK': 'W',
}
Windows电脑端启动信号接收程序
由于Windows版MAME无法直接通过脚本控制(Ubuntu可使用mametoolkit),这里采用模拟按键的方式控制游戏。在Windows电脑上运行以下Python脚本(代码可阅读全文获取):
python3 your_python_file --ip your_ip
其中 your_ip 为Windows电脑的IP地址(查询方法:在cmd中输入 ipconfig 找到IPv4地址)。
旭日X3派运行人体检测代码
拳皇游戏动作激烈,对实时人体骨骼检测要求很高。目前相对准确、实时、价格适中的方案是使用地平线旭日X3派。本文借助地平线机器人开发平台上的手势识别算法。
注意:机器人开发平台的手势识别算法默认只支持MIPI摄像头输入,不能使用USB相机。可以通过修改ROS的配置文件实现USB相机输入。
打开文件:
/opt/tros/share/hand_gesture_detection/launch/hobot_hand_gesture_detection.launch.py
将原来的MIPI节点替换为USB相机节点(如下所示):
# usb cam图片发布pkg
Node(
package='hobot_usb_cam',
executable='hobot_usb_cam',
name='hobot_usb_cam',
parameters=[
{"frame_id": "default_usb_cam"},
{"image_height": 480},
{"image_width": 640},
{"zero_copy": False},
{"video_device": "/dev/video8"}
],
arguments=['--ros-args', '--log-level', 'error']
),
# nv12图片解码&发布pkg
Node(
package='hobot_codec',
executable='hobot_codec_republish',
output='screen',
parameters=[
{"channel": 1},
{"in_mode": "ros"},
{"in_format": "jpeg"},
{"out_mode": "shared_mem"},
{"out_format": "nv12"},
{"sub_topic": "/image"},
{"pub_topic": "/hbmem_img"}
],
arguments=['--ros-args', '--log-level', 'error']
),
另外,还需要将websocket的监听节点从 /image_jpeg 改为 /image,即可使用USB相机作为手势检测的输入。
安装必要软件包:
apt install tros
安装完成后确保能正常运行地平线机器人开发平台。
下载Python脚本并配置按键映射:
将本文提供的Python文件下载到您的旭日X3派上。注意文件中第11行的 ACTION2KEY 字典必须与之前Windows电脑上拳皇游戏设置的控制按键保持一致,否则发送的按键将不被识别。
相关资源可点击文末链接获取。
二、使用操作
具体操作分为以下三步:
- 步骤1:在Windows电脑端运行信号接收程序
打开命令行,输入以下命令(将your_ip替换为Windows电脑的IP地址):python3 your_python_file --ip your_ip - 步骤2:启动拳皇游戏
重要:启动游戏前,务必先将Windows输入法切换为英文模式,否则按键可能无效。mame -keyboardprovider win32 sfiii3nr1 - 步骤3:在旭日X3派上运行人体检测脚本
首先启动手势检测示例(确保摄像头正常工作),然后在另一个终端运行人体检测Python脚本:python3 your_python_file --ip your_remote_computer_ip其中
your_remote_computer_ip就是Windows电脑的IP地址,与步骤1中的IP相同。
三、手势说明
本教程使用的手势与对应游戏指令如下(以旭日X3派手势识别算法识别的常见手势为例):
- 拳头(握拳):对应拳击(PUNCH)。
- 手掌(五指张开):对应踢击(KICK)。
- 向左挥手:对应向左移动。
- 向右挥手:对应向右移动。
- 向上挥手:对应跳跃。
- 向下挥手:对应蹲下。
提示:实际手势映射关系可在Python脚本中自行调整,只需保证与MAME中的按键设置一致即可。
本文转自地平线开发者社区
原作者:lucky
