演示视频:Moveit+Gazebo:搭建双臂仿真平台(方案二)_哔哩哔哩_bilibili

实现效果如上图所示,有两个rviz界面分别展示两条臂的运动,gazebo中同步rviz中的运动。

先说一下方案二的大致思路:在两个命名空间下启动两个move group节点分别控制左臂和右臂,然后启动gazebo并添加需要的控制器,最后编写中间节点实现moveit和gazebo的通信。

不能通过之前单臂moveit+gazebo的方法(见往期博文)实现moveit+gazebo的联合仿真,因为在两个命名空间下,moveit和gazebo的通信受到影响,需要手动建立moveit到gazebo的通信。

方案二具有自身的优点:能够并行的控制两个机械臂,解决了方案一中两个机械臂的规划总是同时开始同时结束的问题。

方案二也具有问题,两个机械臂的move group节点是互相不知道对方的存在的,这可能导致碰撞的问题。

下面开始介绍方案二的探索实现过程。

首先正常启动机械臂 moveit_config包中的demo.launch

通过命令rqt_graph查看节点图

打开demo.launch文件,在图中所示的地方添加<group>标签,主要目的是添加命名空间namespace,使得可以启动多个move group节点。

再次启动demo.launch文件,命令roslaunch right_arm_moveit_config demo.launch

再次查看节点图,可以看到,demo.launch 中启动的所有节点都在right_arm命名空间下正常运行。这就说明同时启动左臂和右臂的move group是可行的。

那么对于左臂我们也进行上述操作,同时启动左臂和右臂的demo.launch后,查看节点图。

这里可以看到,除了/tf话题,其他节点和话题都在各自的命名空间下正常运行,互相没有影响,对于/tf话题,这里我的解决方法是左臂和右臂的URDF或XACRO中各自link和joint不能相同,相同就会使move group不能分辨,可以在编写urdf或xacro时在每个臂的link和joint前都加上right_arm或left_arm的前缀,在rviz中进行规划,可以看到两臂都能正常规划,二者没有互相影响,可以实现并行的控制。

这里给出左臂和右臂的urdf文件,除此之外还需要安装franka-description包,安装该包的操作以及用moveit setup assistant的操作这里不再赘述,有很多教程都方便查找,当然最推荐的是moveit的官方教程。

<?xml version="1.0" ?>
<!-- =================================================================================== -->
<!-- |    This document was autogenerated by xacro from left_arm.urdf.xacro               | -->
<!-- |    EDITING THIS FILE BY HAND IS NOT RECOMMENDED                                 | -->
<!-- =================================================================================== -->
<robot name="left_arm"><!-- sub-link defining detailed meshes for collision with environment --><link name="left_arm_link0"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link0.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link0.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-0.041018 -0.00014 0.049974"/><mass value="0.629769"/><inertia ixx="0.00315" ixy="8.2904e-07" ixz="0.00015" iyy="0.00388" iyz="8.2299e-06" izz="0.004285"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="left_arm_link0_sc"></link><!-- fixed joint between both sub-links --><joint name="left_arm_link0_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="left_arm_link0"/><child link="left_arm_link0_sc"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="left_arm_link1"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link1.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link1.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="0.003875 0.002081 -0.04762"/><mass value="4.970684"/><inertia ixx="0.70337" ixy="-0.000139" ixz="0.006772" iyy="0.70661" iyz="0.019169" izz="0.009117"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="left_arm_link1_sc"></link><!-- fixed joint between both sub-links --><joint name="left_arm_link1_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="left_arm_link1"/><child link="left_arm_link1_sc"/></joint><joint name="left_arm_joint1" type="revolute"><origin rpy="0 0 0" xyz="0 0 0.333"/><parent link="left_arm_link0"/><child link="left_arm_link1"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-2.8973" upper="2.8973" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="left_arm_link2"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link2.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link2.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-0.003141 -0.02872  0.003495"/><mass value="0.646926"/><inertia ixx="0.007962" ixy="-0.003925" ixz="0.010254" iyy="0.02811" iyz="0.000704" izz="0.025995"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="left_arm_link2_sc"></link><!-- fixed joint between both sub-links --><joint name="left_arm_link2_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="left_arm_link2"/><child link="left_arm_link2_sc"/></joint><joint name="left_arm_joint2" type="revolute"><origin rpy="-1.5707963267948966 0 0" xyz="0 0 0"/><parent link="left_arm_link1"/><child link="left_arm_link2"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-1.7628" upper="1.7628" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-1.7628" soft_upper_limit="1.7628"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="left_arm_link3"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link3.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link3.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="2.7518e-02 3.9252e-02 -6.6502e-02"/><mass value="3.228604"/><inertia ixx="0.037242" ixy="-0.004761" ixz="-0.011396" iyy="0.036155" iyz="-0.012805" izz="0.01083"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="left_arm_link3_sc"></link><!-- fixed joint between both sub-links --><joint name="left_arm_link3_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="left_arm_link3"/><child link="left_arm_link3_sc"/></joint><joint name="left_arm_joint3" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0 -0.316 0"/><parent link="left_arm_link2"/><child link="left_arm_link3"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-2.8973" upper="2.8973" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="left_arm_link4"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link4.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link4.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-5.317e-02 1.04419e-01 2.7454e-02"/><mass value="3.587895"/><inertia ixx="0.025853" ixy="0.007796" ixz="-0.001332" iyy="0.019552" iyz="0.008641" izz="0.028323"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="left_arm_link4_sc"></link><!-- fixed joint between both sub-links --><joint name="left_arm_link4_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="left_arm_link4"/><child link="left_arm_link4_sc"/></joint><joint name="left_arm_joint4" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0.0825 0 0"/><parent link="left_arm_link3"/><child link="left_arm_link4"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-3.0718" upper="-0.0698" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-3.0718" soft_upper_limit="-0.0698"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="left_arm_link5"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link5.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link5.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-1.1953e-02 4.1065e-02 -3.8437e-02"/><mass value="1.225946"/><inertia ixx="0.035549" ixy="-0.002117" ixz="-0.004037" iyy="0.029474" iyz="0.000229" izz="0.008627"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="left_arm_link5_sc"></link><!-- fixed joint between both sub-links --><joint name="left_arm_link5_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="left_arm_link5"/><child link="left_arm_link5_sc"/></joint><joint name="left_arm_joint5" type="revolute"><origin rpy="-1.5707963267948966 0 0" xyz="-0.0825 0.384 0"/><parent link="left_arm_link4"/><child link="left_arm_link5"/><axis xyz="0 0 1"/><limit effort="12.0" lower="-2.8973" upper="2.8973" velocity="2.61"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="left_arm_link6"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link6.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link6.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="6.0149e-02 -1.4117e-02 -1.0517e-02"/><mass value="1.666555"/><inertia ixx="0.001964" ixy="0.000109" ixz="-0.001158" iyy="0.004354" iyz="0.000341" izz="0.005433"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="left_arm_link6_sc"></link><!-- fixed joint between both sub-links --><joint name="left_arm_link6_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="left_arm_link6"/><child link="left_arm_link6_sc"/></joint><joint name="left_arm_joint6" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/><parent link="left_arm_link5"/><child link="left_arm_link6"/><axis xyz="0 0 1"/><limit effort="12.0" lower="-0.0175" upper="3.7525" velocity="2.61"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-0.0175" soft_upper_limit="3.7525"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="left_arm_link7"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link7.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link7.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="1.0517e-02 -4.252e-03 6.1597e-02"/><mass value="0.735522"/><inertia ixx="0.012516" ixy="-0.000428" ixz="-0.001196" iyy="0.010027" iyz="-0.000741" izz="0.004815"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="left_arm_link7_sc"></link><!-- fixed joint between both sub-links --><joint name="left_arm_link7_sc_joint" type="fixed"><origin rpy="0 0 0.7853981633974483"/><parent link="left_arm_link7"/><child link="left_arm_link7_sc"/></joint><joint name="left_arm_joint7" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0.088 0 0"/><parent link="left_arm_link6"/><child link="left_arm_link7"/><axis xyz="0 0 1"/><limit effort="12.0" lower="-2.8973" upper="2.8973" velocity="2.61"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><link name="left_arm_link8"/><joint name="left_arm_joint8" type="fixed"><origin rpy="0 0 0" xyz="0 0 0.107"/><parent link="left_arm_link7"/><child link="left_arm_link8"/></joint><!-- Gazebo requires a joint to a link called "world" for statically mounted robots --><link name="world"/><joint name="world_joint" type="fixed"><origin rpy="0 0 0" xyz="0 0 0"/><parent link="world"/><child link="left_arm_link0"/></joint><gazebo reference="left_arm_joint1"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="left_arm_joint1_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="left_arm_joint1"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="left_arm_joint1_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="left_arm_joint2"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="left_arm_joint2_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="left_arm_joint2"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="left_arm_joint2_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="left_arm_joint3"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="left_arm_joint3_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="left_arm_joint3"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="left_arm_joint3_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="left_arm_joint4"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="left_arm_joint4_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="left_arm_joint4"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="left_arm_joint4_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="left_arm_joint5"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="left_arm_joint5_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="left_arm_joint5"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="left_arm_joint5_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="left_arm_joint6"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="left_arm_joint6_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="left_arm_joint6"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="left_arm_joint6_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="left_arm_joint7"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="left_arm_joint7_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="left_arm_joint7"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="left_arm_joint7_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="left_arm_joint1"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="left_arm_joint1_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="left_arm_joint1"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></joint><actuator name="left_arm_joint1_motor"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></actuator></transmission><gazebo reference="left_arm_joint2"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="left_arm_joint2_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="left_arm_joint2"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></joint><actuator name="left_arm_joint2_motor"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></actuator></transmission><gazebo reference="left_arm_joint3"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="left_arm_joint3_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="left_arm_joint3"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></joint><actuator name="left_arm_joint3_motor"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></actuator></transmission><gazebo reference="left_arm_joint4"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="left_arm_joint4_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="left_arm_joint4"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></joint><actuator name="left_arm_joint4_motor"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></actuator></transmission><gazebo reference="left_arm_joint5"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="left_arm_joint5_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="left_arm_joint5"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></joint><actuator name="left_arm_joint5_motor"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></actuator></transmission><gazebo reference="left_arm_joint6"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="left_arm_joint6_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="left_arm_joint6"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></joint><actuator name="left_arm_joint6_motor"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></actuator></transmission><gazebo reference="left_arm_joint7"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="left_arm_joint7_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="left_arm_joint7"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></joint><actuator name="left_arm_joint7_motor"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></actuator></transmission><gazebo reference="left_arm_joint1"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="left_arm_joint1_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="left_arm_joint1"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></joint><actuator name="left_arm_joint1_motor"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></actuator></transmission><gazebo reference="left_arm_joint2"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="left_arm_joint2_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="left_arm_joint2"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></joint><actuator name="left_arm_joint2_motor"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></actuator></transmission><gazebo reference="left_arm_joint3"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="left_arm_joint3_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="left_arm_joint3"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></joint><actuator name="left_arm_joint3_motor"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></actuator></transmission><gazebo reference="left_arm_joint4"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="left_arm_joint4_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="left_arm_joint4"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></joint><actuator name="left_arm_joint4_motor"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></actuator></transmission><gazebo reference="left_arm_joint5"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="left_arm_joint5_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="left_arm_joint5"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></joint><actuator name="left_arm_joint5_motor"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></actuator></transmission><gazebo reference="left_arm_joint6"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="left_arm_joint6_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="left_arm_joint6"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></joint><actuator name="left_arm_joint6_motor"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></actuator></transmission><gazebo reference="left_arm_joint7"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="left_arm_joint7_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="left_arm_joint7"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></joint><actuator name="left_arm_joint7_motor"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></actuator></transmission><transmission name="left_arm_franka_state"><type>franka_hw/FrankaStateInterface</type><joint name="left_arm_joint1"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></joint><joint name="left_arm_joint2"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></joint><joint name="left_arm_joint3"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></joint><joint name="left_arm_joint4"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></joint><joint name="left_arm_joint5"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></joint><joint name="left_arm_joint6"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></joint><joint name="left_arm_joint7"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></joint><actuator name="left_arm_motor1"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></actuator><actuator name="left_arm_motor2"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></actuator><actuator name="left_arm_motor3"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></actuator><actuator name="left_arm_motor4"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></actuator><actuator name="left_arm_motor5"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></actuator><actuator name="left_arm_motor6"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></actuator><actuator name="left_arm_motor7"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></actuator></transmission><transmission name="left_arm_franka_model"><type>franka_hw/FrankaModelInterface</type><joint name="left_arm_joint1"><role>root</role><hardwareInterface>franka_hw/FrankaModelInterface</hardwareInterface></joint><joint name="left_arm_joint8"><role>tip</role><hardwareInterface>franka_hw/FrankaModelInterface</hardwareInterface></joint><actuator name="left_arm_joint1_motor_root"><hardwareInterface>franka_hw/FrankaModelInterface</hardwareInterface></actuator><actuator name="left_arm_joint8_motor_tip"><hardwareInterface>franka_hw/FrankaModelInterface</hardwareInterface></actuator></transmission><gazebo><plugin filename="libgazebo_ros_control.so" name="gazebo_ros_control"><controlPeriod>0.001</controlPeriod><robotSimType>franka_gazebo/FrankaHWSim</robotSimType></plugin><self_collide>true</self_collide></gazebo>
</robot>
<?xml version="1.0" ?>
<!-- =================================================================================== -->
<!-- |    This document was autogenerated by xacro from right_arm.urdf.xacro               | -->
<!-- |    EDITING THIS FILE BY HAND IS NOT RECOMMENDED                                 | -->
<!-- =================================================================================== -->
<robot name="right_arm"><!-- sub-link defining detailed meshes for collision with environment --><link name="right_arm_link0"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link0.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link0.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-0.041018 -0.00014 0.049974"/><mass value="0.629769"/><inertia ixx="0.00315" ixy="8.2904e-07" ixz="0.00015" iyy="0.00388" iyz="8.2299e-06" izz="0.004285"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="right_arm_link0_sc"></link><!-- fixed joint between both sub-links --><joint name="right_arm_link0_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="right_arm_link0"/><child link="right_arm_link0_sc"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="right_arm_link1"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link1.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link1.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="0.003875 0.002081 -0.04762"/><mass value="4.970684"/><inertia ixx="0.70337" ixy="-0.000139" ixz="0.006772" iyy="0.70661" iyz="0.019169" izz="0.009117"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="right_arm_link1_sc"></link><!-- fixed joint between both sub-links --><joint name="right_arm_link1_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="right_arm_link1"/><child link="right_arm_link1_sc"/></joint><joint name="right_arm_joint1" type="revolute"><origin rpy="0 0 0" xyz="0 0 0.333"/><parent link="right_arm_link0"/><child link="right_arm_link1"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-2.8973" upper="2.8973" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="right_arm_link2"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link2.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link2.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-0.003141 -0.02872  0.003495"/><mass value="0.646926"/><inertia ixx="0.007962" ixy="-0.003925" ixz="0.010254" iyy="0.02811" iyz="0.000704" izz="0.025995"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="right_arm_link2_sc"></link><!-- fixed joint between both sub-links --><joint name="right_arm_link2_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="right_arm_link2"/><child link="right_arm_link2_sc"/></joint><joint name="right_arm_joint2" type="revolute"><origin rpy="-1.5707963267948966 0 0" xyz="0 0 0"/><parent link="right_arm_link1"/><child link="right_arm_link2"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-1.7628" upper="1.7628" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-1.7628" soft_upper_limit="1.7628"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="right_arm_link3"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link3.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link3.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="2.7518e-02 3.9252e-02 -6.6502e-02"/><mass value="3.228604"/><inertia ixx="0.037242" ixy="-0.004761" ixz="-0.011396" iyy="0.036155" iyz="-0.012805" izz="0.01083"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="right_arm_link3_sc"></link><!-- fixed joint between both sub-links --><joint name="right_arm_link3_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="right_arm_link3"/><child link="right_arm_link3_sc"/></joint><joint name="right_arm_joint3" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0 -0.316 0"/><parent link="right_arm_link2"/><child link="right_arm_link3"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-2.8973" upper="2.8973" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="right_arm_link4"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link4.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link4.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-5.317e-02 1.04419e-01 2.7454e-02"/><mass value="3.587895"/><inertia ixx="0.025853" ixy="0.007796" ixz="-0.001332" iyy="0.019552" iyz="0.008641" izz="0.028323"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="right_arm_link4_sc"></link><!-- fixed joint between both sub-links --><joint name="right_arm_link4_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="right_arm_link4"/><child link="right_arm_link4_sc"/></joint><joint name="right_arm_joint4" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0.0825 0 0"/><parent link="right_arm_link3"/><child link="right_arm_link4"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-3.0718" upper="-0.0698" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-3.0718" soft_upper_limit="-0.0698"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="right_arm_link5"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link5.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link5.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-1.1953e-02 4.1065e-02 -3.8437e-02"/><mass value="1.225946"/><inertia ixx="0.035549" ixy="-0.002117" ixz="-0.004037" iyy="0.029474" iyz="0.000229" izz="0.008627"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="right_arm_link5_sc"></link><!-- fixed joint between both sub-links --><joint name="right_arm_link5_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="right_arm_link5"/><child link="right_arm_link5_sc"/></joint><joint name="right_arm_joint5" type="revolute"><origin rpy="-1.5707963267948966 0 0" xyz="-0.0825 0.384 0"/><parent link="right_arm_link4"/><child link="right_arm_link5"/><axis xyz="0 0 1"/><limit effort="12.0" lower="-2.8973" upper="2.8973" velocity="2.61"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="right_arm_link6"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link6.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link6.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="6.0149e-02 -1.4117e-02 -1.0517e-02"/><mass value="1.666555"/><inertia ixx="0.001964" ixy="0.000109" ixz="-0.001158" iyy="0.004354" iyz="0.000341" izz="0.005433"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="right_arm_link6_sc"></link><!-- fixed joint between both sub-links --><joint name="right_arm_link6_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="right_arm_link6"/><child link="right_arm_link6_sc"/></joint><joint name="right_arm_joint6" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/><parent link="right_arm_link5"/><child link="right_arm_link6"/><axis xyz="0 0 1"/><limit effort="12.0" lower="-0.0175" upper="3.7525" velocity="2.61"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-0.0175" soft_upper_limit="3.7525"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="right_arm_link7"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link7.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link7.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="1.0517e-02 -4.252e-03 6.1597e-02"/><mass value="0.735522"/><inertia ixx="0.012516" ixy="-0.000428" ixz="-0.001196" iyy="0.010027" iyz="-0.000741" izz="0.004815"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="right_arm_link7_sc"></link><!-- fixed joint between both sub-links --><joint name="right_arm_link7_sc_joint" type="fixed"><origin rpy="0 0 0.7853981633974483"/><parent link="right_arm_link7"/><child link="right_arm_link7_sc"/></joint><joint name="right_arm_joint7" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0.088 0 0"/><parent link="right_arm_link6"/><child link="right_arm_link7"/><axis xyz="0 0 1"/><limit effort="12.0" lower="-2.8973" upper="2.8973" velocity="2.61"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><link name="right_arm_link8"/><joint name="right_arm_joint8" type="fixed"><origin rpy="0 0 0" xyz="0 0 0.107"/><parent link="right_arm_link7"/><child link="right_arm_link8"/></joint><!-- Gazebo requires a joint to a link called "world" for statically mounted robots --><link name="world"/><joint name="world_joint" type="fixed"><origin rpy="0 0 0" xyz="0 0 0"/><parent link="world"/><child link="right_arm_link0"/></joint><gazebo reference="right_arm_joint1"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="right_arm_joint1_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="right_arm_joint1"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="right_arm_joint1_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="right_arm_joint2"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="right_arm_joint2_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="right_arm_joint2"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="right_arm_joint2_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="right_arm_joint3"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="right_arm_joint3_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="right_arm_joint3"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="right_arm_joint3_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="right_arm_joint4"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="right_arm_joint4_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="right_arm_joint4"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="right_arm_joint4_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="right_arm_joint5"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="right_arm_joint5_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="right_arm_joint5"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="right_arm_joint5_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="right_arm_joint6"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="right_arm_joint6_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="right_arm_joint6"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="right_arm_joint6_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="right_arm_joint7"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="right_arm_joint7_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="right_arm_joint7"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="right_arm_joint7_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="right_arm_joint1"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="right_arm_joint1_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="right_arm_joint1"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></joint><actuator name="right_arm_joint1_motor"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></actuator></transmission><gazebo reference="right_arm_joint2"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="right_arm_joint2_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="right_arm_joint2"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></joint><actuator name="right_arm_joint2_motor"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></actuator></transmission><gazebo reference="right_arm_joint3"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="right_arm_joint3_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="right_arm_joint3"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></joint><actuator name="right_arm_joint3_motor"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></actuator></transmission><gazebo reference="right_arm_joint4"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="right_arm_joint4_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="right_arm_joint4"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></joint><actuator name="right_arm_joint4_motor"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></actuator></transmission><gazebo reference="right_arm_joint5"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="right_arm_joint5_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="right_arm_joint5"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></joint><actuator name="right_arm_joint5_motor"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></actuator></transmission><gazebo reference="right_arm_joint6"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="right_arm_joint6_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="right_arm_joint6"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></joint><actuator name="right_arm_joint6_motor"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></actuator></transmission><gazebo reference="right_arm_joint7"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="right_arm_joint7_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="right_arm_joint7"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></joint><actuator name="right_arm_joint7_motor"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></actuator></transmission><gazebo reference="right_arm_joint1"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="right_arm_joint1_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="right_arm_joint1"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></joint><actuator name="right_arm_joint1_motor"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></actuator></transmission><gazebo reference="right_arm_joint2"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="right_arm_joint2_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="right_arm_joint2"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></joint><actuator name="right_arm_joint2_motor"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></actuator></transmission><gazebo reference="right_arm_joint3"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="right_arm_joint3_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="right_arm_joint3"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></joint><actuator name="right_arm_joint3_motor"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></actuator></transmission><gazebo reference="right_arm_joint4"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="right_arm_joint4_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="right_arm_joint4"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></joint><actuator name="right_arm_joint4_motor"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></actuator></transmission><gazebo reference="right_arm_joint5"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="right_arm_joint5_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="right_arm_joint5"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></joint><actuator name="right_arm_joint5_motor"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></actuator></transmission><gazebo reference="right_arm_joint6"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="right_arm_joint6_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="right_arm_joint6"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></joint><actuator name="right_arm_joint6_motor"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></actuator></transmission><gazebo reference="right_arm_joint7"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="right_arm_joint7_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="right_arm_joint7"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></joint><actuator name="right_arm_joint7_motor"><hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface></actuator></transmission><transmission name="right_arm_franka_state"><type>franka_hw/FrankaStateInterface</type><joint name="right_arm_joint1"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></joint><joint name="right_arm_joint2"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></joint><joint name="right_arm_joint3"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></joint><joint name="right_arm_joint4"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></joint><joint name="right_arm_joint5"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></joint><joint name="right_arm_joint6"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></joint><joint name="right_arm_joint7"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></joint><actuator name="right_arm_motor1"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></actuator><actuator name="right_arm_motor2"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></actuator><actuator name="right_arm_motor3"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></actuator><actuator name="right_arm_motor4"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></actuator><actuator name="right_arm_motor5"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></actuator><actuator name="right_arm_motor6"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></actuator><actuator name="right_arm_motor7"><hardwareInterface>franka_hw/FrankaStateInterface</hardwareInterface></actuator></transmission><transmission name="right_arm_franka_model"><type>franka_hw/FrankaModelInterface</type><joint name="right_arm_joint1"><role>root</role><hardwareInterface>franka_hw/FrankaModelInterface</hardwareInterface></joint><joint name="right_arm_joint8"><role>tip</role><hardwareInterface>franka_hw/FrankaModelInterface</hardwareInterface></joint><actuator name="right_arm_joint1_motor_root"><hardwareInterface>franka_hw/FrankaModelInterface</hardwareInterface></actuator><actuator name="right_arm_joint8_motor_tip"><hardwareInterface>franka_hw/FrankaModelInterface</hardwareInterface></actuator></transmission><gazebo><plugin filename="libgazebo_ros_control.so" name="gazebo_ros_control"><controlPeriod>0.001</controlPeriod><robotSimType>franka_gazebo/FrankaHWSim</robotSimType></plugin><self_collide>true</self_collide></gazebo>
</robot>

下一步我们来解决gazebo,先给出launch文件,这个launch文件的主要作用就是启动gazebo,加载机器人的模型,加载控制器。

<?xml version="1.0"?>
<launch><!-- Launch empty Gazebo world --><include file="$(find gazebo_ros)/launch/empty_world.launch"><arg name="use_sim_time" value="true" /><arg name="gui" value="true" /><arg name="paused" value="false" /><arg name="debug" value="false" /></include><param name="robot_description" command="$(find xacro)/xacro  '$(find panda_dual_arms)/robot_description/dual_panda_without_hand.urdf'" /><node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen" args="-urdf -param robot_description -model panda_dual_arms" /><rosparam file="$(find panda_dual_arms)/config/dual_arms_gazebo_controller.yaml" command="load" /><node name="controller_spawner" pkg="controller_manager" type="spawner"  args="joint_state_controller right_arm_trajectory_controller left_arm_trajectory_controller" respawn="false" output="screen" /><!-- Robot state publisher --><node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher"><param name="publish_frequency" type="double" value="50.0" /><param name="tf_prefix" type="string" value="" /></node></launch>

注意这里加载的机器人模型是在一个文件中编写了双臂(包括一个简单的工作台),而之前moveit setup assitant生成的moveit config包,我们用了两个文件编写两个机械臂的urdf。

下面给出这里需要的文件。

<?xml version="1.0" ?>
<!-- =================================================================================== -->
<!-- |    This document was autogenerated by xacro from dual_panda_without_hand.urdf.xacro | -->
<!-- |    EDITING THIS FILE BY HAND IS NOT RECOMMENDED                                 | -->
<!-- =================================================================================== -->
<robot name="panda_multiple_arms"><link name="world"/><!-- box shaped table as base for the 2 Pandas --><link name="base"><visual><origin rpy="0 0 0" xyz="0 0 0.5"/><geometry><box size="1 2 1"/></geometry><material name="White"><color rgba="1.0 1.0 1.0 1.0"/></material></visual><collision><origin rpy="0 0 0" xyz="0 0 0.5"/><geometry><box size="1 2 1"/></geometry></collision><inertial><origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.0"/><mass value="10.0"/><inertia ixx="0.001" ixy="0.0" ixz="0.001" iyy="0.0" iyz="0.0" izz="0.001"/></inertial></link><joint name="base_to_world" type="fixed"><parent link="world"/><child link="base"/><origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.0"/></joint><joint name="d_right_arm_joint_base" type="fixed"><parent link="base"/><child link="d_right_arm_link0"/><origin rpy="0 0 0" xyz="0 -0.5 1"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_right_arm_link0"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link0.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link0.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-0.041018 -0.00014 0.049974"/><mass value="0.629769"/><inertia ixx="0.00315" ixy="8.2904e-07" ixz="0.00015" iyy="0.00388" iyz="8.2299e-06" izz="0.004285"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_right_arm_link0_sc"></link><!-- fixed joint between both sub-links --><joint name="d_right_arm_link0_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_right_arm_link0"/><child link="d_right_arm_link0_sc"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_right_arm_link1"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link1.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link1.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="0.003875 0.002081 -0.04762"/><mass value="4.970684"/><inertia ixx="0.70337" ixy="-0.000139" ixz="0.006772" iyy="0.70661" iyz="0.019169" izz="0.009117"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_right_arm_link1_sc"></link><!-- fixed joint between both sub-links --><joint name="d_right_arm_link1_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_right_arm_link1"/><child link="d_right_arm_link1_sc"/></joint><joint name="d_right_arm_joint1" type="revolute"><origin rpy="0 0 0" xyz="0 0 0.333"/><parent link="d_right_arm_link0"/><child link="d_right_arm_link1"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-2.8973" upper="2.8973" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_right_arm_link2"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link2.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link2.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-0.003141 -0.02872  0.003495"/><mass value="0.646926"/><inertia ixx="0.007962" ixy="-0.003925" ixz="0.010254" iyy="0.02811" iyz="0.000704" izz="0.025995"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_right_arm_link2_sc"></link><!-- fixed joint between both sub-links --><joint name="d_right_arm_link2_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_right_arm_link2"/><child link="d_right_arm_link2_sc"/></joint><joint name="d_right_arm_joint2" type="revolute"><origin rpy="-1.5707963267948966 0 0" xyz="0 0 0"/><parent link="d_right_arm_link1"/><child link="d_right_arm_link2"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-1.7628" upper="1.7628" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-1.7628" soft_upper_limit="1.7628"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_right_arm_link3"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link3.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link3.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="2.7518e-02 3.9252e-02 -6.6502e-02"/><mass value="3.228604"/><inertia ixx="0.037242" ixy="-0.004761" ixz="-0.011396" iyy="0.036155" iyz="-0.012805" izz="0.01083"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_right_arm_link3_sc"></link><!-- fixed joint between both sub-links --><joint name="d_right_arm_link3_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_right_arm_link3"/><child link="d_right_arm_link3_sc"/></joint><joint name="d_right_arm_joint3" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0 -0.316 0"/><parent link="d_right_arm_link2"/><child link="d_right_arm_link3"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-2.8973" upper="2.8973" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_right_arm_link4"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link4.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link4.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-5.317e-02 1.04419e-01 2.7454e-02"/><mass value="3.587895"/><inertia ixx="0.025853" ixy="0.007796" ixz="-0.001332" iyy="0.019552" iyz="0.008641" izz="0.028323"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_right_arm_link4_sc"></link><!-- fixed joint between both sub-links --><joint name="d_right_arm_link4_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_right_arm_link4"/><child link="d_right_arm_link4_sc"/></joint><joint name="d_right_arm_joint4" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0.0825 0 0"/><parent link="d_right_arm_link3"/><child link="d_right_arm_link4"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-3.0718" upper="-0.0698" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-3.0718" soft_upper_limit="-0.0698"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_right_arm_link5"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link5.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/mes<?xml version="1.0" ?>
<!-- =================================================================================== -->
<!-- |    This document was autogenerated by xacro from dual_panda_without_hand.urdf.xacro | -->
<!-- |    EDITING THIS FILE BY HAND IS NOT RECOMMENDED                                 | -->
<!-- =================================================================================== -->
<robot name="panda_multiple_arms"><link name="world"/><!-- box shaped table as base for the 2 Pandas --><link name="base"><visual><origin rpy="0 0 0" xyz="0 0 0.5"/><geometry><box size="1 2 1"/></geometry><material name="White"><color rgba="1.0 1.0 1.0 1.0"/></material></visual><collision><origin rpy="0 0 0" xyz="0 0 0.5"/><geometry><box size="1 2 1"/></geometry></collision><inertial><origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.0"/><mass value="10.0"/><inertia ixx="0.001" ixy="0.0" ixz="0.001" iyy="0.0" iyz="0.0" izz="0.001"/></inertial></link><joint name="base_to_world" type="fixed"><parent link="world"/><child link="base"/><origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.0"/></joint><joint name="d_right_arm_joint_base" type="fixed"><parent link="base"/><child link="d_right_arm_link0"/><origin rpy="0 0 0" xyz="0 -0.5 1"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_right_arm_link0"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link0.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link0.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-0.041018 -0.00014 0.049974"/><mass value="0.629769"/><inertia ixx="0.00315" ixy="8.2904e-07" ixz="0.00015" iyy="0.00388" iyz="8.2299e-06" izz="0.004285"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_right_arm_link0_sc"></link><!-- fixed joint between both sub-links --><joint name="d_right_arm_link0_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_right_arm_link0"/><child link="d_right_arm_link0_sc"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_right_arm_link1"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link1.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link1.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="0.003875 0.002081 -0.04762"/><mass value="4.970684"/><inertia ixx="0.70337" ixy="-0.000139" ixz="0.006772" iyy="0.70661" iyz="0.019169" izz="0.009117"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_right_arm_link1_sc"></link><!-- fixed joint between both sub-links --><joint name="d_right_arm_link1_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_right_arm_link1"/><child link="d_right_arm_link1_sc"/></joint><joint name="d_right_arm_joint1" type="revolute"><origin rpy="0 0 0" xyz="0 0 0.333"/><parent link="d_right_arm_link0"/><child link="d_right_arm_link1"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-2.8973" upper="2.8973" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_right_arm_link2"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link2.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link2.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-0.003141 -0.02872  0.003495"/><mass value="0.646926"/><inertia ixx="0.007962" ixy="-0.003925" ixz="0.010254" iyy="0.02811" iyz="0.000704" izz="0.025995"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_right_arm_link2_sc"></link><!-- fixed joint between both sub-links --><joint name="d_right_arm_link2_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_right_arm_link2"/><child link="d_right_arm_link2_sc"/></joint><joint name="d_right_arm_joint2" type="revolute"><origin rpy="-1.5707963267948966 0 0" xyz="0 0 0"/><parent link="d_right_arm_link1"/><child link="d_right_arm_link2"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-1.7628" upper="1.7628" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-1.7628" soft_upper_limit="1.7628"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_right_arm_link3"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link3.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link3.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="2.7518e-02 3.9252e-02 -6.6502e-02"/><mass value="3.228604"/><inertia ixx="0.037242" ixy="-0.004761" ixz="-0.011396" iyy="0.036155" iyz="-0.012805" izz="0.01083"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_right_arm_link3_sc"></link><!-- fixed joint between both sub-links --><joint name="d_right_arm_link3_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_right_arm_link3"/><child link="d_right_arm_link3_sc"/></joint><joint name="d_right_arm_joint3" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0 -0.316 0"/><parent link="d_right_arm_link2"/><child link="d_right_arm_link3"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-2.8973" upper="2.8973" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_right_arm_link4"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link4.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link4.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-5.317e-02 1.04419e-01 2.7454e-02"/><mass value="3.587895"/><inertia ixx="0.025853" ixy="0.007796" ixz="-0.001332" iyy="0.019552" iyz="0.008641" izz="0.028323"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_right_arm_link4_sc"></link><!-- fixed joint between both sub-links --><joint name="d_right_arm_link4_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_right_arm_link4"/><child link="d_right_arm_link4_sc"/></joint><joint name="d_right_arm_joint4" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0.0825 0 0"/><parent link="d_right_arm_link3"/><child link="d_right_arm_link4"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-3.0718" upper="-0.0698" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-3.0718" soft_upper_limit="-0.0698"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_right_arm_link5"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link5.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link5.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-1.1953e-02 4.1065e-02 -3.8437e-02"/><mass value="1.225946"/><inertia ixx="0.035549" ixy="-0.002117" ixz="-0.004037" iyy="0.029474" iyz="0.000229" izz="0.008627"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_right_arm_link5_sc"></link><!-- fixed joint between both sub-links --><joint name="d_right_arm_link5_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_right_arm_link5"/><child link="d_right_arm_link5_sc"/></joint><joint name="d_right_arm_joint5" type="revolute"><origin rpy="-1.5707963267948966 0 0" xyz="-0.0825 0.384 0"/><parent link="d_right_arm_link4"/><child link="d_right_arm_link5"/><axis xyz="0 0 1"/><limit effort="12.0" lower="-2.8973" upper="2.8973" velocity="2.61"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_right_arm_link6"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link6.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link6.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="6.0149e-02 -1.4117e-02 -1.0517e-02"/><mass value="1.666555"/><inertia ixx="0.001964" ixy="0.000109" ixz="-0.001158" iyy="0.004354" iyz="0.000341" izz="0.005433"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_right_arm_link6_sc"></link><!-- fixed joint between both sub-links --><joint name="d_right_arm_link6_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_right_arm_link6"/><child link="d_right_arm_link6_sc"/></joint><joint name="d_right_arm_joint6" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/><parent link="d_right_arm_link5"/><child link="d_right_arm_link6"/><axis xyz="0 0 1"/><limit effort="12.0" lower="-0.0175" upper="3.7525" velocity="2.61"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-0.0175" soft_upper_limit="3.7525"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_right_arm_link7"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link7.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link7.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="1.0517e-02 -4.252e-03 6.1597e-02"/><mass value="0.735522"/><inertia ixx="0.012516" ixy="-0.000428" ixz="-0.001196" iyy="0.010027" iyz="-0.000741" izz="0.004815"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_right_arm_link7_sc"></link><!-- fixed joint between both sub-links --><joint name="d_right_arm_link7_sc_joint" type="fixed"><origin rpy="0 0 0.7853981633974483"/><parent link="d_right_arm_link7"/><child link="d_right_arm_link7_sc"/></joint><joint name="d_right_arm_joint7" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0.088 0 0"/><parent link="d_right_arm_link6"/><child link="d_right_arm_link7"/><axis xyz="0 0 1"/><limit effort="12.0" lower="-2.8973" upper="2.8973" velocity="2.61"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><link name="d_right_arm_link8"/><joint name="d_right_arm_joint8" type="fixed"><origin rpy="0 0 0" xyz="0 0 0.107"/><parent link="d_right_arm_link7"/><child link="d_right_arm_link8"/></joint><joint name="d_left_arm_joint_base" type="fixed"><parent link="base"/><child link="d_left_arm_link0"/><origin rpy="0 0 0" xyz="0 0.5 1"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_left_arm_link0"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link0.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link0.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-0.041018 -0.00014 0.049974"/><mass value="0.629769"/><inertia ixx="0.00315" ixy="8.2904e-07" ixz="0.00015" iyy="0.00388" iyz="8.2299e-06" izz="0.004285"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_left_arm_link0_sc"></link><!-- fixed joint between both sub-links --><joint name="d_left_arm_link0_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_left_arm_link0"/><child link="d_left_arm_link0_sc"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_left_arm_link1"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link1.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link1.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="0.003875 0.002081 -0.04762"/><mass value="4.970684"/><inertia ixx="0.70337" ixy="-0.000139" ixz="0.006772" iyy="0.70661" iyz="0.019169" izz="0.009117"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_left_arm_link1_sc"></link><!-- fixed joint between both sub-links --><joint name="d_left_arm_link1_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_left_arm_link1"/><child link="d_left_arm_link1_sc"/></joint><joint name="d_left_arm_joint1" type="revolute"><origin rpy="0 0 0" xyz="0 0 0.333"/><parent link="d_left_arm_link0"/><child link="d_left_arm_link1"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-2.8973" upper="2.8973" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_left_arm_link2"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link2.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link2.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-0.003141 -0.02872  0.003495"/><mass value="0.646926"/><inertia ixx="0.007962" ixy="-0.003925" ixz="0.010254" iyy="0.02811" iyz="0.000704" izz="0.025995"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_left_arm_link2_sc"></link><!-- fixed joint between both sub-links --><joint name="d_left_arm_link2_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_left_arm_link2"/><child link="d_left_arm_link2_sc"/></joint><joint name="d_left_arm_joint2" type="revolute"><origin rpy="-1.5707963267948966 0 0" xyz="0 0 0"/><parent link="d_left_arm_link1"/><child link="d_left_arm_link2"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-1.7628" upper="1.7628" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-1.7628" soft_upper_limit="1.7628"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_left_arm_link3"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link3.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link3.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="2.7518e-02 3.9252e-02 -6.6502e-02"/><mass value="3.228604"/><inertia ixx="0.037242" ixy="-0.004761" ixz="-0.011396" iyy="0.036155" iyz="-0.012805" izz="0.01083"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_left_arm_link3_sc"></link><!-- fixed joint between both sub-links --><joint name="d_left_arm_link3_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_left_arm_link3"/><child link="d_left_arm_link3_sc"/></joint><joint name="d_left_arm_joint3" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0 -0.316 0"/><parent link="d_left_arm_link2"/><child link="d_left_arm_link3"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-2.8973" upper="2.8973" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_left_arm_link4"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link4.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link4.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-5.317e-02 1.04419e-01 2.7454e-02"/><mass value="3.587895"/><inertia ixx="0.025853" ixy="0.007796" ixz="-0.001332" iyy="0.019552" iyz="0.008641" izz="0.028323"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_left_arm_link4_sc"></link><!-- fixed joint between both sub-links --><joint name="d_left_arm_link4_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_left_arm_link4"/><child link="d_left_arm_link4_sc"/></joint><joint name="d_left_arm_joint4" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0.0825 0 0"/><parent link="d_left_arm_link3"/><child link="d_left_arm_link4"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-3.0718" upper="-0.0698" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-3.0718" soft_upper_limit="-0.0698"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_left_arm_link5"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link5.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link5.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-1.1953e-02 4.1065e-02 -3.8437e-02"/><mass value="1.225946"/><inertia ixx="0.035549" ixy="-0.002117" ixz="-0.004037" iyy="0.029474" iyz="0.000229" izz="0.008627"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_left_arm_link5_sc"></link><!-- fixed joint between both sub-links --><joint name="d_left_arm_link5_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_left_arm_link5"/><child link="d_left_arm_link5_sc"/></joint><joint name="d_left_arm_joint5" type="revolute"><origin rpy="-1.5707963267948966 0 0" xyz="-0.0825 0.384 0"/><parent link="d_left_arm_link4"/><child link="d_left_arm_link5"/><axis xyz="0 0 1"/><limit effort="12.0" lower="-2.8973" upper="2.8973" velocity="2.61"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_left_arm_link6"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link6.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link6.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="6.0149e-02 -1.4117e-02 -1.0517e-02"/><mass value="1.666555"/><inertia ixx="0.001964" ixy="0.000109" ixz="-0.001158" iyy="0.004354" iyz="0.000341" izz="0.005433"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_left_arm_link6_sc"></link><!-- fixed joint between both sub-links --><joint name="d_left_arm_link6_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_left_arm_link6"/><child link="d_left_arm_link6_sc"/></joint><joint name="d_left_arm_joint6" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/><parent link="d_left_arm_link5"/><child link="d_left_arm_link6"/><axis xyz="0 0 1"/><limit effort="12.0" lower="-0.0175" upper="3.7525" velocity="2.61"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-0.0175" soft_upper_limit="3.7525"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_left_arm_link7"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link7.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link7.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="1.0517e-02 -4.252e-03 6.1597e-02"/><mass value="0.735522"/><inertia ixx="0.012516" ixy="-0.000428" ixz="-0.001196" iyy="0.010027" iyz="-0.000741" izz="0.004815"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_left_arm_link7_sc"></link><!-- fixed joint between both sub-links --><joint name="d_left_arm_link7_sc_joint" type="fixed"><origin rpy="0 0 0.7853981633974483"/><parent link="d_left_arm_link7"/><child link="d_left_arm_link7_sc"/></joint><joint name="d_left_arm_joint7" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0.088 0 0"/><parent link="d_left_arm_link6"/><child link="d_left_arm_link7"/><axis xyz="0 0 1"/><limit effort="12.0" lower="-2.8973" upper="2.8973" velocity="2.61"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><link name="d_left_arm_link8"/><joint name="d_left_arm_joint8" type="fixed"><origin rpy="0 0 0" xyz="0 0 0.107"/><parent link="d_left_arm_link7"/><child link="d_left_arm_link8"/></joint><gazebo reference="d_right_arm_joint1"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_right_arm_joint1_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_right_arm_joint1"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_right_arm_joint1_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_right_arm_joint2"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_right_arm_joint2_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_right_arm_joint2"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_right_arm_joint2_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_right_arm_joint3"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_right_arm_joint3_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_right_arm_joint3"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_right_arm_joint3_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_right_arm_joint4"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_right_arm_joint4_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_right_arm_joint4"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_right_arm_joint4_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_right_arm_joint5"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_right_arm_joint5_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_right_arm_joint5"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_right_arm_joint5_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_right_arm_joint6"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_right_arm_joint6_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_right_arm_joint6"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_right_arm_joint6_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_right_arm_joint7"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_right_arm_joint7_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_right_arm_joint7"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_right_arm_joint7_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_left_arm_joint1"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_left_arm_joint1_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_left_arm_joint1"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_left_arm_joint1_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_left_arm_joint2"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_left_arm_joint2_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_left_arm_joint2"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_left_arm_joint2_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_left_arm_joint3"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_left_arm_joint3_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_left_arm_joint3"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_left_arm_joint3_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_left_arm_joint4"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_left_arm_joint4_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_left_arm_joint4"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_left_arm_joint4_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_left_arm_joint5"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_left_arm_joint5_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_left_arm_joint5"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_left_arm_joint5_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_left_arm_joint6"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_left_arm_joint6_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_left_arm_joint6"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_left_arm_joint6_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_left_arm_joint7"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_left_arm_joint7_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_left_arm_joint7"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_left_arm_joint7_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><!-- load ros_control plugin --><gazebo><plugin filename="libgazebo_ros_control.so" name="gazebo_ros_control"/></gazebo>
</robot>
hes/collision/link5.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-1.1953e-02 4.1065e-02 -3.8437e-02"/><mass value="1.225946"/><inertia ixx="0.035549" ixy="-0.002117" ixz="-0.004037" iyy="0.029474" iyz="0.000229" izz="0.008627"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_right_arm_link5_sc"></link><!-- fixed joint between both sub-links --><joint name="d_right_arm_link5_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_right_arm_link5"/><child link="d_right_arm_link5_sc"/></joint><joint name="d_right_arm_joint5" type="revolute"><origin rpy="-1.5707963267948966 0 0" xyz="-0.0825 0.384 0"/><parent link="d_right_arm_link4"/><child link="d_right_arm_link5"/><axis xyz="0 0 1"/><limit effort="12.0" lower="-2.8973" upper="2.8973" velocity="2.61"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_right_arm_link6"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link6.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link6.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="6.0149e-02 -1.4117e-02 -1.0517e-02"/><mass value="1.666555"/><inertia ixx="0.001964" ixy="0.000109" ixz="-0.001158" iyy="0.004354" iyz="0.000341" izz="0.005433"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_right_arm_link6_sc"></link><!-- fixed joint between both sub-links --><joint name="d_right_arm_link6_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_right_arm_link6"/><child link="d_right_arm_link6_sc"/></joint><joint name="d_right_arm_joint6" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/><parent link="d_right_arm_link5"/><child link="d_right_arm_link6"/><axis xyz="0 0 1"/><limit effort="12.0" lower="-0.0175" upper="3.7525" velocity="2.61"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-0.0175" soft_upper_limit="3.7525"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_right_arm_link7"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link7.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link7.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="1.0517e-02 -4.252e-03 6.1597e-02"/><mass value="0.735522"/><inertia ixx="0.012516" ixy="-0.000428" ixz="-0.001196" iyy="0.010027" iyz="-0.000741" izz="0.004815"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_right_arm_link7_sc"></link><!-- fixed joint between both sub-links --><joint name="d_right_arm_link7_sc_joint" type="fixed"><origin rpy="0 0 0.7853981633974483"/><parent link="d_right_arm_link7"/><child link="d_right_arm_link7_sc"/></joint><joint name="d_right_arm_joint7" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0.088 0 0"/><parent link="d_right_arm_link6"/><child link="d_right_arm_link7"/><axis xyz="0 0 1"/><limit effort="12.0" lower="-2.8973" upper="2.8973" velocity="2.61"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><link name="d_right_arm_link8"/><joint name="d_right_arm_joint8" type="fixed"><origin rpy="0 0 0" xyz="0 0 0.107"/><parent link="d_right_arm_link7"/><child link="d_right_arm_link8"/></joint><joint name="d_left_arm_joint_base" type="fixed"><parent link="base"/><child link="d_left_arm_link0"/><origin rpy="0 0 0" xyz="0 0.5 1"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_left_arm_link0"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link0.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link0.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-0.041018 -0.00014 0.049974"/><mass value="0.629769"/><inertia ixx="0.00315" ixy="8.2904e-07" ixz="0.00015" iyy="0.00388" iyz="8.2299e-06" izz="0.004285"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_left_arm_link0_sc"></link><!-- fixed joint between both sub-links --><joint name="d_left_arm_link0_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_left_arm_link0"/><child link="d_left_arm_link0_sc"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_left_arm_link1"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link1.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link1.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="0.003875 0.002081 -0.04762"/><mass value="4.970684"/><inertia ixx="0.70337" ixy="-0.000139" ixz="0.006772" iyy="0.70661" iyz="0.019169" izz="0.009117"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_left_arm_link1_sc"></link><!-- fixed joint between both sub-links --><joint name="d_left_arm_link1_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_left_arm_link1"/><child link="d_left_arm_link1_sc"/></joint><joint name="d_left_arm_joint1" type="revolute"><origin rpy="0 0 0" xyz="0 0 0.333"/><parent link="d_left_arm_link0"/><child link="d_left_arm_link1"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-2.8973" upper="2.8973" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_left_arm_link2"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link2.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link2.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-0.003141 -0.02872  0.003495"/><mass value="0.646926"/><inertia ixx="0.007962" ixy="-0.003925" ixz="0.010254" iyy="0.02811" iyz="0.000704" izz="0.025995"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_left_arm_link2_sc"></link><!-- fixed joint between both sub-links --><joint name="d_left_arm_link2_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_left_arm_link2"/><child link="d_left_arm_link2_sc"/></joint><joint name="d_left_arm_joint2" type="revolute"><origin rpy="-1.5707963267948966 0 0" xyz="0 0 0"/><parent link="d_left_arm_link1"/><child link="d_left_arm_link2"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-1.7628" upper="1.7628" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-1.7628" soft_upper_limit="1.7628"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_left_arm_link3"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link3.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link3.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="2.7518e-02 3.9252e-02 -6.6502e-02"/><mass value="3.228604"/><inertia ixx="0.037242" ixy="-0.004761" ixz="-0.011396" iyy="0.036155" iyz="-0.012805" izz="0.01083"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_left_arm_link3_sc"></link><!-- fixed joint between both sub-links --><joint name="d_left_arm_link3_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_left_arm_link3"/><child link="d_left_arm_link3_sc"/></joint><joint name="d_left_arm_joint3" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0 -0.316 0"/><parent link="d_left_arm_link2"/><child link="d_left_arm_link3"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-2.8973" upper="2.8973" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_left_arm_link4"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link4.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link4.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-5.317e-02 1.04419e-01 2.7454e-02"/><mass value="3.587895"/><inertia ixx="0.025853" ixy="0.007796" ixz="-0.001332" iyy="0.019552" iyz="0.008641" izz="0.028323"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_left_arm_link4_sc"></link><!-- fixed joint between both sub-links --><joint name="d_left_arm_link4_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_left_arm_link4"/><child link="d_left_arm_link4_sc"/></joint><joint name="d_left_arm_joint4" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0.0825 0 0"/><parent link="d_left_arm_link3"/><child link="d_left_arm_link4"/><axis xyz="0 0 1"/><limit effort="87.0" lower="-3.0718" upper="-0.0698" velocity="2.175"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-3.0718" soft_upper_limit="-0.0698"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_left_arm_link5"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link5.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link5.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="-1.1953e-02 4.1065e-02 -3.8437e-02"/><mass value="1.225946"/><inertia ixx="0.035549" ixy="-0.002117" ixz="-0.004037" iyy="0.029474" iyz="0.000229" izz="0.008627"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_left_arm_link5_sc"></link><!-- fixed joint between both sub-links --><joint name="d_left_arm_link5_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_left_arm_link5"/><child link="d_left_arm_link5_sc"/></joint><joint name="d_left_arm_joint5" type="revolute"><origin rpy="-1.5707963267948966 0 0" xyz="-0.0825 0.384 0"/><parent link="d_left_arm_link4"/><child link="d_left_arm_link5"/><axis xyz="0 0 1"/><limit effort="12.0" lower="-2.8973" upper="2.8973" velocity="2.61"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_left_arm_link6"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link6.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link6.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="6.0149e-02 -1.4117e-02 -1.0517e-02"/><mass value="1.666555"/><inertia ixx="0.001964" ixy="0.000109" ixz="-0.001158" iyy="0.004354" iyz="0.000341" izz="0.005433"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_left_arm_link6_sc"></link><!-- fixed joint between both sub-links --><joint name="d_left_arm_link6_sc_joint" type="fixed"><origin rpy="0 0 0"/><parent link="d_left_arm_link6"/><child link="d_left_arm_link6_sc"/></joint><joint name="d_left_arm_joint6" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/><parent link="d_left_arm_link5"/><child link="d_left_arm_link6"/><axis xyz="0 0 1"/><limit effort="12.0" lower="-0.0175" upper="3.7525" velocity="2.61"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-0.0175" soft_upper_limit="3.7525"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><!-- sub-link defining detailed meshes for collision with environment --><link name="d_left_arm_link7"><visual><geometry><mesh filename="package://franka_description/meshes/visual/link7.dae"/></geometry></visual><collision><geometry><mesh filename="package://franka_description/meshes/collision/link7.stl"/></geometry></collision><inertial><origin rpy="0 0 0" xyz="1.0517e-02 -4.252e-03 6.1597e-02"/><mass value="0.735522"/><inertia ixx="0.012516" ixy="-0.000428" ixz="-0.001196" iyy="0.010027" iyz="-0.000741" izz="0.004815"/></inertial></link><!-- sub-link defining coarse geometries of real robot's internal self-collision --><link name="d_left_arm_link7_sc"></link><!-- fixed joint between both sub-links --><joint name="d_left_arm_link7_sc_joint" type="fixed"><origin rpy="0 0 0.7853981633974483"/><parent link="d_left_arm_link7"/><child link="d_left_arm_link7_sc"/></joint><joint name="d_left_arm_joint7" type="revolute"><origin rpy="1.5707963267948966 0 0" xyz="0.088 0 0"/><parent link="d_left_arm_link6"/><child link="d_left_arm_link7"/><axis xyz="0 0 1"/><limit effort="12.0" lower="-2.8973" upper="2.8973" velocity="2.61"/><safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/><dynamics D="1" K="7000" damping="0.003" friction="0.0" mu_coulomb="0" mu_viscous="16"/></joint><link name="d_left_arm_link8"/><joint name="d_left_arm_joint8" type="fixed"><origin rpy="0 0 0" xyz="0 0 0.107"/><parent link="d_left_arm_link7"/><child link="d_left_arm_link8"/></joint><gazebo reference="d_right_arm_joint1"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_right_arm_joint1_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_right_arm_joint1"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_right_arm_joint1_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_right_arm_joint2"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_right_arm_joint2_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_right_arm_joint2"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_right_arm_joint2_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_right_arm_joint3"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_right_arm_joint3_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_right_arm_joint3"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_right_arm_joint3_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_right_arm_joint4"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_right_arm_joint4_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_right_arm_joint4"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_right_arm_joint4_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_right_arm_joint5"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_right_arm_joint5_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_right_arm_joint5"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_right_arm_joint5_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_right_arm_joint6"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_right_arm_joint6_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_right_arm_joint6"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_right_arm_joint6_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_right_arm_joint7"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_right_arm_joint7_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_right_arm_joint7"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_right_arm_joint7_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_left_arm_joint1"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_left_arm_joint1_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_left_arm_joint1"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_left_arm_joint1_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_left_arm_joint2"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_left_arm_joint2_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_left_arm_joint2"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_left_arm_joint2_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_left_arm_joint3"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_left_arm_joint3_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_left_arm_joint3"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_left_arm_joint3_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_left_arm_joint4"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_left_arm_joint4_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_left_arm_joint4"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_left_arm_joint4_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_left_arm_joint5"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_left_arm_joint5_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_left_arm_joint5"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_left_arm_joint5_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_left_arm_joint6"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_left_arm_joint6_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_left_arm_joint6"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_left_arm_joint6_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><gazebo reference="d_left_arm_joint7"><!-- Needed for ODE to output external wrenches on joints --><provideFeedback>true</provideFeedback></gazebo><transmission name="d_left_arm_joint7_transmission"><type>transmission_interface/SimpleTransmission</type><joint name="d_left_arm_joint7"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></joint><actuator name="d_left_arm_joint7_motor"><hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface></actuator></transmission><!-- load ros_control plugin --><gazebo><plugin filename="libgazebo_ros_control.so" name="gazebo_ros_control"/></gazebo>
</robot>

再给出加载机械臂控制器的yaml文件

right_arm_trajectory_controller.yaml:

right_arm_trajectory_controller:type: "position_controllers/JointTrajectoryController"joints:- right_arm_joint1- right_arm_joint2- right_arm_joint3- right_arm_joint4- right_arm_joint5- right_arm_joint6- right_arm_joint7constraints:goal_time: 0.6stopped_velocity_tolerance: 0.05right_arm_joint1: {trajectory: 0.1, goal: 0.1}right_arm_joint2: {trajectory: 0.1, goal: 0.1}right_arm_joint3: {trajectory: 0.1, goal: 0.1}right_arm_joint4: {trajectory: 0.1, goal: 0.1}right_arm_joint5: {trajectory: 0.1, goal: 0.1}right_arm_joint6: {trajectory: 0.1, goal: 0.1}right_arm_joint7: {trajectory: 0.1, goal: 0.1}stop_trajectory_duration: 0.5state_publish_rate:  25action_monitor_rate: 10right_hand_controller:type: "effort_controllers/JointTrajectoryController"joints:- right_arm_finger_joint1gains:right_arm_finger_joint1:  {p: 50.0, d: 1.0, i: 0.01, i_clamp: 1.0}

left_arm_trajectory_controller.yaml

    left_arm_trajectory_controller:type: "position_controllers/JointTrajectoryController"joints:- left_arm_joint1- left_arm_joint2- left_arm_joint3- left_arm_joint4- left_arm_joint5- left_arm_joint6- left_arm_joint7constraints:goal_time: 0.6stopped_velocity_tolerance: 0.05left_arm_joint1: {trajectory: 0.1, goal: 0.1}left_arm_joint2: {trajectory: 0.1, goal: 0.1}left_arm_joint3: {trajectory: 0.1, goal: 0.1}left_arm_joint4: {trajectory: 0.1, goal: 0.1}left_arm_joint5: {trajectory: 0.1, goal: 0.1}left_arm_joint6: {trajectory: 0.1, goal: 0.1}left_arm_joint7: {trajectory: 0.1, goal: 0.1}stop_trajectory_duration: 0.5state_publish_rate:  25action_monitor_rate: 10left_hand_controller:type: "effort_controllers/JointTrajectoryController"joints:- left_arm_finger_joint1gains:left_arm_finger_joint1:  {p: 50.0, d: 1.0, i: 0.01, i_clamp: 1.0}

启动launch文件效果如下所示:

这里报错是因为没有添加pid参数,忽略即可,没有影响。

通过命令rostopic list,可以看到,控制器添加成功后,可以通过图上所示的话题。

控制器的作用就是为moveit提供一个/follow_joint_trajectory的接口,使得moveit可以通过action控制机械臂,但在两个命名空间下,move group就无法识别到接口,使得我们需要自己完成从moveit到gazebo的通信。


最后一步就是实现moveit到gazebo的通信,首先任意启动一个臂的demo.launch,另开一个终端通过命令rostopic list , 可以看到如下图所示的topic,再通过命令rostopic echo /left_arm/execute_trajectory/goal监听此话题

当我们在rviz界面中进行机械臂的规划时(也就是 点击execute时)可以看到监听的终端展示的机械臂关节轨迹信息,将这些信息收集并通过gazebo加载控制器的acction接口同步发送,即可建立moveit到gazebo的通信。

通过命令rqt,详细查看这两个topic的信息,可以看到,下图中框出的部分是相同类型的,因此,我们就可以通过手动编写节点,获取到move group中规划得到的轨迹信息,再通过action向gazebo中的控制新发送goal,使得moveit和gazebo之间建立通信。

具体代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from trajectory_msgs.msg import *
from control_msgs.msg import *
from moveit_msgs.msg import *
import rospy
import actionlibJOINT_NAMES = ['d_left_arm_joint1', 'd_left_arm_joint2', 'd_left_arm_joint3','d_left_arm_joint4', 'd_left_arm_joint5', 'd_left_arm_joint6','d_left_arm_joint7']def callback(goal):print(goal.goal.trajectory.joint_trajectory)#agoal就是我们向发送的关节运动数据,实例化为FollowJointTrajectoryGoal()类agoal = FollowJointTrajectoryGoal()#goal当中的trajectory就是我们要操作的,其余的Header之类的不用管agoal.trajectory = JointTrajectory()agoal.trajectory = goal.goal.trajectory.joint_trajectory#agoal.trajectory底下一共还有两个成员,分别是joint_names和points,先给joint_names赋值agoal.trajectory.joint_names = JOINT_NAMESmediator_client.send_goal(agoal)def mediator():global mediator_client#初始化ros节点rospy.init_node("left_mediator")          #实例化一个action的类,命名为client,与上述client对应,话题为right_arm_trajectory_controller/follow_joint_trajectory,消息类型为FollowJointTrajectoryActionmediator_client = actionlib.SimpleActionClient('left_arm_trajectory_controller/follow_joint_trajectory', FollowJointTrajectoryAction)print("----------Waiting for server-------------")#等待servermediator_client.wait_for_server()print("----------Connect to server--------------")mediator_subscriber = rospy.Subscriber("left_arm/execute_trajectory/goal",ExecuteTrajectoryActionGoal,callback)rospy.spin()if __name__ == "__main__":mediator()

Moveit+Gazebo:搭建双臂仿真平台(方案二)相关推荐

  1. Moveit + Gazebo:搭建双臂仿真平台(方案一)

    环境ubuntu20.04 ROS-noetic 国内少有搭建Moveit和Gazebo联合仿真的教程,对于搭建双臂等复杂的仿真平台更是鲜有资料,因此想要把自己的见解分享出来供大家参考,共同提高. 本 ...

  2. Ubuntu18.04配置搭建基于Gazebo的虚拟仿真平台(Px4):无人机(UAV)、无人车等模拟实验平台

    这篇我觉得是写得比较详细完整的 摘自:https://dgzc.ganahe.top/ganahe/2021/uavgazebomoni.html Ubuntu18.04配置搭建基于Gazebo的虚拟 ...

  3. ROS系统MoveIt玩转双臂机器人系列(二)--生成MoveIt配置包

    ROS系统MoveIt玩转双臂机器人系列(二)--生成MoveIt配置包 注:本篇博文全部源码下载地址为:Git Repo. 1. 下载到本地后解压到当前文件夹然后运行:catkin_make 编译. ...

  4. iverilog搭建简易仿真平台

    iverilog搭建简易仿真平台 对于xsim和modelsim这种仿真测试平台,对操作系统要求过于严格,为了实现远程verilog编译仿真调试,我选择了linux+iverilog+gtkwave来 ...

  5. 使用O2OA二次开发搭建企业办公平台(二)平台部署篇:端口冲突和服务器端口配置

    本博客为O2OA系列教程.O2OA使用手册,教程目录和各章节天梯将在连载完后更新. 使用O2OA二次开发搭建企业办公平台(一)平台部署篇:平台下载和部署 使用O2OA二次开发搭建企业办公平台(二)平台 ...

  6. Ubuntu搭建DTN2仿真平台(详细过程记录)

    基于Ubuntu搭建DTN2仿真平台 软件安装 软件下载 安装过程 基础运用 软件安装 编译安装 dtn2 之前要保证 gcc 编译器是 3.3 版本以上(但其实如果用低于4.9版本的gcc编译mak ...

  7. 从零搭建直播聊天平台(二.nginx-rtmp)

    从零搭建直播聊天平台(二.nginx-rtmp) 上篇用到了obs来推视频流数据到nginx服务器,现在是时候来说一下搭建nginx-rtmp服务了 nginx安装 下载nginx-1.12.2.ta ...

  8. Ubuntu14.04下搭建Bochs仿真平台,同时用该平台安装Linux0.11内核

    因为Linux0.11内核需要在80X86硬件平台上运行,现在已经没有该硬件系统了,所以需要搭建Bochs这个仿真平台.Bochs是一个X86硬件平台的开源模拟器. 安装步骤参考的是如下一篇文章:ht ...

  9. Webots 机器人仿真平台(十二) 与ROS节点通讯

    与ROS节点通讯 1 设置webots控制器 2 创建ROS节点 3 代码分析 3.1 设置电机位置 3.2 设置电机速度 3.3 读取时间节拍 参考资料 在前面的教程中我们描述了如何在webots中 ...

最新文章

  1. freeBSD挂载光驱
  2. Linux安装zookeeper并验证
  3. ros重置后地址_从零开始丨INDEMIND双目惯性模组ROS平台下实时ORB-SLAM记录教程
  4. linux电脑培训,电脑培训Linux服务器初始化Shell
  5. java自动加空格吗_程序加上空格和不加空格运行结果不一样
  6. Python查找算法之 -- 列表查找和二分查找
  7. 关于Python的一些学习笔记(小白式笔记,持续更新)
  8. class文件如何在linux下打开_Linux下文件的三个时间属性
  9. Access新手到高手视频教程 109讲
  10. html 字体思源_思源字体打包下载
  11. python培训教程 ppt
  12. 网络带宽压力测试教程
  13. 计算机桌面图标右上角出现双箭头符号,电脑桌面上的图标有小箭头怎么清除?...
  14. 50个漂亮的页面导航设计
  15. uni app 自动化索引列表
  16. leetcode21 合并两个有序链表
  17. reference_line_provider
  18. 百度地图api周边搜索功能
  19. 金融监管背后有何真实意图?“数字人民币”是真正的金融创新吗?
  20. 实训七:二层交换机VLAN划分及相同VLAN通信

热门文章

  1. 如何保护你的账户和财产不被Cookie劫持和HTML注入攻击?
  2. 犀牛书阅读笔记(第二章)
  3. 《ImageNet Classification with Deep Convolutional Neural Networks》 Alex Krizhevsky(AlexNet译文)
  4. iOS设备的UDID是什么?苹果为什么拒绝获取iOS设备UDID的应用?如何替代UDID?
  5. Numpy.random中shuffle与permutation的区别
  6. 参考别人的面试总结:linux C/C++服务器后台开发面试题总结
  7. UE4数字孪生模型DEMO
  8. Deformable Convolutional可变形卷积回顾
  9. 【北交所周报】曙光数创周内涨幅超90%;新股旺成科技周跌近12%;民士达申购网上获配比例仅0.71%...
  10. 3.1栈和队列——顺序栈基本操作的实现