Ubuntu环境下读取罗技G29方向盘信息

article/2025/1/2 3:56:22

Ubuntu环境下读取罗技G29方向盘信息


引言

请添加图片描述

实验室有这么酷的驾驶设备,来了一年还没有实际操作过,早就蠢蠢欲试了,哈哈哈不过之前负责的师兄还在就一直没敢用,现在他毕业了就可以为所欲为了

之前师兄好像都是在Windows下开发的,我觉得比较麻烦而且与现有的框架感觉兼容性不高,所以还是选择了在Linux下开发

信息查看

首先要确定插入的设备哪一个是G29方向盘,下面两个命令都可以

ls /dev/input
或
dmesg

一般来说是event11js0

要查看方向盘信息,在终端输入

cat /dev/input/js0 | hexdump

输出信息如下

(base) redwall@redwall-desktop:~$ cat /dev/input/js0 | hexdump
0000000 d754 0053 0000 0081 d754 0053 0000 0181
0000010 d754 0053 0000 0281 d754 0053 0000 0381
0000020 d754 0053 0000 0481 d754 0053 0000 0581
0000030 d754 0053 0000 0681 d754 0053 0000 0781
0000040 d754 0053 0000 0881 d754 0053 0000 0981

显然没什么可读性

安装操纵杆的校准工具:jstest-gtk

sudo aptitude install jstest-gtk

建议大家熟悉使用aptitude而不是apt

安装完成后在终端运行

jstest-gtk /dev/input/js0

出现如下图形界面,方向盘信息均在图形界面中进行了显示

请添加图片描述

结合ROS的joy包进行开发

安装并编译相关包,在终端输入

sudo aptitude install ros-melodic-joy
sudo aptitude install ros-melodic-joystick
sudo aptitude install ros-melodic-joystick-drivers
rosdep install joy
rosmake joy

在两个终端中分别输入

roscore
rosrun joy joy_node

查看现有的话题

(base) redwall@redwall-desktop:~/catkin_ws$ rostopic list 
/diagnostics
/joy
/joy/set_feedback
/rosout
/rosout_agg

其中/joy话题包含了需要的方向盘信息,查看/joy话题的内容

(base) redwall@redwall-desktop:~$ rostopic echo /joy

输出

---
header: seq: 386stamp: secs: 1657894839nsecs: 565566079frame_id: "/dev/input/js0"
axes: [0.648137629032135, 0.0, 0.0, 0.0, 0.0, 0.0]
buttons: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
---
header: seq: 387stamp: secs: 1657894839nsecs: 567570108frame_id: "/dev/input/js0"
axes: [0.6481055021286011, 0.0, 0.0, 0.0, 0.0, 0.0]
buttons: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
---
header: seq: 388stamp: secs: 1657894839nsecs: 573687380frame_id: "/dev/input/js0"
axes: [0.6480733752250671, 0.0, 0.0, 0.0, 0.0, 0.0]
buttons: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

查看/joy话题的信息

(base) redwall@redwall-desktop:~$ rostopic info /joy
Type: sensor_msgs/JoyPublishers: * /joy_node (http://redwall-desktop:41415/)Subscribers: None

可以看到该话题是由/joy_node节点发布的,信息的数据类型为sensor_msgs/Joy

查看sensor_msgs/Joy的消息格式

(base) redwall@redwall-desktop:~$ rosmsg show sensor_msgs/Joy
std_msgs/Header headeruint32 seqtime stampstring frame_id
float32[] axes
int32[] buttons
  • seq——消息序列
  • stamp——消息的时间戳
  • frame_id——消息的来源
  • axes——方向盘中轴的信息,以数组的形式
  • buttons——方向盘中按键的信息,以数组的形式

所以在正常使用中只要订阅该话题,并对该话题发布的消息进行解析即可获取G29方向盘的信息

编写简单的测试程序

#include <ros/ros.h>
#include <sensor_msgs/Joy.h>
#include <iostream>
using namespace std;void steer_callback(const sensor_msgs::Joy::ConstPtr &msg)
{cout << "Receive control message from:" << msg->header.frame_id << endl;for (int i = 0; i < msg->axes.size(); ++i){if (msg->axes[i] != 0.0){cout << "Axis " << i << " is not zero!" << endl;cout << "Axis " << i << " value:" << msg->axes[i] << endl;}}for (int i = 0; i < msg->buttons.size(); ++i){if (msg->buttons[i] != 0.0){cout << "Button " << i << " is not zero!" << endl;cout << "Button " << i << " value:" << msg->axes[i] << endl;}}cout << endl;
}int main(int argc, char *argv[])
{ros::init(argc, argv, "logitech_steer");ros::NodeHandle nh;ros::Subscriber sub = nh.subscribe("/joy", 1, steer_callback);ros::spin();return 0;
}

编写简单的launch文件

<?xml version="1.0"?>
<launch><node pkg="joy" type="joy_node" name="joy_node" output="screen" /><node pkg="steer_test" type="steer_test" name="steer_test" output="screen" />       
</launch>

运行输出

(base) redwall@redwall-desktop:~/catkin_ws$ roslaunch steer_test steer_test.launch 
... logging to /home/redwall/.ros/log/dbe33e8e-043a-11ed-a8dc-000babe43e9a/roslaunch-redwall-desktop-20515.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.started roslaunch server http://redwall-desktop:46371/SUMMARY
========PARAMETERS* /rosdistro: melodic* /rosversion: 1.14.13NODES/joy_node (joy/joy_node)steer_test (steer_test/steer_test)ROS_MASTER_URI=http://localhost:11311process[joy_node-1]: started with pid [20547]
process[steer_test-2]: started with pid [20548]
[ WARN] [1657895770.683714324]: Couldn't set gain on joystick force feedback: Bad file descriptor
[ INFO] [1657895770.685046029]: Opened joystick: /dev/input/js0. deadzone_: 0.050000.
Receive control message from:/dev/input/js0
Axis 0 is not zero!
Axis 0 value:0.648041Receive control message from:/dev/input/js0
Axis 0 is not zero!
Axis 0 value:0.648009Receive control message from:/dev/input/js0
Axis 0 is not zero!
Axis 0 value:0.647977Receive control message from:/dev/input/js0
Axis 0 is not zero!
Axis 0 value:0.647945

确定按键与轴的对应关系

方向盘axes[0]
离合axes[1]
刹车axes[3]
油门axes[2]
左拨片buttons[5]
右拨片buttons[4]
红色圆环包围的回车键buttons[23]
加号键buttons[19]
减号键buttons[20]
方向上下键axes[5]
方向左右键axes[4]
L2键buttons[7]
L3键buttons[11]
R2键buttons[6]
R3键buttons[10]
  • axes数组中数据的范围在[-1,1],将[-32767,32767]进行了归一化
  • buttons数组中的值只有0和1,可以认为是一个布尔量,按一下则变为true
  • 方向盘顺时针为正,逆时针为负
  • 油门、离合、刹车抬起时为-1,踩下时为1
  • 方向上键为-1,下键为1,与正常印象中的相反,这和罗技手柄倒是一致的
  • 方向左键为-1,右键为1,同样与正常印象中的相反

参考博客

罗技G29方向盘linux下的开发


http://chatgpt.dhexx.cn/article/b5eb7peL.shtml

相关文章

UDS 安全认证29服务概述

一&#xff0e;服务概述 此服务的目的是为客户提供一种证明其身份的方法&#xff0c;允许其访问数据和/或诊断服务&#xff0c;这些数据和/或诊断服务由于安全、排放或安全等原因而受到限制。 用于将例程或数据下载/上传到服务器以及从服务器读取特定内存位置的诊断服务可能需…

SQLi LABS Less-29

第29关使用GET请求提交参数,在url中构造payload即可 源码中并没有做什么过滤,直接测试注入点即可 在url中输入 1and true-- a,源码中的SQL会拼接成下面这样 注释后面的内容不起作用,所以真正执行的SQL是这样的 and后面的true会使SQL恒成立,SQL正常查询出用户内容,并在页面显示…

AE 提示29:0

报错信息说明&#xff1a; After Effects error警告&#xff1a;内部验证失败。该project工程项目的内部秩序混乱。 报错的可能原因&#xff1a; 当在Project项目窗口中替换素材&#xff0c;或重命名素材时&#xff0c;有些引用的数据被破坏了。建议解决方法&#xff1a; 将工程…

UN ECE WP.29 R155 R156 概述

目录 1. 什么是UNECE WP.29 2. WP.29合规认证要求 3. WP.29和ISO/SAE 21434之间的关系 4. WP.29 R155 - Cybersecurity 5. WP.29 R156 - Software Update 1. 什么是UNECE WP.29 UNECE: The United Nations Economic Commision for Europe , 联合国欧洲经济委员会。创建于1…

认识UDS诊断29认证服务-Authentication Service

目录 1.概述 2. 背景知识 3. 服务介绍 4. 服务实现 5. 与27服务的比较 1.概述 29服务是在ISO 14229-2020版本中首次增加的为应对网联汽车日益增加的安全风险的新服务。 此服务的目的顾名思义是为client和server之间的身份认证提供一种方法&#xff0c;以便对意图获取一些…

UDS 29服务

目录 一、29服务支持安全概念 二、基于APCE的认证&#xff08;KPI&#xff09; 三、基于ACR认证 一、29服务支持安全概念 1、APCE&#xff1a;采用非对称加密的基于PKI证书交换程序的认证 2、ACR&#xff1a;采用对称或非对称加密的基于挑战确认流程的认证 子功能介绍&am…

常用三种正态检验方法

带正态曲线直方图 利用SPSS的菜单分析环境&#xff1a;“分析”-“描述统计”-“频率”&#xff0c;在绘图选项选择带正态曲线的直方图。 绘制带正态曲线的直方图通过对比直方图与正态曲线的拟合程度&#xff0c;判定数据序列的分布形态是否接近正态分布。下面两幅图是某班级…

Origin_正态检验以及频率统计

文章目录 正态检验1、导入数据2、进行正态检验 频率统计1、选中数据2、执行频率统计 正态检验 1、导入数据 将该列填充以100为中心的随机整数 2、进行正态检验 突出显示A列&#xff0c;然后单击“Statistics: Descriptive Statistics: Normality Test”以打开对话框。所选…

past软件_Past软件与AndersonDarling正态性检验

如欲转载本文,请先与作者联系并获得授权。 本文由正在制作中的新教程修改而来。 目录 1 Past软件下载 2 A-D检验简介 3 操作 4 参考文献 1 Past软件下载 读者可在本公众号(邱宗满)内通过下方菜单“资料课程→软件下载→数据分析软件”下载该软件,也可以在Past软件官网进行下载…

正态性检验ks和sw区别_t检验常见问题汇总解答,你想知道的都在这里

在分析过程中,无论是由于数据质量还是统计方法选择上,甚至是自己也讲不清的什么原因都可能导致数据无法正常分析。这种细节的问题,文献里一般又不会详细说明,而实际分析时遇见一次就非常头疼。 因此,SPSSAU汇总了一些常用方法中出现频率较高的问题,整理成文章,大家可以…

基于spss的正态分布正态性检验

****基于spss的正态分布正态性检验**** 正态分布正态性检验频率直方图实验步骤 P-P图实验步骤 Q-Q图实验步骤 K-S 检验实验步骤 描述法(偏度和峰度系数检验)实验步骤 简要介绍这五种方法&#xff0c; 有需要数据练习的练习我 正态分布 正态分布&#xff08;Normal distribution…

python正态检验_python验证正态分布

验证正态分布 为什么要检验数据的正态性&#xff1f; 很多时候&#xff0c;我们都需要使用从单一样本中获取的样本信息利用统计推断的方法来估计总体的参数信息&#xff0c;这是一种非常有用的统计方法&#xff0c;但在执行相关推断之前&#xff0c;我们需要验证一些假定&…

matlab 数据正态性检验

matlab 数据正态性检验 matlab 数据正态性检验 数据说明描述性图像 指数走势图收益率散点图收益率频率分布直方图Q-Q 图峰度与偏度系数 峰度偏度jb 检验代码下载数据说明 以前推荐用tushare是因为tushare免费,但是现在tushare非常无耻,积分不透明变像收费早已背离初心,建议…

非参数正态性检验

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达本文转自&#xff1a;机器学习算法那些事 非参数正态性检验 前面两节介绍了采用Q-Q图和偏度与峰度来对采集样本进行正态性检验&#xff0c;本节介绍非参数性的正态性检验…

R语言数据统计1——正态性检验

引用 正态性检验之qqplot和ppplot原理及R语言实现 QQ图 KS检验和SW检验的区别 t检验算法及其在R语言中的实现 R语言做正态分布检验 R语言与统计分析 数据统计中的方差分析第一步应该是检查数据&#xff0c;其次做正态性检验。 而正态性检验&#xff1a; KS检验&#xff08…

正态分布方差检验

卡方检验、F检验 定义 χ 2 \chi^2 χ2 检验123实验设计 F F F 检验123 附录假设检验一般步骤势函数 定义 用于检验总体呈正态分布的方差的假设检验&#xff0c;其中 χ 2 \chi^2 χ2 检验常用于单样本正态方差检验&#xff1b; F F F 检验用于双样本的正态方差检验。 χ 2 \…

统计推断——正态性检验(图形方法、偏度和峰度、统计(拟合优度)检验)

正态分布是很多计量数据比较分析的假设前提&#xff0c;因此在做比较分析之前要首先验证样本数据所代表的总体是否服从正态分布。当然对于比率数据的比较也需要满足分布前提&#xff0c;通常是二项分布和泊松分布&#xff0c;对于二项分布的比率比较&#xff0c;一般不需要做分…

统计学之正态分布检验

统计学之正态分布检验 本次主要是对数据集数据进行正态分布检验&#xff0c;数据集地址为&#xff1a;http://jse.amstat.org/datasets/normtemp.dat.txt 主要包括三列数据&#xff0c;体温&#xff08;F&#xff09;、性别&#xff08;1&#xff1a;男&#xff0c;2&#xff…

matlab 正态输入信号,用matlab或者spss做正态检验(转载)

2.5 总体分布正态性检验 进行参数估计和假设检验时&#xff0c;通常总是假定总体服从正态分布&#xff0c;虽然在许多情况下这个假定是合理的&#xff0c;但是当要以此为前提进行重要的参数估计或假设检验&#xff0c;或者人们对它有较大怀疑的时候&#xff0c;就确有必要对这个…

SPSS -正态检验

1. 检验方法1&#xff1a;KS检验&#xff08;数值检验&#xff09; 原假设是服从指定分布。 如果P值>0.05&#xff0c;说明结果更倾向于接受原假&#xff0c;即服从指定分布。具体参见https://editor.csdn.net/md/?articleId109822028 根据P值判断是否服从正态分布&…