前言
最近要实现手柄控制机械臂的运动,苦于经费不足,手柄目前还用不上,不得已采用鼠标代替,不过原理是一样的,其实笔者早些时间学过一点ROS,不过已经忘的差不多了,趁此机会好好恶补一下,学习资料参考《ROS机器人开发实践》
鼠标部分
安装功能包
为了能够让系统检测到外设的接入同时正常使用,我们需要下载一些功能包
sudo apt-get install ros-noetic-joystick-drivers
有时候会出现安装版本不同导致异常的情况,这个时候用aptitude辅助安装,他会智能检索要安装的包
sudo apt-get install aptitude
sudo aptitude install <package name>
检测外设
我们需要查看Ubuntu中的硬件驱动层目录dev/input,在终端中输入
ls /dev/input/
我们会看到如下输出
ls /dev/input/
by-id by-path event0 event1 event2 event3 event4 event5 event6 js0 js1 mice mouse0 mouse1 mouse2
创建的端口是js0,我们通过jstest来测试其是否工作
jstest /dev/input/js0
输出的结果应该为

输出的信息很清晰地告诉我们鼠标X&Y轴的状态,到时候换成手柄也就是多几个键的事情,原理是一样的,至此外设测试完成,现在我们来梳理一下控制逻辑
控制逻辑
用口头讲可能有点晦涩,直接上思维导图来解释,我们先启动joy_node手柄节点来发布外设的X&Y轴数据,然后通过简单的转换成机械臂能接收到的数据,再发布到joint_state上,move_group订阅到这些数据后对机械臂进行运动学规划,这个下次我打算从原理开始好好总结一下
因此我们首先要做的第一步是启动joy_node节点,在这里我把它集成到了launch文件中,在第二个node标签中,当节点死掉了就重新生成,包名为joy,节点类型&名称:“joy_node”
<?xml version="1.0"?>
<launch>
<!--create a node named mouse_joy to sub&pub datas,and set axis parameters about device-->
<node pkg="joystick" type="mouse_joy" name="mouse_joy"/>
<param name="axis_linear" value="1" type="int"/>
<param name="axis_angular" value="0" type="int"/>
<!--create a joy node and set some parameters about device-->
<node respawn="true" pkg="joy" type="joy_node" name="joy_node">
<param name="dev" value="/dev/input/js0" type="string"/>
<param name="deadzone" value="0.12"/>
</node>
</launch>
接下来第二步就是创建订阅者和发布者来处理数据
类的创建
class Teleo
ROS手柄控制机械臂:从鼠标模拟到运动控制逻辑解析

本文介绍了如何使用ROS和鼠标模拟手柄控制机械臂的运动。首先,通过安装和配置`ros-noetic-joystick-drivers`来检测和测试外设。接着,详细阐述了控制逻辑,包括启动joy_node节点,创建订阅者和发布者来处理数据,并将鼠标数据转换为适合机械臂的关节状态消息。最后,通过moveit_setup_assistant配置机械臂功能包,并进行了实际操作演示,实现了鼠标控制机械臂的运动。
最低0.47元/天 解锁文章
9446

被折叠的 条评论
为什么被折叠?



