大家好,我是小鱼.上一次写了如何安装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》。