news 2026/4/19 19:01:50

joint_trajectory_controller

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
joint_trajectory_controller

现在的控制器是:

plaintext

arm_controller 类型:joint_trajectory_controller/JointTrajectoryController

它提供Action 服务

plaintext

/arm_controller/follow_joint_trajectory

只要向这个 Action 发轨迹,机械臂就会动。


一、最快速测试(命令行,不用写代码)

直接在终端运行,机械臂立刻动!

1. 查看当前关节角度(确认能读到)

bash

运行

ros2 topic echo /joint_states

2. 发送一条轨迹命令(直接复制)

bash

运行

ros2 action send_goal /arm_controller/follow_joint_trajectory control_msgs/action/FollowJointTrajectory "{ trajectory: { joint_names: [JM0, JM1-2, JM4-3, JM4, JM5, YB], points: [ { positions: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], time_from_start: {sec: 2, nanosec: 0} } ] } }"

运行后机械臂会在 2 秒内走到全零位

这就证明:

你的 joint_trajectory_controller 工作正常!


二、Python 代码控制(最实用)

创建文件send_trajectory.py,直接复制运行:

python

运行

import rclpy from rclpy.action import ActionClient from rclpy.node import Node from control_msgs.action import FollowJointTrajectory from trajectory_msgs.msg import JointTrajectoryPoint class ArmController(Node): def __init__(self): super().__init__('arm_simple_controller') self._action_client = ActionClient( self, FollowJointTrajectory, '/arm_controller/follow_joint_trajectory' ) def send_goal(self): goal_msg = FollowJointTrajectory.Goal() # 填入你的关节名字(和你配置一致) goal_msg.trajectory.joint_names = [ "JM0", "JM1-2", "JM4-3", "JM4", "JM5", "YB" ] # 定义一个轨迹点 point = JointTrajectoryPoint() point.positions = [0.5, -0.3, 0.2, 0.0, -0.1, 0.4] # 目标角度 point.time_from_start.sec = 3 # 3秒到达 goal_msg.trajectory.points.append(point) # 等待Action服务器上线 self._action_client.wait_for_server() # 发送目标 self._action_client.send_goal_async(goal_msg) self.get_logger().info('轨迹已发送 → 机械臂运动中') def main(args=None): rclpy.init(args=args) arm = ArmController() arm.send_goal() rclpy.spin(arm) if __name__ == '__main__': main()

运行:

bash

运行

ros2 run your_package send_trajectory.py

机械臂会平滑运动到目标角度


三、MoveIt 如何使用它?(你最关心的)

MoveIt 不是直接调用,而是通过:

moveit_simple_controller_manager

它会自动连接:

plaintext

/arm_controller/follow_joint_trajectory

你只需要在 MoveIt 配置文件simple_moveit_controllers.yaml写:

yaml

controller_list: - name: arm_controller action_ns: follow_joint_trajectory type: FollowJointTrajectory default: true joints: - JM0 - JM1-2 - JM4-3 - JM4 - JM5 - YB

然后启动 MoveIt,就能用:

  • MoveGroup
  • Python API
  • RViz 拖动
  • C++ 代码

全部都能控制机械臂运动!


四、总结(超级简单)

你的joint_trajectory_controller运动方法只有 1 条:

向 Action /arm_controller/follow_joint_trajectory 发送轨迹 → 机械臂就会运动

三种使用方式:

  1. 命令行快速测试
  2. Python 代码直接控制
  3. MoveIt 高级规划(通过 simple_controller_manager)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 19:00:50

别再为上传大文件发愁了!用SpringBoot+阿里云OSS搞定分片、秒传和断点续传,保姆级配置流程

企业级大文件上传实战:SpringBoot与阿里云OSS的高效整合方案 当用户需要上传3GB的设计源文件时,传统表单提交会直接卡死在进度条——这不是假设,而是每天发生在SaaS后台的真实场景。我们曾用一周时间重构某金融科技公司的报表系统&#xff0c…

作者头像 李华
网站建设 2026/4/19 18:58:51

2026届毕业生推荐的六大AI辅助论文方案解析与推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 人工智能技术已然极为深入广泛地融入到了高等教育的场景之中,于毕业论文写作的整…

作者头像 李华
网站建设 2026/4/19 18:57:18

XUnity.AutoTranslator:让外语游戏瞬间变中文的终极解决方案

XUnity.AutoTranslator:让外语游戏瞬间变中文的终极解决方案 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为看不懂的外语游戏而烦恼吗?XUnity.AutoTranslator就是你的救星&…

作者头像 李华
网站建设 2026/4/19 18:56:27

Spring Boot REST 异常处理规范

Spring Boot REST 异常处理规范:构建健壮的后端服务 在现代Web开发中,RESTful API已成为前后端交互的核心方式。异常处理不当可能导致接口响应混乱,甚至泄露敏感信息。Spring Boot提供了一套完善的异常处理规范,帮助开发者高效管…

作者头像 李华
网站建设 2026/4/19 18:56:24

从USGS到本地:Landsat数据高效下载与预处理全流程解析

1. Landsat数据基础与下载准备 Landsat系列卫星是遥感领域最著名的地球观测项目之一,由美国地质调查局(USGS)和美国宇航局(NASA)共同运营。这个项目自1972年发射第一颗卫星以来,已经持续运行了半个世纪&…

作者头像 李华