《动手学Moveit2-探索篇2》使用键盘控制机械臂|Moveit2实时伺服模式探索

785 阅读2分钟

大家好,我是小鱼.上一次写了如何安装ROS2和使用moveit2实例的教程,今天我们接着探索探索Moveit2.

一、效果演示

废话不多说,先看效果,注意哈,视频中是使用遥控器,我们使用键盘就可以了,因为懒得录制键盘的,就用官方的遥控器版本代替下 mp.weixin.qq.com/s/C-g7BZKZx…

二、实时伺服介绍

2.1实时伺服介绍

通过MoveIt2的伺服模式,可以直接控制机械臂末端的在笛卡尔空间的位置,也可以直接操控机械臂的关节正转和反转。

小伙伴肯定会问,我如果一不小心控制机械臂撞到自己,会不会机毁人亡,MoveIt2肯定不会那么沙雕,所以其伺服节点已经对奇异点和机械臂的碰撞作了检测,可以防止操作人员搞坏机器人。

2.2 键盘控制节点

键盘控制机械臂的意思是,我们能够通过键盘进行以下两种模式的控制:

  • 笛卡尔模式 使用W和E切换机械臂的世界坐标系或末端,使用箭头控制前后左右运动,使用.;控制上下运动
  • 关节模式 关节模式是通过,1、2、3、4、5、6、7来控制关节转动,使用R来切换转动的方向

三、动手操作

3.1 前提工作

完成上一节:《动手学Moveit2-探索篇1》Ubuntu20安装ROS2和Moveit2-编译例程,运动规划 (已经更新一篇,请参考最新文章)

3.1.1 坑之回退大法

这里有个坑哈,Moveit2的moveit2_tutorials,而且把本来能用的给搞成了不能用的,所以请看本教程的同学把代码回退到小鱼指定的分支,使用下面的指令

git reset 59cf8c49bb309e2bb7f06e295f87efa36f8bb506 --hard

3.2 原理介绍

原理其实很简单,我们通过键盘节点发送数据给moveit的控制节点,从而控制机械臂。有兴趣的小伙伴可以看源码:

https://github.dev/rosplanning/moveit2/blob/main/moveit_ros/moveit_servo/src/teleop_demo/joystick_servo_example.cpp

图片

3.3运行服务端

进入上一讲的工作空间 启动服务端,接受键盘控制指令

ros2 launch moveit2_tutorials servo_teleop.launch.py 

服务端启动完成应该可以看到这样的界面

图片

启动键盘控制节点

ros2 run moveit2_tutorials servo_keyboard_input

图片

启动键盘控制节点

3.4 开始享受

使用W和E切换机械臂的世界坐标系或末端,使用箭头控制前后左右运动,使用.;控制上下运动。关节模式是通过,1、2、3、4、5、6、7来控制关节转动,使用R来切换转动的方向。

最后

这是探索Moveit2的第二篇文章,坑还是太多了,建议小伙伴如非必须,先学习着Moveit。今天就探索到这里,我是小鱼,目前在做公众号和ROS2课程,欢迎关注《鱼香ROS》。