使用moveit!控制真实机械臂(3)——修改moveit配置文件来控制真实机械臂(9月27日更新)

本文详细介绍了如何修改MoveIt! 配置文件以控制真实机械臂,包括修改demo.launch文件、move_group.launch文件中的moveit_controller_manager参数、aubo_i5_moveit_controller_manager.launch.xml文件以及创建controllers.yaml配置文件。9月27日更新内容涉及解决joint_states_publisher消息冲突和轨迹执行时间超时问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要想使用moveit来控制真实机械臂,我们需要修改配置文件夹下的几个文件,因为默认生成的moveit配置文件中,所使用的部分参数是针对虚拟机械臂的,你可以在rviz环境下观察模型的运动,但真正的控制信号并不会发出来。具体要修改以下几个地方:
##1、demo.launch文件中参数fake_execution的值改为false

<!--此段代码来自moveit配置文件demo.launch-->
<!-- Run the main MoveIt executable without trajectory execution (we do not have controllers configured by default) -->
  <include file="$(find aubo_i5_moveit_config)/launch/move_group.launch">
    <arg name="allow_trajectory_execution" value="true"/>
    <arg name="fake_execution" value="false"/> //请看这个参数
    <arg name="info" value="true"/>
    <arg name="debug" value="$(arg debug)"/>
  </include>

通过参数的名字也很好理解,就是启用真实机械臂执行方式。接下来,demo.launch文件会启动move_group.launch文件,这是下一个要修改的文件。

##2、修改moveit_controller_manager参数。
move_group.launch文件中,moveit_controller_manager在选择参数值时,“unless”前面那个velue值要修改,写一个自己机器人名称作为前缀

<!-- Trajectory Execution Functionality -->
  <include ns="move_gr
### 使用 MoveIt! 控制真实机械 为了成功使用 MoveIt! 控制实际的机械,需先确保机械具备基本的功能性底层驱动[^2]。这意味着该机械能够通过 C++ 或其他编程语言执行基础动作指令,例如移动至特定关节角度或使末端效应器到达指定的位置和方向。 一旦确认了硬件层面的操作能力,在 ROS 中集成并利用 MoveIt! 进行更高级别的规划与控制成为可能。具体来说: - **设置环境**:安装必要的软件包,包括但不限于 `ros-melodic-moveit` 及其依赖项。 - **配置模型文件**:准备 URDF/XACRO 文件描述机械结构;SRDF 文件定义工作空间约束条件以及附加组件信息等。 - **启动 MoveIt! 配置向导**:借助 moveit_setup_assistant 工具创建适用于所选设备的具体参数设定。 - **编写自定义节点和服务接口**:开发用于接收来自 MoveIt! 的命令并向物理装置发送相应信号的应用逻辑。这部分涉及构建 action 客户端/服务器机制以处理轨迹跟随任务或其他交互形式。 下面是一个简单的 Python 示例代码片段展示如何连接到已知名称的动作服务来进行路径跟踪请求: ```python import rospy from control_msgs.msg import FollowJointTrajectoryAction, FollowJointTrajectoryGoal from trajectory_msgs.msg import JointTrajectoryPoint def send_trajectory(): client = actionlib.SimpleActionClient(&#39;arm_controller/follow_joint_trajectory&#39;, FollowJointTrajectoryAction) goal = FollowJointTrajectoryGoal() point = JointTrajectoryPoint() # 填充point数据... goal.trajectory.points.append(point) client.send_goal(goal) client.wait_for_result() if __name__ == "__main__": try: rospy.init_node(&#39;send_traj&#39;) send_trajectory() except Exception as e: print(e) ``` 此脚本展示了怎样建立一个简易客户端去调用名为 &#39;arm_controller/follow_joint_trajectory&#39; 的 Action 服务,并提交一条由多个时间戳点构成的目标轨迹给它处理。
评论 37
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值