ROS 控制和 Gazebo 的问题
roblem with ROS control and Gazebo
我在控制从 SolidWorks 导出的 URDF 时遇到问题。 (Ubuntu 16.04 , Kinetic, Gazebo 7.x) 我遵循了本教程并且想在我的机器人上实现。所有控制器都正确启动,因此 Gazebo 模拟也节点正确发布数据我已经通过回显主题和不同的数据值来检查它。是否有可能因为 PID 值而不工作?
所有的传输都是这样的:
<transmission name="tran1">
<type>transmission_interface/SimpleTransmission</type>
<joint name="Joint_1">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="motor1">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
控制器是这样的(所有关节):
joint_state_controller:
type: joint_state_controller/JointStateController
publish_rate: 50
joint1_position_controller:
type: effort_controllers/JointPositionController
joint: Joint_1
pid: {p: 100.0, i: 0.01, d: 10.0}
我有这个节点:
rospy.init_node('ArmMovement')
pub1=rospy.Publisher("/rrbot/joint1_position_controller/command",Float64,queue_size=10 )
rate = rospy.Rate(50)
ArmCor1= Float64()
ArmCor1.data=0
while not rospy.is_shutdown():
pub1.publish(ArmCor1)
rate.sleep()
Joint_1 的 URDF 的一部分:
<joint name="Joint_1" type="revolute">
<origin
xyz="0 0 -0.008"
rpy="1.5708 0 0" />
<parent link="base_link" />
<child link="Link_1" />
<axis
xyz="0 1 0" />
<limit
lower="0"
upper="3.14"
effort="0"
velocity="0" />
</joint>
谢谢大家的帮助,经过你们的评论,它确实起作用了。
这是我的 Joint_1 :
<joint name="Joint_1" type="revolute">
<origin
xyz="0 0 -0.008"
rpy="1.5708 0 0" />
<parent link="base_link" />
<child link="Link_1" />
<axis
xyz="0 1 0" />
<limit
lower="0"
upper="3.14"
effort="0"
velocity="0" />
</joint>
我将限制部分更改为:
<limit
lower="0"
upper="3.14"
effort="2"
velocity="2.0" />
我还有其他问题,比如非常烦人的颤抖(我认为这是来自努力值),但它不适合这个主题。
我在控制从 SolidWorks 导出的 URDF 时遇到问题。 (Ubuntu 16.04 , Kinetic, Gazebo 7.x) 我遵循了本教程并且想在我的机器人上实现。所有控制器都正确启动,因此 Gazebo 模拟也节点正确发布数据我已经通过回显主题和不同的数据值来检查它。是否有可能因为 PID 值而不工作?
所有的传输都是这样的:
<transmission name="tran1">
<type>transmission_interface/SimpleTransmission</type>
<joint name="Joint_1">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="motor1">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
控制器是这样的(所有关节):
joint_state_controller:
type: joint_state_controller/JointStateController
publish_rate: 50
joint1_position_controller:
type: effort_controllers/JointPositionController
joint: Joint_1
pid: {p: 100.0, i: 0.01, d: 10.0}
我有这个节点:
rospy.init_node('ArmMovement')
pub1=rospy.Publisher("/rrbot/joint1_position_controller/command",Float64,queue_size=10 )
rate = rospy.Rate(50)
ArmCor1= Float64()
ArmCor1.data=0
while not rospy.is_shutdown():
pub1.publish(ArmCor1)
rate.sleep()
Joint_1 的 URDF 的一部分:
<joint name="Joint_1" type="revolute">
<origin
xyz="0 0 -0.008"
rpy="1.5708 0 0" />
<parent link="base_link" />
<child link="Link_1" />
<axis
xyz="0 1 0" />
<limit
lower="0"
upper="3.14"
effort="0"
velocity="0" />
</joint>
谢谢大家的帮助,经过你们的评论,它确实起作用了。 这是我的 Joint_1 :
<joint name="Joint_1" type="revolute">
<origin
xyz="0 0 -0.008"
rpy="1.5708 0 0" />
<parent link="base_link" />
<child link="Link_1" />
<axis
xyz="0 1 0" />
<limit
lower="0"
upper="3.14"
effort="0"
velocity="0" />
</joint>
我将限制部分更改为:
<limit
lower="0"
upper="3.14"
effort="2"
velocity="2.0" />
我还有其他问题,比如非常烦人的颤抖(我认为这是来自努力值),但它不适合这个主题。