一、准备工作

Windows电脑端安装拳皇游戏

(因为是按键模拟,理论上只要是按键控制的游戏都可以玩,本文用MAME模拟器作例子,下载MAME:MAMEdev.org | Home of The MAME Project)

1.png

Windows可直接从该目录下载,下载完成后需先解压,解压完成即可看到启动程序。

2.png
3.png

现在,我们已经搞定了模拟器,还需要有游戏的roms才能运行,大家可以自行在网上找各种资源(相关资源点击文末链接即可获取)。

4.png

下载之后,将下载的zip文件直接放到刚才解压出来文件夹下面的roms下面。接下来,在刚才解压出来的文件夹目录下,在地址栏输入cmd,回车。

5.png
6.png

在弹出的命令行里,输入“mame -keyboardprovider win32 sfiii3nr1”,即可启动游戏。

查看操控按键的信息,可以按下<tab>按键,弹出设置界面,选择(双击或者回车)Input Settings,Input Assignments(this system),就可以看到所有的按键介绍,例如kbd up就是键盘的向上按键。修改某个按键,双击或回车,然后输入新的按键即可。

7.png
8.png

这里有一点需要注意,游戏默认的按键和代码中给的按键有部分不同,需要提前修改。可按照以下对应关系修改按键。

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控制),所以只能用通过模拟按键的形式来控制游戏。脚本如下,启动命令为:

python3 your_python_file --ip your_ip
#代码可阅读全文获取

旭日X3派运行人体检测代码

由于街头霸王游戏动作太过于激烈,所以对人体骨骼检测的实时性要求也很高,目前市面上能做到又准确、又实时、价格也便宜的,就地平线的旭日X3派,不多说,直接开搞。

首先,先确保你有一块旭日X3派,以及摄像头(最好是usb的,线比较长一点),本文也将借助地平线机器人开发平台上的手势识别算法。

机器人开发平台的手势识别算法,目前只支持mipi输入,不能使用usb相机作为输入。可以通过修改ros的config文件实现这个,打开/opt/tros/share/hand_gesture_detection/launch/hobot_hand_gesture_detection.launch.py。mipi原来的节点(如下图):

9.png

两个node节点替换为usb相机的节点即可:

10.png

代码如下:

# 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相机作为手势检测的输入了。

11.png

其次,安装了地平线机器人开发平台的软件包(apt install tros),能够跑起来。

最后,请将这个python文件下载到你的旭日X3派上。其中,第11行的ACTION2KEY 一定要和上文安装拳皇游戏时游戏控制保持一致,否则发送的按键不被识别。

相关资源点击文末即可获取

二、使用操作

具体操作步骤主要分为三步:

①在window电脑端,运行前文下载的python文件(ip查询:在cmd命令行输入ipconfig,找到你的ip地址):

python3 your_python_file --ip your_ip

②启动游戏(启动之前,一定要先设置输入法为英文模式),游戏启动命令如下:

mame -keyboardprovider win32 sfiii3nr1

③在旭日X3派上,先启动手势检测的示例,然后在另外一个终端运行人体检测的python脚本(注意:ip地址是你Windows电脑的ip地址,与第一步地址一样);

python3 your_python_file --ip your_remote_computer_ip

三、手势说明

12.jfif
14.jfif
13.jfif

本文转自地平线开发者社区
原作者:lucky
原链接:相关资源及完整展示点击此处一键直达