[002] ROS+罗技F710游戏手柄,实现小车遥控控制

news/2024/9/8 5:17:49/

  这段时间从底层软硬件搭好了一辆差速磁导寻迹小车,鉴于一些场地无法铺设磁道,需要别的控制设备给车轮电机驱动器发送运动指令,恰好实验室闲置一个罗技F710游戏手柄,而且该手柄在ROS环境下有相关的包可以调用。后来参考CSDN上两位博主的文章,终于实现小车的遥控控制。具体实现步骤如下:

<1> 安装ROS的joy包 和joystick_driver包,操作码如下:

sudo apt-get install ros-kinetic-joy
sudo apt-get install ros-kinetic-joystick-drivers

<2> 在电脑上插上手柄的USB信号接收器,使用ctr+alt+t打开一个cmd控制台窗口,使用roscore指令激活一个节点管理器master,再打开另一个窗口,输入如下代码,打开joy包的joy节点。

rosrun joy joy_node

  可以看到,打开节点后会报一些错误,但是并不影响使用。

<3> 使用rostopic echo指令打印joy话题的实时数据,手柄的按钮和遥杆每次被操作都会更新数据。

rostopic echo /joy

  从上图可以看出,手柄的按钮和摇杆数据被存储在两个数组中:12个元素的buttons数组(int类型)和6个元素的axes数组(float类型),那各数组位对应在手柄上的实际按钮或摇杆位置在哪里呢?经过一番测试,现把正确的按钮和摇杆序号展示如下(注意:网上一些标识是错误的,这个坑我栽过,你们就别再栽进去了)。

特别说明一下:

① 蓝色箭头和数字表示按钮(buttons),红色箭头和数字表示摇杆(axes);

② 按钮按下输出1,不按输出0。蓝色序号10和11按下是按钮,推动是摇杆;

③ 摇杆正推到位输出+1,反推到位输出-1。

④ 摇杆<2>和<3>可以在+1和-1之间无极调节(精确到小数点后18位),如下图,而其他摇杆只有三种状态输出:+1.0,0.0,-1.0。

<3> 写程序订阅“joy”话题,获取相关buttons和axes的数据,即可将手柄作为控制源,控制小车前行、后退、左转和右转,如果驱动器支持速度模式,还能实现小车的无极调速。如下,附上本项目的手柄控制源码:

#include<ros/ros.h>
#include<geometry_msgs/Twist.h>
#include <sensor_msgs/Joy.h>
#include<iostream>
using namespace std;class Teleop
{
public:Teleop();private:/* data */void callback(const sensor_msgs::Joy::ConstPtr& Joy);ros::NodeHandle n;ros::Subscriber sub ;ros::Publisher pub ;double vlinear,vangular;int axis_ang,axis_lin,ton;
};Teleop::Teleop()
{n.param<int>("axis_linear",axis_lin,3);n.param<int>("axis_angular",axis_ang,2);n.param<double>("vel_linear",vlinear,0.08);n.param<double>("vel_angular",vangular,0.15);n.param<int>("button",ton,5);pub = n.advertise<geometry_msgs::Twist>("/velocity_controller/cmd_vel",1);sub = n.subscribe<sensor_msgs::Joy>("joy",10,&Teleop::callback,this);
}void Teleop::callback(const sensor_msgs::Joy::ConstPtr& Joy)
{geometry_msgs::Twist v;if(Joy->buttons[ton]){v.linear.x =(Joy->axes[axis_lin])*vlinear;v.angular.z = - (Joy->axes[axis_ang])*vangular;ROS_INFO("linear:%.3lf   angular:%.3lf",v.linear.x,v.angular.z);pub.publish(v);}
}int main(int argc,char** argv)
{ros::init(argc, argv, "joy");Teleop telelog;ros::spin();return 0;
}

  "/velocity_controller/cmd_vel"是本项目小车驱动器的速度接收话题,速度指令经过计算后 pub到这个话题中,驱动器接收指令就可以驱动电机运动。

  编译后,先运行joy包的joy_node节点,然后启动如上源码编译后的节点,就可以遥控小车了。但需要说明一下,这里做了一个防误操作设定,需要先按下5号按钮,然后再摇动2和3号摇杆,才能控制小车运动。

  最后,感谢这两位博主的文章,帮我解决了这个实际控制中遇到的问题。

  https://blog.csdn.net/u014587147/article/details/75673110

  https://blog.csdn.net/p942005405/article/details/86560145


http://www.ppmy.cn/news/285093.html

相关文章

罗技 连点 脚本_罗技 G402 有线游戏鼠标测评

大家好,我是 @胖虎 。今天,来测评一下 罗技 G402 这款有线游戏鼠标。 1. 鼠标价格 这里以京东自营的价格作为参考,毕竟买数码3C类产品,还是自营更靠谱,售后非常强大。 下面卡片上的价格具有一定时效性,不会自动更新,价格经常变动,大家可以点开查看具体价格。 2. 手长 我…

使用ROS控制罗技F701游戏手柄

一、前期工作 1.安装joy库 sudo apt install ros-$ROS_DISTRO-joy2.查看设备信息 在命令行中&#xff0c;输入如下命令查看当前连接的输入设备。 ls /dev/input/一般而言&#xff0c;罗技手柄设备的命名都以 js 开头&#xff0c;此处博主的输入即为 js0。 为了确保之后在R…

ROS下的罗技F710通信

1.实验环境:ubuntu16.04 ROS-kinetic 2.实验器材:罗技f710 3.操控手柄发出数据,控制小乌龟 #include <ros/ros.h> #include <geometry_msgs/Twist.h> #include <std_msgs/String.h> #include <sensor_msgs/Joy.h> #include <iostream> #incl…

罗技dpi计算机配置文件,罗技游戏鼠标的配置文件修改方法 Logitech 游戏软件为游戏鼠标的配置文件设置不同的 DPI...

鼠标DPI(分辨率)是指鼠标的定位精度&#xff0c;单位是dpi或cpi&#xff0c;指鼠标移动中&#xff0c;每移动一英寸能准确定位的最大信息数。 Logitech 游戏软件 (LGS) 可配置 DPI 并进行其他鼠标指针调整&#xff0c;使其在默认情况下可与所有配置文件配合工作。使用 LGS&…

硬件通讯协议:串行通讯、IPMI、IPMB、SMbus、NCSI等

串行通讯和串口的关系 串行是指在数字电路或通信中&#xff0c;数据位按照一定的顺序逐个传输的方式。在串行传输中&#xff0c;每个数据位都是依次传输的&#xff0c;而不是同时传输的。相对于并行传输&#xff0c;串行传输需要更长的传输时间&#xff0c;但是可以使用更简单…

罗技游戏手柄协议 Logitech Gamepad F710 Protocol

罗技游戏手柄F710协议 Logitech Wireless Gamepad F710Mode DByte FrameByte 0Byte 1Byte 2Byte 3Byte 4Byte 5Byte 6Byte 7 Mode XByte FrameByte 0Byte 1Byte 2Byte 3Byte 4Byte 5Byte 6,7Byte 8,9Byte 10,11Byte 12,13Byte 14 Logitech Wireless Gamepad F710 Mode D Byte…

NLP学习笔记三-数据处理基础

NLP学习笔记三-数据处理基础 NLP设计的处理处理技术也比较多&#xff0c;我们简单介绍一部分&#xff1a; 1.Tokenization NLP当中的Tokenization&#xff0c;博主以前无论是在文章中还是在代码中都能经常看到&#xff0c;这在自然语言处理中也是比较常用的技术。 Tokenizati…

计算机网络管理-使用SNMPc开展网管活动

一、实验目的 全面学习SNMPc网络管理软件业务服务监控功能&#xff0c;了解如何使用网管软件从事网络管理工作 二、实验内容与设计思想 1&#xff09;操作映射数据库。 2&#xff09;查看管理对象的MIB数据。 3&#xff09;创建、保存长期统计数据&#xff08;要求一定时长…

科普下Tier1,Tier2,Tier3,Tier4 T1, T2, T3, T4

Data-Center-Tiers大家有时候买VPS会发现一些小商家都敢给客户保证&#xff0c;低于99%的在线时间可以退款多少之类的话语&#xff0c;他们为什么这么屌呢&#xff1f;其实这个问题很简单&#xff0c;我们先了解下Tier1,Tier2,Tier3,Tier4这几个概念就差不多自然有结果了。本文…

2499元索尼T2领跑 主打差异化手机推荐

如今2000元内手机市场别有不少优秀产品&#xff0c;无论造型还是功能都相当有卖点&#xff0c;挑选一部性价比十分不错的手机&#xff0c;要看该机的性能配置能否对的起这个价格。下面&#xff0c;笔者将给大家介绍几款具有看点的千元级起热门智能手机&#xff0c;还望网友们能…

week13-T1-T2

文章目录 A-1-T1题目&#xff1a;输入格式&#xff1a;输出格式&#xff1a;Sample Input1&#xff1a;Sample Output1&#xff1a;Sample Input 2&#xff1a;Sample Output 2&#xff1a;题目分析&#xff1a;代码&#xff1a;B-1-T2题目&#xff1a;输入格式&#xff1a;输出…

P53 T2

为方便储户,某银行拟开发计算机储蓄系统。储户填写的存款单或取款单由业务员输入系统,如果是存款,系统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并印出存款单给储户;如果是取款,系统计算利息并印出利息清单给储户。 写出问题定义并分析系统的可行性。 …

MRI成像原理

概念 MRI&#xff1a;磁共振成像&#xff0c;英文全称是:Magnetic Resonance Imaging 原理 核磁共振是一种物理现象&#xff0c;作为一种分析手段广泛应用于物理、化学生物等领域&#xff0c;到1973年才将它用于医学临床检测。为了避免与核医学中放射成像混淆&#xff0c;把…

DPDK网卡PMD驱动常用属性字段和API函数汇总

使用DPDK进行报文收发&#xff0c;网卡被DPDKPMD驱动接管&#xff0c;所以以前可以使用ethtool工具配置的网卡属性&#xff0c;现在都需要通过DPDK提供的API函数来进行配置。 《DPDK官方文档说明》中我们对DPDK官方提供的文档做了整体说明&#xff0c;今天来具体看一下DPDK提供…

sony DSC-M2使用感受

之前老婆总是嫌我的20d比较笨重,出外使用不方便,拍人拍的不好看(冤枉啊,一个是技术不好,一个是镜头不好,另一个是人本来就不好拍,尤其是灯光不好处理),最最重要的是不好自拍.经过我一番辛苦的爬文之后,大家一致认同sony的DSC-M2,老婆还要限量的粉红色版本,只好到taobao网上的海…

T2. 数据应用

2.1. DDL和DML语句 1.创建和维护数据库 语法&#xff1a;create database database_name 删除数据库 语法&#xff1a;drop database database_name 2.创建和维护数据表结构 1).创建数据表 注 &#xff1a;identity &#xff1a;自动增长 2).增删改语法&#xff08;只有增…

【CSP2022J-T2】解密

题目描述 给定一个正整数 k &#xff0c;有 k 次询问&#xff0c;每次给定三个正整数 ni , ei , di &#xff0c;求两个正整数 pi ,qi&#xff0c;使 nipi qi​、eidi(pi−1 )*(qi−1)1。 输入格式 第一行一个正整数 k &#xff0c;表示有 k 次询问。 接下来 k 行&#x…

磁共振t1t2信号记忆顺口溜_MRI的T1和T2教学提纲

精品文档 精品文档 关于 MRI 的 T1 和 T2 的区别 (一) T1 加权像、 T2 加权像为磁共振检查中报告中常提到的术语,很多非 专业人士不明白是什么意思,要想认识何为 T1 加权像、 T2 加权像,请先了解几 个基本概念: 1 、磁共振 (mageticresonanceMR) ;在恒定磁场中的核子(氢质…

磁共振t1t2信号记忆顺口溜_【 磁共振t1与t2是啥意义】_特点_特征-大众养生网

文章导读 核磁共振t1与t2是什么实际意义?T1W,T2W是在核磁共振成像上的专业名词,意味着数据信号的状况,十分技术专业也比较复杂。搞清楚这一需要掌握核磁共振的成像原理的,便是根据是身体各组织的质子在强劲的电磁场功效下造成共震,当电磁场消退后,质子返回原先的情况常用…

TSDK处理大疆H20T热成像图像记录

TSDK处理大疆H20T热成像图像小白记录 TSDK的环境配置TSDK的调用.raw转.tif图像的exif信息pix4d拼接pos编辑全部代码 记录我用TSDK处理热成像图片的过程 TSDK的环境配置 由于不会调用SDK&#xff0c;所以我将下载的TSDK中sample文件夹用VS打开&#xff0c;找到dji_irp.cpp文件&…