MingshanHe / Compliant-Control-and-Application

Compliant Control: 1) admittance control algorithm 2) impedance control algorithm 3) hybrid force&position algorithm in robotic arm (Universal Robot).
https://mingshanhe.github.io/Compliant-Control-and-Application/
MIT License
301 stars 62 forks source link

Some problems regarding /wrench #15

Closed YuHoChau closed 1 year ago

YuHoChau commented 1 year ago

你好:

感谢回复,在浏览了源码及尝试了sim-develnoetic两个branch后依然有以下几个问题想请教,希望您能有空答复: 在sim-devel branch下,似乎xacro文件中的六轴力传感器/WrenchSigbakGenerate都会通过消息/wrench发送到/Admittance。在不launchur5e.launch的情况下,单独发布话题/WrenchSignalGenerate能够正确生成fake wrench,如下图:

Capture3

然而,如果launchur5e.launch/WrenchSignalGenerate,(由于ft_sensor的干扰?)/wrench会产生巨大的震荡,如下图:

Capture4

下图是sim-develbranch下的Node Graph(/wrench有震荡):

Capture1

以上是sim-devel branch的问题,同样我也尝试了noeticbranch。/wrench/force/wrench/torque依然有一个微小变化的值,/wrench_fake能够通过/WrenchSigbakGenerate正常发布但是无法发送到/Admittance,如下图:

Capture2

因此,我的疑惑是: 1) ft_sensor的作用?以及为何会有初始值及存在震荡 2) 在noeticbranch下正确的Node Graph?/gazebo->/wrench是存在的么?我注意到control_algorithms/admittance/launch/Admittance.launch文件中:<arg name="TOPIC_WRENCH_STATE" default="/wrench"/>而不是使用/wrench_fake,不知道这里是否正确? 3) 以上两个branch的问题是否有一些提示呢?

感谢您的时间,期望您有空解答。Thanks! Env: UBuntu 20 + Noetic, complied through catkin build

MingshanHe commented 1 year ago
  1. 当时为了能够实现力位混合控制而采用了ft_sensor用来识别末端和物体的交互力,这个也可以通过GIF图片中看到,轮胎打磨需要指导末端与轮胎之间的交互力,从而采用该传感器。振荡的原因,主要是没有规定好数据发送的topic,因为传感器与代码都是对一个话题进行发布,导致了数据产生了波动。
  2. noetic 分支是我在与实物进行调试的时候也会使用的代码,故将仿真与代码进行了整合,需要参考代码进行小部分修订。
  3. 由于该项目停止开发好几个月,请原谅我无法为这两个分支提供更多的信息。如果日后有机会,我会进行代码重构,谢谢。
YuHoChau commented 1 year ago

非常感谢,期待您以后有机会update。

YuHoChau commented 1 year ago

您好,经过简单的修改后代码已能跑通,感谢帮助。但由于C++能力有限,还有两个小问题想请教: 1)Wrench_Fake生成的外力的单位是N么?2)笛卡尔速度控制中的反馈是?即rqt_graph中:

Capture0

/catesian_velocity_controller/ee_state发送到/Admittance的是末端的速度和位置么,还是仅有位置?如果仅反馈位置的话,如果是实现拖动功能即stiffness_parameter为0,系统就失去了反馈?

Capture1

感谢指正。

MingshanHe commented 1 year ago

1)力单位是N 2)控制器获取了机械臂的状态,通过正运动学获取末端位置与姿态 3)发送的是速度,ros_control底层拥有速度闭环,关节驱动模式为位置模式,故在底层中将速度积分至位置模式 4)反馈有速度与位置,故stiffness为0可以实现拖动,而不会失去反馈

YuHoChau commented 1 year ago

十分感谢!祝您生活愉快

ConnorChungCN commented 1 year ago

您好,经过简单的修改后代码已能跑通,感谢帮助。但由于C++能力有限,还有两个小问题想请教: 1)Wrench_Fake生成的外力的单位是N么?2)笛卡尔速度控制中的反馈是?即rqt_graph中:

Capture0

/catesian_velocity_controller/ee_state发送到/Admittance的是末端的速度和位置么,还是仅有位置?如果仅反馈位置的话,如果是实现拖动功能即stiffness_parameter为0,系统就失去了反馈?

Capture1

感谢指正。

请问您在此修改了什么

YuHoChau commented 1 year ago

你好,请参阅我基于本仓库作者修改后的repo: https://github.com/YuHoChau/UR_Admittance/tree/UR5e.