ros - 了解ros_control的JointTrajectoryController
问题描述
目前,我正在尝试了解 hardware_interface 和 ros_control 是如何工作的:velocity_controllers/JointTrajectoryController
被选为控制器类型,到目前为止一切似乎都正常。如您所见,$rostopic echo /robot_arm_controller_trajectory/follow_joint_trajectory/goal
轨迹控制器的输出计算了具有特定速度值的 8 个插值点。确保真正的机器人实际上以所需的速度值向这些点移动的正确下一步是什么?
- 在 hardware_interface.cpp 我本地存储来自 /robot_arm_controller_trajectory/follow_joint_trajectory/goal 的值
- 在 write() 中,我确保实际速度与所需的速度值匹配(应应用 PID)。对于每个点,我检查速度是否在给定时间内达到其期望值,否则 set_abort()
这是正确的方法吗?如果是,JointTrajectoryController
实际上只关心生成所需的插值点。那么$rostopic echo /robot_arm_controller_trajectory/follow_joint_trajectory/feedback
,如果JointTrajectoryController
不处理“到达”任务(检查是否达到计算点),这意味着什么?
header: seq: 0 stamp:
secs: 1634781253
nsecs: 480294199 frame_id: '' goal_id: stamp:
secs: 1634781253
nsecs: 480294676 id: "/move_group_plan-2-1634781253.480294676" goal: trajectory:
header:
seq: 0
stamp:
secs: 1634781313
nsecs: 480279134
frame_id: "world"
joint_names:
- jnt0
- jnt1
- jnt2
- jnt3
- jnt4
points:
-
positions: [1.5700000524520874,
0.7400000095367432, 0.6600000262260437, 1.7000000476837158, 1.0]
velocities: [0.0, 0.0, 0.0, 0.0, 0.0]
accelerations: []
effort: []
time_from_start:
secs: 0
nsecs: 0
-
positions: [1.5703209370473115,
0.7406213365581189, 0.6710738072625566, 1.6212431102458411, 0.9413782050925622]
velocities: [0.0013806954234580442,
0.002673432715851713, 0.047648029930578414, -0.33887367827729736, -0.2522366144972447]
accelerations: []
effort: []
time_from_start:
secs: 0
nsecs: 398756937
-
positions: [1.5706418216425353,
0.7412426635794948, 0.6821475882990696, 1.5424861728079666, 0.8827564101851244]
velocities: [0.0022349043068913945,
0.004327432530974492, 0.07712692133070972, -0.5485281041759992, -0.40829040678906914]
accelerations: []
effort: []
time_from_start:
secs: 0
nsecs: 562751472
-
positions: [1.5709627062377594,
0.7418639906008705, 0.6932213693355825, 1.463729235370092, 0.8241346152776866]
velocities: [0.002753033119682365,
0.005330682411870807, 0.09500763329677239, -0.6756960614448504, -0.502946371740638]
accelerations: []
effort: []
time_from_start:
secs: 0
nsecs: 690434717
-
positions: [1.5712835908329834,
0.7424853176222463, 0.7042951503720954, 1.3849722979322172, 0.7655128203702488]
velocities: [0.0027706307883390013,
0.00536475667786027, 0.09561493178463103, -0.6800151796264982, -0.506161256276052]
accelerations: []
effort: []
time_from_start:
secs: 0
nsecs: 797648694
-
positions: [1.5716044754282075,
0.7431066446436221, 0.7153689314086084, 1.3062153604943427, 0.706891025462811]
velocities: [0.0022505020740580467,
0.004357634399054199, 0.07766520288374407, -0.5523563726288884, -0.41113993313426167]
accelerations: []
effort: []
time_from_start:
secs: 0
nsecs: 923568484
-
positions: [1.5719253600234313,
0.7437279716649979, 0.7264427124451214, 1.227458423056468, 0.6482692305553732]
velocities: [0.0013786955219680596,
0.0026695603179419584, 0.04757901299575412, -0.33838282854853885, -0.25187125630702323]
accelerations: []
effort: []
time_from_start:
secs: 1
nsecs: 87898940
-
positions: [1.5722462446186554,
0.7443492986863737, 0.7375164934816343, 1.1487014856185933, 0.5896474356479354]
velocities: [0.0, 0.0, 0.0, 0.0, 0.0]
accelerations: []
effort: []
time_from_start:
secs: 1
nsecs: 486655878 path_tolerance: [] goal_tolerance: [] goal_time_tolerance:
secs: 0
nsecs: 0
---
解决方案
推荐阅读
- c# - FireSharp QueryBuilder 返回 null
- java - java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 FloatingActionButton.setImageResource(int)'
- python - 如何向新网址发出请求?
- angular - 如何在离子框架中应用表 ion-col 中的列表重新排序
- javascript - PreOrder Traversal Iterativ vs Recursive Time Complexity
- python - Python - 从条形图中保存颜色,类似于折线图的 get_color()
- kubernetes - 一旦设置了 kubernetes cpu 限制,容器是否会超过设置的限制
- sql - 错误的 SQL 查询
- django - Django - 将 PDF 和 Excel 文件上传到 mysql 数据库
- sql - SQL查询where子句返回行不存在