(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’加载上层控制器等,具体可以看古月居大佬的课程

3-2 ROS中的控制器ros_contro_哔哩哔哩_bilibili

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐