URDF文件中的多个Realsense摄像机

时间:2019-02-26 14:31:02

标签: ros realsense

我与ROS合作仅几个星期了,如果我误解了,抱歉。我已经制作了带有机器人的URDF文件。现在,我想在上面添加两个Real-sense D435摄像机,以便可以在Rviz中看到它。按照英特尔给出的测试文件,我在模型中显示了一个摄像头,但是,当我尝试创建第二个摄像头时,它却没有显示。

问题:如何在机器人上安装两个实感摄像头?

这是我的URDF文件:

<?xml version="1.0" ?>

<robot name="mrm" xmlns:xacro="http://www.ros.org/wiki/xacro">

  <!-- BGN - Include -->
  <xacro:include filename="$(find mrm_description)/urdf/robot_parameters.xacro" />
  <xacro:include filename="$(find mrm_description)/urdf/links_joints.xacro" />
  <xacro:include filename="$(find realsense2_camera)/urdf/_r435.urdf.xacro"/>
<xacro:include filename="$(find realsense2_camera)/urdf/_r430.urdf.xacro"/>


<m_link_box name="${link_00_name}"
              origin_rpy="0 0 0" origin_xyz="0 0 0"
              mass="1024"
              ixx="170.667" ixy="0" ixz="0"
              iyy="170.667" iyz="0"
              izz="170.667"
              size="1 1 1" />

  <m_joint name="${link_00_name}__${link_01_name}" type="revolute"
           axis_xyz="0 0 1"
           origin_rpy="0 0 0" origin_xyz="0 0 0.5"
           parent="base_link" child="link_01"
           limit_e="1000" limit_l="-3.14" limit_u="3.14" limit_v="0.5" />

  <m_link_mesh name="${link_01_name}"
              origin_rpy="0 0 0" origin_xyz="0 0 -0.1"
              mass="157.633"
              ixx="13.235" ixy="0" ixz="0"
              iyy="13.235" iyz="0"
              izz="9.655"
              meshfile="package://mrm_description/meshes/Link1-v2.stl"
              meshscale="0.001 0.001 0.001" />



  <m_joint name="${link_01_name}__${link_02_name}" type="revolute"
           axis_xyz="0 1 0"
           origin_rpy="0 0 0" origin_xyz="0 0 0.4"
           parent="link_01" child="link_02"
           limit_e="1000" limit_l="0" limit_u="0.5" limit_v="0.5" />

  <m_link_cylinder name="${link_02_name}"
              origin_rpy="0 0 0" origin_xyz="0 0 0.4"
              mass="57.906"
              ixx="12.679" ixy="0" ixz="0"
              iyy="12.679" iyz="0"
              izz="0.651"
              radius="0.15" length="0.8" />

  <m_joint name="${link_02_name}__${link_03_name}" type="revolute"
           axis_xyz="0 1 0"
           origin_rpy="0 0 0" origin_xyz="0 0 0.8"
           parent="link_02" child="link_03"
           limit_e="1000" limit_l="0" limit_u="0.75" limit_v="0.5" />

  <m_link_cylinder name="${link_03_name}"
              origin_rpy="0 0 0" origin_xyz="0 0 0.4"
              mass="57.906"
              ixx="12.679" ixy="0" ixz="0"
              iyy="12.679" iyz="0"
              izz="0.651"
              radius="0.15" length="0.8" />

  <m_joint name="${link_03_name}__${link_04_name}" type="revolute"
           axis_xyz="0 1 0"
           origin_rpy="0 0 0" origin_xyz="0 0 0.8"
           parent="link_03" child="link_04"
           limit_e="1000" limit_l="0" limit_u="0.75" limit_v="0.5" />

  <m_link_cylinder name="${link_04_name}"
              origin_rpy="0 0 0" origin_xyz="0 0 0.4"
              mass="57.906"
              ixx="12.679" ixy="0" ixz="0"
              iyy="12.679" iyz="0"
              izz="0.651"
              radius="0.15" length="0.8" />

  <m_joint name="${link_04_name}__${link_05_name}" type="revolute"
           axis_xyz="0 0 1"
           origin_rpy="0 0 0" origin_xyz="0 0 0.8"
           parent="link_04" child="link_05"
           limit_e="1000" limit_l="-3.14" limit_u="3.14" limit_v="0.5" />

  <m_link_cylinder name="${link_05_name}"
              origin_rpy="0 0 0" origin_xyz="0 0 0.125"
              mass="18.056"
              ixx="0.479" ixy="0" ixz="0"
              iyy="0.479" iyz="0"
              izz="0.204"
              radius="0.15" length="0.25" />

  <sensor_r435 name="Camera 1" parent="${link_05_name}">
        <origin xyz="0 0 0" rpy="1 0 0"/>
  </sensor_r435>  


<sensor_r435 name="Camera 2" parent="${link_05_name}">
    <origin xyz="0.17 0 0" rpy="0 0 0"/>
  </sensor_r435>

  <gazebo>
    <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so">
    </plugin>
  </gazebo>

</robot> 

2 个答案:

答案 0 :(得分:0)

看起来realsense xacro没有要提供的“名称”参数,因此它似乎没有任何作用。理想情况下,您可以修改intel xacro行-
<xacro:macro name="sensor_d415" params="parent *origin">

<xacro:macro name="sensor_d415" params="sensor_name parent *origin">
然后将${sensor_name}添加到Intel xacro中的每个链接和框架名称。因此,当您使用不同的sensor_name将此xacro包含在URDF中时,每次都会重新创建完整描述。

如果您可以正常工作,请确实向intel github页面提交拉取请求。

答案 1 :(得分:0)

与此同时,在等待响应的同时,我制作了第二个文件,并在每个变量的末尾添加了2,这样就可以了。当然,我知道这不是一个永久性的解决方案,我应该将其保存在一个文件中。感谢Vik,我有一个解决方案。我从第二个文件中取出所有变量,并用$ {sensor_name}替换了它们。由于某些原因,相机不再显示在rviz中。我没有收到任何错误消息,但它们只是消失了。人们可以看到我的代码中有任何问题吗?

CREATE TRIGGER acad_term
BEFORE INSERT ON transactions
FOR EACH ROW BEGIN
IF MONTH(CURRENT_DATE) <= 5 THEN
SET NEW.academic_term = '1st Semester'