moveit控制gazebo/真机的简单原理与步骤
(1)前言:
最近在做一个机器人yolo识别抓取的demo,moveit是直接用了厂家提供的,但是他给的求解器是KDL,即使换成TRAC-IK也依旧用着难受,打算给他换个古月居大佬说的IKFast,去看了一下他的底层,看完终于也算是弄懂了配置moveit控制真机的一点原理(以前都是跟着做哈哈).
**************************************************************************************************************
下面主要讲解一下大致的步骤和一些简单的原理,默认有一定moveit知识。没有的可以去看一下古月居大佬的课程(链接最下面有)
(2)moveit控制真机:
①预备知识:
·moveit动作客户端:
Moveit中其实是有一个action“路由表”控制器的,严格来说他不算一个控制器,可以简单理解为yaml文件创建的action客户端,用来对上ros_control接收轨迹的action名称。
·‘moveit_controller_manager’参数
该参数在demo.launch中,这个也是决定路由表作用域纯rviz仿真还是作用于gazebo/真机。moveit里面有两个内置的launch文件,‘simple_moveit_controller_manager.launch.xml’和‘fake_moveit_controller_manager.launch.xml’。这两launch文件分别对应两个不同的yaml文件(路由表),前者是对应gazebo/真机的;后者是对应纯rviz仿真的。在demo.launch中该参数默认值为‘fake’表示仅做纯rviz仿真,如果需要作用于gazebo/真机,那就需要改成simple。

·‘moveit_controller_manager’传递顺序:
demo.launch ---- move_group ---- trajectory_execution.launch ---- 控制器加载launch,最后加载对应控制器(yaml文件、路由表)
下图是‘trajectory_execution.launch’里面的加载路由表(控制器)部分。

②说明:
要让moveit真机,针对‘路由表’的配置有两种方式,第一种是直接将‘simple_moveit_controllers.yaml’(路由表)根据自己配置的ros_control(位置控制器那些,由controller_manager的spawner直接加载的那个)action直接配置,第二种是不配制‘路由表’,重新配置一个数据转换控制器(古月居课的那种方法),让move_group将数据发送到数据转换控制器,然后发送给ros_control。下面基于第二种方式展开讲解配置步骤。
③具体步骤:
·改demo.launch参数:
·将‘moveit_controller_manager’参数改成‘simple’

·注释掉状态发布,这个是仿真中直接发布的。对于真机,需要看底层写得发布节点是什么话题,然后将接收那个话题,重映射到“/joint_states”。

·配置数据转换控制:

·配置上层控制器:

·加载、启动:
使用‘controller_manager’加载上层控制器等,具体可以看古月居大佬的课程
更多推荐
所有评论(0)