注:
1)描述:
jstest-gtk是一个基于Gtk +的简单操纵杆测试和配置工具。它为您提供了一个附加的操纵杆列表,一种显示按下按钮和轴的方法,一种重新映射轴和按钮的方法以及一种校准操纵杆的方法。即使你的操纵杆工作得很好,你也可以尝试一下,因为校准可以让你摆脱许多操纵杆使用的超大默认死区,这在一些游戏中是一个明显的问题。
2)用法:
jstest-gtk主要是一个图形界面,用于检查你的操纵杆和打击垫是否工作正常。您可以在每个轴上找到精确信息,您可以选择重新校准它并且可以改变映射。
如果你运行没有参数的程序,你会得到一个显示所有操纵杆的窗口系统中的设备(可以有多个)。当你双击其中一个,您将获得一个更新的窗口,其中包含有关其轴和按钮的详细信息。详细窗口中有两个按钮,称为“映射”和“校准”,即允许您重新指定设备。
如果您以设备作为参数运行程序(例如/ dev / input / js0),您将直接获取该设备的详细窗口,而无需获取整个列表系统中的操纵杆。
轴的校准包含在一个简单的窗口中,您可以在其中设置值直接进入操作系统配置,而不对它们进行任何更改。它们分为范围和死区(或中心)。在他们两个中你必须设置一个最小和最大。您还有一个用于反转轴的复选框。
在您修改它们的同一瞬间更改和应用值,没有必要用于单击任何位置或执行任何其他操作以应用更改。
3)安装:
在终端输入:
$ sudo apt-get update
$ sudo apt-get install jstest-gtk
注:若是没有遇到此类问题,或是jstest-gtk可以直接识别方向盘,可以忽略此条内容
1)描述:
在Ubuntu 16.04系统中,接入G920方向盘之后,打开jstest-gtk,结果显示不出来方向盘的信息。Joystick Preferences是jstest-gtk的显示面板,这时面板什么都没显示,说明出问题了。
图一
2)猜想:
A.Ubuntu系统是否支持Logitech G920 方向盘呢?
做法1:在终端输入lsusb,列出接入电脑端口的所有硬件设备,输出的信息有一行是:
ID 046D:c261 Logitech,Inc
这说明G920方向盘是接入到电脑端口了。
做法2:在终端输入dmesg(Linux的dmesg命令,显示Linux内核的环形缓冲区信息,可以从中获取诸如系统架构,CPU,挂载的硬件,RAM等多个运行级别的大量的系统信息。笼统地说,显示Linux系统设备启动项。)
对于Logitech G920的显示信息如下:
[ 784.855156] usb 1-2: new full-speed USB device number 5 using xhci_hcd
[ 785.004781] usb 1-2: New USB device found, idVendor=046d, idProduct=c261
[ 785.004787] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 785.004792] usb 1-2: Product: G920 Driving Force Racing Wheel for Xbox One
[ 785.004796] usb 1-2: Manufacturer: Logitech
[ 785.004800] usb 1-2: SerialNumber: 0000b450139a7734
以上两个做法,结果都说明G920方向盘是接入到系统的,但是jstest-gtk就是识别不出来。
B.可不可以线不用jstest-gtk测试方向盘,直接运行程序呢?
做法:服务器电脑Carla系统运行起来, 我们在终端输入:
$ cd Carla_Python_Client
$ ./manual_control_steeringwheel.py --host <服务器电脑地址>
显示的信息;
Welcome to CARLA manual control with steering wheel Logitech G29.
To drive start by preshing the brake pedal.
Change your wheel_config.ini according to your steering wheel.
To find out the values of your steering wheel use jstest-gtk in Ubuntu.
WARNING: Version mismatch detected: You are trying to connect to a simulator that might be incompatible with this API
WARNING: Client API version = 0.9.4-84-g889b998-dirty
WARNING: Simulator API version = 0.9.4-118-g3c18dee-dirty
Traceback (most recent call last):
File "./manual_control_steeringwheel.py", line 859, in
main()
File "./manual_control_steeringwheel.py", line 851, in main
game_loop(args)
File "./manual_control_steeringwheel.py", line 781, in game_loop
controller = DualControl(world, args.autopilot)
File "./manual_control_steeringwheel.py", line 225, in __init__
self._joystick = pygame.joystick.Joystick(0)
pygame.error: Invalid joystick device number
最后一行,pygame.error: Invalid joystick device number,说明操纵杆设备号无效,这说明程序也识别不到方向盘。
3)解决方案:
A.网上搜索,有些人说只是把方向盘从电脑上拔掉,再插上,反复多试几次,jstest-gtk就可以识别方向盘了。但是我这样试了很多次都无果。
B.这时我想到了Windows,因为G920 方向盘接入Windows系统时,需要下载对应的驱动,也就是Logitech游戏软件,才得以让方向盘在电脑上正常使用。
重启电脑,进入Windows系统,打开之前下载好的Logitech游戏软件,因为下载了这个软件,进行一些识别与设置,方向盘才可以在Windows系统里正常使用。软件在Logitech官网上有,下载方向盘对应的版本即可。
图二
图一显示的是软件主界面,踏板和方向盘。
我点开方向盘,继续摸索,也从网上查资料,谨慎设置,改变参数或者属性,其实设置之后可以恢复默认设置的,不用担心改了之后回不来默认。
图三
图三显示的是打开方向盘之后的详细信息,鼠标移到哪个操作按钮上,对应按钮会凸出亮起图三就是鼠标移动到方向盘,然后方向盘亮起。双击亮起的方向盘按钮,如图四:
图四
图四是我改的是灵敏度和方向盘移动范围,启用力回馈游戏中的中心弹力和中心弹力10%是默认的。其他的选项根据自己需要来更改或是默认,然后我在BeamNG.drive.v0.8.0.1游戏里测试方向盘。
其他的没有说明可设置的了,重启电脑,进入Ubuntu系统。喜出望外,jstest-gtk识别出来方向盘了。如图五:
图五
图六
图五中双击识别的方向盘,显示Mapping和Calibration,分别点击他们,就可以来调校方向盘。
注:比较有意思的是,在jstest-gtk识别出方向盘后,在终端输入lsusb,结果输出为:
ID 046D:c262 Logitech,Inc
1)问题:
服务器电脑运行Carla。
在终端输入:
$ cd Carla_Python_Client
$ ./manual_control_steeringwheel.py --host <服务器地址>
运行结果出错,错误信息为:
Welcome to CARLA manual control with steering wheel Logitech G29.
To drive start by preshing the brake pedal.
Change your wheel_config.ini according to your steering wheel.
To find out the values of your steering wheel use jstest-gtk in Ubuntu.
WARNING: Version mismatch detected: You are trying to connect to a simulator that might be incompatible with this API
WARNING: Client API version = 0.9.4-84-g889b998-dirty
WARNING: Simulator API version = 0.9.5-1-g4d1230e-dirty
Traceback (most recent call last):
File "./manual_control_steeringwheel.py", line 863, in
main()
File "./manual_control_steeringwheel.py", line 855, in main
game_loop(args)
File "./manual_control_steeringwheel.py", line 790, in game_loop
world.tick(clock)
File "./manual_control_steeringwheel.py", line 180, in tick
self.hud.tick(self, clock)
File "./manual_control_steeringwheel.py", line 426, in tick
'Map: % 20s' % world.world.map_name,
AttributeError: 'World' object has no attribute 'map_name'
这是因为:
map_name was removed from world, use world.get_map().name
同时,也需要根据测试的方向盘来设置wheel_config.ini的参数。
2)解决方案:
Ctrl+Alt+t 打开新的终端
在终端输入:
$ cd Carla_Python_Client
$ gedit manual_control_steeringwheel.py
$ gedit wheel_config.ini
图七是我根据jstest-gtk测试的来的参数,其中reverse和handbrake是默认的,steering,throttle和brake是分别对应于jstest-gtk的Axis 0,Axis 1和Axis 2.。
图七
在manual_control_steeringwheel.py第424行,将world.world.map_name改为world.world.get_map().name
当前终端再输入:
$ ./manual_control_steeringwheel.py --host <服务器地址>
成功,如图七,此时可以用方向盘控制车子了。
图八
此时控制车子的面板左边,显示的是当前客户端、服务器的fps,以及油门,刹车,方向盘,倒挡,手刹的各项信息,我们需要根据其显示的限度来调整自己的方向盘驾驶车辆。
注:补充我这些天发现的一点问题。
当把方向盘从电脑上拔下来,
1、三天以上未连接到电脑
2、连接到另外一台电脑,但是这台电脑没有经过前面的操作,读不出来方向盘
这时候,再将方向盘插回到原先的电脑,Ubuntu系统读不出来方向盘了。
解决方法:
重启到电脑到Windows系统下,打开Logitech 游戏软件,进行参数修改,然后再改回来,刷新一下。再重启系统到Ubuntu,这下就可以识别方向盘了。但是有时候,在Windows下通过Logitech游戏软件设置的方向盘旋转角度,一次重启后方向盘还是会恢复到默认的900度,虽然游戏软件显示的仍然是我设置的450度,重新启动Windows和Ubuntu系统一两遍,解决问题。