在Ubuntu 16.04系统中,将Logitech G920方向盘连接到Carla服务器

注:

  1. 电脑是win10 + Ubuntu 16.04双系统
  2. 我们用Logitech g29方向盘的程序来模拟G920方向盘,所以接下来运行出现g29等字样,是没有问题的

1、jstest-gtk

1)描述:

jstest-gtk是一个基于Gtk +的简单操纵杆测试和配置工具。它为您提供了一个附加的操纵杆列表,一种显示按下按钮和轴的方法,一种重新映射轴和按钮的方法以及一种校准操纵杆的方法。即使你的操纵杆工作得很好,你也可以尝试一下,因为校准可以让你摆脱许多操纵杆使用的超大默认死区,这在一些游戏中是一个明显的问题。

2)用法:

jstest-gtk主要是一个图形界面,用于检查你的操纵杆和打击垫是否工作正常。您可以在每个轴上找到精确信息,您可以选择重新校准它并且可以改变映射。

如果你运行没有参数的程序,你会得到一个显示所有操纵杆的窗口系统中的设备(可以有多个)。当你双击其中一个,您将获得一个更新的窗口,其中包含有关其轴和按钮的详细信息。详细窗口中有两个按钮,称为“映射”和“校准”,即允许您重新指定设备。

如果您以设备作为参数运行程序(例如/ dev / input / js0),您将直接获取该设备的详细窗口,而无需获取整个列表系统中的操纵杆。

轴的校准包含在一个简单的窗口中,您可以在其中设置值直接进入操作系统配置,而不对它们进行任何更改。它们分为范围和死区(或中心)。在他们两个中你必须设置一个最小和最大。您还有一个用于反转轴的复选框。

在您修改它们的同一瞬间更改和应用值,没有必要用于单击任何位置或执行任何其他操作以应用更改。

3)安装:

在终端输入:

$ sudo apt-get update

$ sudo apt-get install jstest-gtk

 

2、问题描述与解决:

注:若是没有遇到此类问题,或是jstest-gtk可以直接识别方向盘,可以忽略此条内容

1)描述:

在Ubuntu 16.04系统中,接入G920方向盘之后,打开jstest-gtk,结果显示不出来方向盘的信息。Joystick Preferences是jstest-gtk的显示面板,这时面板什么都没显示,说明出问题了。

图一

2)猜想:

AUbuntu系统是否支持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 <module>

    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

 

 

 

3、运行方向盘程序

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 <module>

    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系统一两遍,解决问题。

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值