#driver #control #logitech #force-feedback

bin+lib g29

提供Logitech G29方向盘/踏板和力反馈控制接口的库

3个不稳定版本

0.2.1 2024年2月9日
0.1.1 2024年2月3日
0.1.0 2024年1月31日

#424 in 硬件支持

MIT 许可证

180KB
203

G29rs

GitHub License Crates.io Version

Logitech G29的Rust驱动程序

g29rs

此库为Logitech G29方向盘/踏板和力反馈控制提供了Rust接口。

先决条件

  • Hidapi : "2.5.0"

如何使用

 use g29::controller::Controller;

 fn main() {
     // Create a new G29 instance
     let mut g29 = Controller::new();
     // set force feedback for G29 controller - make sure to set the Logitech to PS3 Mode
     g29.g29.lock().unwrap().force_feedback_constant(0.6);
     // Start the reading thread to continuously read input from the G29 device
     g29.start_pumping();
     loop {
           println!("steering = {:?}", g29.g29.lock().unwrap().get_state());
      }
 }

在不启动线程设置力反馈的情况下与驱动程序交互。

 use g29::interface::G29Interface;

 fn main() {
     // Create a new G29 driver instance
     let mut g29 = G29Interface::new();
     // set ForceFeedback
     g29.force_feedback_constant(0.5);

     // Reset the G29 device, including steering wheel calibration
     g29.reset();

     // Example: Set autocenter with a strength of 0.5 and a rate of 0.05
     g29.set_autocenter(0.5, 0.05);

 }

在主线程中读取Logitech G29的输入,并获取以carla格式输入的状态

 use g29::controller::Controller;

 fn main() {
    // Create a new G29 instance
    let mut g29 = Controller::new();
   // set G29 Steer to the center 
    g29.g29.lock().unwrap().set_autocenter(0.5,0.05);
    // reading 
   loop {
      // reading every 10ms from the G29
      g29.g29.lock().unwrap().pump(10);
      // get the readed values 
      println!("Carla_controle = {:?}", g29.g29.lock().unwrap().carla_vehicle_controle());
    }
 }

待办事项

  • 读取G29数据的线程
  • 编写测试
  • 测试完整代码后将其作为库
  • 从G29控制器按钮中读取反向模式
  • 为Carla用户提供转换状态的方 法 "油门 [0 -> 1] 刹车 [0 -> 1] 刹车[0->1]"

贡献

欢迎贡献!如果您有改进、错误修复或新功能建议,请提交拉取请求。

支持

目前仅支持G29 Logitech控制器方向盘/踏板,以及PS3模式的力反馈

支持力反馈

依赖关系

~0.4–10MB
~66K SLoC