我与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>
答案 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'