使用 MoveIt 控制自己的真实机械臂【1】——配置 action client 端

1、demo.launch 中的参数 fake_execution 值设置为 false

在默认生成的 MoveIt 配置文件中,所使用的部分参数是针对虚拟机械臂而言的,这可以使其在 Rviz 环境中观察到模型的运动,但是,这种用于控制虚拟机械臂的方式不会将真正的控制信号发送出来,因此,为了在控制真实机械臂时得到控制 MoveIt 输出的控制信号,需要对 demo.launch 文件作出以下修改:

    <arg name="fake_execution" value="false"/>

顾名思义,将 fake_execution 设置为 false,即是启用真实机械臂执行。

同时,注释以下代码,使其不再发布虚拟的 joint_states,因为驱动真实机械臂时,我们要同步的是真实机械臂的joint_states,拿到真实机械臂的关节状态然后通过 joint_states 发布出来也是后续我们应该处理的工作。

  <!-- We do not have a robot connected, so publish fake joint states -->
  <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" unless="$(arg use_gui)">
    <rosparam param="source_list">[move_group/fake_controller_joint_states]</rosparam>
  </node>
  <node name="joint_state_publisher" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" if="$(arg use_gui)">
    <rosparam param="source_list">[move_group/fake_controller_joint_states]</rosparam>
  </node>

2、设置moveit_controller_manager 参数值为自己机器人名称

设置完参数之后,跟随 demo.launch 的脚步,进入 move_group.launch 文件,moveit_controller_manager 参数,在选择参数值的时候,unless 前的 value 值要修改成自己的机器人名称作为前前缀(这里由于我机械臂的 urdf 模型文件中机器人名称是 xmate7_description)。

  <!-- Trajectory Execution Functionality -->
  <include ns="move_group" file="$(find xmate7_moveit_config_new)/launch/trajectory_execution.launch.xml" if="$(arg allow_trajectory_execution)">
    <arg name="moveit_manage_controllers" value="true" />
    <arg name="moveit_controller_manager" value="xmate7_description" unless="$(arg fake_execution)"/>
    <arg name="moveit_controller_manager" value="fake" if="$(arg fake_execution)"/>
  </include>

此处由于我们在第一步将 fake_execution 设置为了 false,所以 moveit_controller_manager 这一参数选择的必然就是我们修改的自己的机器人名称,即 xmate7_description

3、进入 trajectory_execution.launch.xml 文件

接下来 moveit_controller_manager 参数传入 trajectory_execution.launch.xml 文件中,这里为了统一,顺便把 default 值也改为 xmate7_description 吧。

  <arg name="moveit_controller_manager" default="xmate7_description" />
  <include file="$(find xmate7_moveit_config_new)/launch/$(arg moveit_controller_manager)_moveit_controller_manager.launch.xml" />

可以发现,在 fake_executiontrue 的时候,此处加载的文件应该是 fake_moveit_controller_manager.launch.xml(该文件存在于 moveit 生成的配置文件中);
而现在我们设置了 fake_executionfalse, 那么此时此处加载的文件应该是 xmate7_description_moveit_controller_manager.launch.xml (这个文件应该也由 moveit 预留好了【当使用之前的 moveit 向导加载机器人模型时,机器人模型中写明的机器人名称(name属性),就会作为前缀写入这个文件的文件名,所以,“xmate7_description”这个名称源自于模型文件里写明的机器人名称】)

4、进入 xmate7_description_moveit_controller_manager.launch.xml 文件

配置如下:

<launch>
  <!-- loads moveit_controller_manager on the parameter server which is taken as argument 
    if no argument is passed, moveit_simple_controller_manager will be set -->
  <arg name="moveit_controller_manager" default="moveit_simple_controller_manager/MoveItSimpleControllerManager" />
  <param name="moveit_controller_manager" value="$(arg moveit_controller_manager)"/>

  <!-- loads ros_controllers to the param server -->
  <rosparam file="$(find xmate7_moveit_config_new)/config/ros_controllers.yaml"/>
</launch>

5、创建 ros_controllers.yaml 文件

上一步代码最后一句指向了 ros_controllers.yaml 这个配置文件决定了所使用 moveit 控制器的基本参数,该文件配置如下:

controller_list:
  - name: xmate_arm_controller
    action_ns: follow_joint_trajectory
    default: True
    type: FollowJointTrajectory
    joints:
      - joint1
      - joint2
      - joint3
      - joint4
      - joint5
      - joint6
      - joint7

name:自定义名称,方便使用;
action_ns: follow_joint_trajectory:follow_joint_trajectory 是后续 action 名称的一部分,有关 action 的内容在下面,将来需要填一个 action 名称,这个名称就在这个配置文件里确定了,就是 name/action_ns 所代表的对应字符串的组合;
type: FollowJointTrajectory:moveit 输出轨迹的一种数据存储结构;
joints:机器人关节名称,模型文件中定义的关节名称;

到此,MoveIt 端文件已经配置完毕, MoveIt 已经准备好将规划的轨迹已 action 形式发送出来;后续需要利用这个 action 携带的轨迹信息,来进一步的建立 MoveIt 和真实机械臂之间的连接。

参考文章:
CSDN_合工大机器人实验室:通过ROS控制真实机械臂(5)—Moveit!真实机械臂(move_group和demo.launch修改)
CSDN_爱学习的草莓熊:使用moveit!控制真实机械臂(3)——修改moveit配置文件来控制真实机械臂(9月27日更新))
CSDN_鱼香ROS:机器人学习必看系列:如何使用moveit控制真实机械臂?

  • 13
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值