技术分享 | 遥控器控制(Joystick)

Posted 阿木实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术分享 | 遥控器控制(Joystick)相关的知识,希望对你有一定的参考价值。

一、遥控器控制

在真实飞行过程中,我们使用真实的遥控器作为控制无人机的主要操作来源,遥控器始终拥有最高的权限,精湛的遥控器操作手法可以保证无人机安稳着陆,但对于很多非专业人士来说,遥控的操作技巧是需要不断练习的。

我们始终强调一个观念,仿真与实机结合,这样更加符合开发流程,在以往的仿真中,我们通过键盘控制无人机飞行,并不能真实的反应出实机飞行时该怎么操作,也是基于现在存在的种种问题,为了让仿真与实机结合的更加完美,在Prometheus中增加遥控器控制方式,与真机使用对应起来,更加容易上手和进行二次开发。

1、真实飞机中的遥控器

下面是真实飞机中的遥控器的摇杆响应值,由 mavros/rc/in 话题组成。 2、仿真飞机中的遥控器摇杆

为了与真实飞机保持一致,仿真中的遥控器摇杆操作设计与真实飞机保持一致,采用 mavros/rc/override。

RC Override : 通道覆盖,又名RC覆盖,主要用于模拟用户实时实现遥控器操纵杆的控制,通过使用适当的mavlink命令,如DO_SET_SERVO/DO_SET_RELAY,可以设置期望的位置或者方向以及速度,它可以覆盖掉原有的遥控器数据值。

使用 mavros/rc/override 话题,重载使用其中的前八位通道。

注意:前八位通道,默认有数值情况下属于覆盖遥控器通道数据,数值为0表示释放回RC控制。

节点名称:joy_translator

订阅:/joy

发布:mavros/rc/override

代码存在位置:Prometheus/Simulator/gazebo_simulator/py_nodes/joystick_translator.py

二、如何使用

在此使用的遥控器为 FS-I6S型号

1、Linux驱动

(1)Linux支持Joy遥控器操纵杆,有个 gstest-gtk 的应用程序可以查看摇杆的控制详情。

(2)安装方式如下:sudo apt-get install gstest-gtk

(3)安装完成之后,可以在终端中直接运行gstest-gtk便可打开查看其摇杆和按钮的响应情况。

2、ROS驱动安装

(1)使用现有的joy ros驱动,通过安装二进制方式安装ROS驱动功能包:sudo apt-get install ros-melodic-joy*

(2)安装完成之后,便可以测试 joy节点:运行roscore;运行rosrun joy joy_node

(3)此时ros话题中就会有/joy的话题。

3、转化为mavros/rc/override

运行joy节点之后,再单独运行:rosrun prometheus_gazebo joy_translator.py

三、不足及改进

1、ROS驱动精度不够

(1)ROS驱动精度不够高,理论上数据范围在-1.01.0之间,实际的数据范围在-0.9240.935,导致摇杆的数据在临界值范围内有一定误差,不能完全达到1000或者2000。

(2)解决思路:修改底层ROS驱动,归一化处理更加完善 。

2、新增mavros插件以适配mavlink

(1)在qgc中的joystick,存在mavlink数据流,但并未产生相应的mavros数据流,可以通过新增mavros插件,获取到#70号mavlink数据 。

(2)优点:qgc中已经集成了驱动,且控制精度高。

  • End -

技术发展的日新月异,阿木实验室将紧跟技术的脚步,不断把机器人行业最新的技术和硬件推荐给大家。看到经过我们培训的学员在技术上突飞猛进,是我们培训最大的价值。如果你在机器人行业,就请关注我们的公众号,我们将持续发布机器人行业最有价值的信息和技术。 阿木实验室致力于为机器人研发提供开源软硬件工具和课程服务,让研发更高效!

以上是关于技术分享 | 遥控器控制(Joystick)的主要内容,如果未能解决你的问题,请参考以下文章

pygame:检测操纵杆断开连接,并等待它重新连接

如何用Python读取USB操纵杆的输入

如何从 Unity C# 中的操纵杆控制器生成器获取数据

Linux 上的 SDL 是不是支持多个游戏手柄/操纵杆?

9张羊皮纸必须pro手柄么

Jetson Agx Xavier 手柄使用(xbox joystick ubuntu python)