logitech G29 Carla

电脑配置:Ubuntu20.04

ros2 galactic

Carla:0.9.12

由于Carla+G29要适配Linux系统,罗技的官网没有Linux的驱动,所以需要自己鼓捣;

可以看到罗技的G29由方向盘和油门刹车离合组成,需要将离合上的线接到方向盘上,注意,方向盘有一个电源线需要注意连接,电源线连接好,USB接口连接到计算机G29就开始旋转自检(之前就是这个坑,上机以后其他的按键和油门,刹车有反应,就是方向盘不动,你可以查看一下是不是线松了)。

查看工具:jstest-gtk

sudo apt-get install jstest-gtk #安装这个小工具

jstest-gtk                      #启动小工具

运行以后发现一个命名为Joystick Preferences的小窗口,发现已经识别到了罗技的设备、Device:/dev   /input/js0 >>> 点击Properties进入:

我的油门对应着Axis2,踩油门就有数值变化;刹车对应着Axis3,方向盘对应的Axis0;(Axis0没数据看看有没有给方向盘上电,上电会转,还有一排灯亮起来)

固定问题

看完视频已后才知道想要固定住G29需要先把上面两个圆形的东西给拧开,然后用力朝松的方向拧开,越拧底下的卡扣越向下,然后把两个帽子给掰出来,然后就可以卡在桌子上极品飞车了;

Carla这一端的话做了两个测试验证

./CarlaUE4.sh

Carla/PythonAPI/example

./manual_control_steeringwheel.py --host <服务器地址>

这里如果报错的话,需要改一下manual_control_steeringwheel.py里面的代码

ERROR:

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.init的参数

cd  Carla_python_Client

gedit manual_control_steeringwheel.py

gedit wheel_config.init

这样就可以在Carla中飙车了,但是有一个问题:方向盘没有阻力,容易开飘掉,下一步给G29加force-feedback(力反馈)

解决办法:GitHub上有一个小日子过得不错的程序员做了轮子,那就用一下吧,GitHub - kuriatsu/ros-g29-force-feedback: ros package for logicool g29 steering force feedback control

支持的版本贴到下面了

ROS version

g29

g923

ROS1

--

--

Kinetic

tested

no

Melodic

tested

no

ROS2

--

--

Dashing

no

no

Foxy

tested

no

Galactic

tested

no

#看看你的电脑的内核支持力反馈不,内核版本调整成自己的

cat /boot/config-5.3.0-46-generic | grep CONFIG_LOGIWHEELS_FF

CONFIG_LOGIWHEELS_FF=y

install

1.create ros2_ws

mkdir ~p ros2_ws/src

cd /ros2_ws

colcon build

2.download and build package

cd /ros2_ws/src

git clone https://github.com/kuriatsu/ros-g29-force-feedback.git

cd ../

colcon build --symlink-install

适配:

1.配置你的驱动名字

cat /proc/bus/input/devices

看看带有Logitch G29 Driving Force Racing Wheel 的event是哪一个

2.编辑 /config/g29.yaml/device_name event X

3运行节点

source ros2_ws/install/setup.bash

ros2 run ros_g29_force_feedback g29_force_feedback --ros-args --params-file ros2_ws/src/ros_g29_force_feedback/config/g29.yaml

启动的位置应当在文件夹外面!!!

如此就可以感受到方向盘有阻力了,但是我像要方向盘自己动

4.传递信息

$ ros2 topic pub /ff_target ros_g29_force_feedback/msg/ForceFeedback "{header: {stamp: {sec: 0, nanosec: 0}, frame_id: ''}, position: 0.3, torque: 0.5}"

一旦消息被抛出,转盘旋转到0.3 * < max _ angle > (g29: max _ angle = 450 ° 顺时针,-450 ° 逆时针方向) ,发布速度不受限制。

29_force_feedback.yaml

parameter

default

description

device_name

/dev/input/event19

device name, change the number

loop_rate

0.1

Loop of retrieving wheel position and uploading control to the wheel

max_torque

1.0

As for g29, 1.0 = 2.5Nm (min_torque < max_torque < 1.0)

min_torque

0.2

Less than 0.2 cannot rotate wheel

brake_torque

0.2

Braking torque to stop at the position (descrived below)

brake_position

0.1

Brake angle (position-0.1*max_angle)

auto_centering_max_torque

0.3

Max torque for auto centering

auto_centering_max_position

0.2

Max torque position while auto centering (position±0.2*max_angle)

eps

0.01

Wheel in the range (position-eps to position+eps) is considered as it has reached the position

auto_centering

false

Anto centering if true

参看资料:

ubuntu20.04安装Carla并配置罗技G29方向盘使用_carla外接方向盘_冻★结♬ ☞memory☜的博客-优快云博客

反馈模式

Carla给控制指令,G29作为接收器接收控制指令

GitHub - kuriatsu/ros-g29-force-feedback: ros package for logicool g29 steering force feedback control

源码下载,并编译

然后在example中运行 carla_contrpol.py

python3 .carla_control.py

当然,之前也要开启Carla的世界脚本

。/CarlaUE4.sh -quality-level=Epic -RenderOffScreen

cd carla/PythonAPI/example

./manual_control.py

### 配置Carla模拟器以兼容罗技G29方向盘 #### 安装必要的依赖项 为了使Carla模拟器能够与罗技G29方向盘正常工作,在Windows环境下需确保安装了所有必需的驱动程序和支持库。建议先在Windows操作系统中安装最新的罗技游戏外设官方驱动,这一步骤可以保证硬件被正确识别并初始化。 #### 下载和编译ROS-G29力反馈控制包 由于存在专门针对Logitech G29的方向盘ROS2软件包[^2],可以通过下载此包来简化集成过程。尽管该包主要面向Linux平台开发,但其核心功能——即通过ROS消息实现对方向盘力反馈特性的精确调控——同样适用于Windows环境下的应用拓展。对于希望利用这一特性增强用户体验的研究人员来说,这是一个非常有价值的工具。 #### Carla模拟器设置 按照特定指南完成Python接口与罗技G29之间的初步对接后,下一步就是调整Carla模拟器的相关参数以便更好地适配实际设备输入。具体操作如下: 1. 启动Carla模拟器客户端; 2. 进入`Settings`选项卡内修改控制器映射方案,确保Axes轴编号(0, 1, 2...)对应于物理按钮布局中的正确位置[^3]; 3. 调整视图模式至适合手柄操控的第一人称视角或其他偏好角度; 4. 测试基本转向、加速减速等功能是否响应灵敏流畅; ```python import carla client = carla.Client('localhost', 2000) world = client.get_world() settings = world.get_settings() settings.synchronous_mode = True # 设置同步模式 settings.fixed_delta_seconds = 0.05 # 控制帧率稳定 world.apply_settings(settings) spectator = world.get_spectator() vehicle_bp = world.get_blueprint_library().find('vehicle.tesla.model3') spawn_point = random.choice(world.get_map().get_spawn_points()) ego_vehicle = world.spawn_actor(vehicle_bp, spawn_point) control = ego_vehicle.get_control() print(control.steer) # 输出当前车辆转向角 ``` 上述脚本展示了如何获取并打印出由玩家操纵产生的即时转向数据流。当结合真实感十足的手感回馈机制之后,整个交互体验将会更加逼真生动。 #### 动态场景创建 考虑到用户可能想要在一个高度复杂的交通环境中测试算法性能的需求,可借助Carla内置的地图编辑器自定义道路网络结构及障碍物摆放情况。此外还可以编程设定其他NPC车辆的行为逻辑,比如随机行驶路径规划或是固定巡逻路线等,以此增加训练样本多样性的同时也提高了实验结果的有效性和可靠性[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值