学习笔记35-- 仿真时用到的d435以及16线雷达在urdf中定义以及launch注意点

环境:ubuntu16.04 ros-kinetics gazebo7.16

来源:仿真有d435以及16线雷达的urdf编写

注意,urdf采用的是.xacro编写的

d435_16vel.urdf.xacro:

<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="robot">
    <xacro:arg name="gpu" default="false"/>
    <xacro:property name="gpu" value="$(arg gpu)"/>
......
<xacro:include filename="$(find realsense2_description)/urdf/_d435.urdf.xacro" />//把深度相机d435模型文件的存放路径包含进来(这包可以从d435官方驱动安装有下载)

<xacro:include filename="$(find velodyne_description)/urdf/VLP-16.urdf.xacro"/>//加载16线雷达的路径(这个gazebo里面自带的,不需要再次下载来使用)
......
    <!--d435-->
  <sensor_d435 parent="base_link" name="d435_01">//d435_01连接在base_link上面
     <origin xyz="0.3 0 0" rpy="0 0 0"/>//相对与base_link坐标系的坐标定义
  </sensor_d435>
......
<!--vlp-16-->
    <VLP-16 parent="base_link" name="vel_16" topic="/vel_16_points" hz="10" samples="440" gpu="${gpu}"
            min_range="0.1" max_range="70" min_angle="0" max_angle="3.14" noise="0.008">//依次定义,16线雷达链接的父link为base_link;自定义的名称为vel_16;
            //发出的topic为/vel_16_points;更新的频率为10hz;
            //每个线平面的射线条数为440;不使用gpu;量程范围0.1米到70m;
            //扫射范围自身坐标系0到180度;雷达噪声为0.008
        <origin xyz="0.6 0 0" rpy="0 0 0"/>//定义雷达以base_link为坐标系的定义坐标
</VLP-16>
........
</robot>

Launch文件加载注意点:
d435_16vel.launch:

<launch>
<!-- Spawn a robot into Gazebo -->
<param name="robot_description" command="$(find xacro)/xacro '$(find rpy)/urdf/d435_16vel.urdf.xacro' use_nominal_extrinsics:=true --inorder"/>//引用到上面这些模型时候,添加use_nominal_extrinsics:=true语句;
//目前测试过,d435必须添加,而16线雷达不要求,
//可能是16线雷达属于gazebo自带模型的原因
........

</launch>

如果launch文件不设置上面标签,会出现如下报错:

Undefined substitution argument use_nominal_extrinsics None

d435包下载链接:https://github.com/IntelRealSense/realsense-ros

如果想要完整测试玩玩,可以查找我的这个博客(https://blog.csdn.net/qq_45701501/article/details/107521623),然后根据上面,补充一下里面文件,基本上就可以仿真使用了.

############
好记性不如烂笔头
–20200730

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. URDF文件 以下是一个简单的六自由度机械臂的URDF文件示例: ``` <?xml version="1.0"?> <robot name="six_dof_arm" xmlns:xacro="http://www.ros.org/wiki/xacro"> <link name="base_link"> <visual> <geometry> <cylinder length="0.2" radius="0.05"/> </geometry> </visual> <inertial> <mass value="1.0"/> <inertia ixx="0.1" iyy="0.1" izz="0.1" ixy="0.0" ixz="0.0" iyz="0.0"/> </inertial> </link> <joint name="shoulder_pan_joint" type="revolute"> <parent link="base_link"/> <child link="shoulder_link"/> <origin rpy="0 0 0" xyz="0 0 0.1"/> <axis xyz="0 0 1"/> <limit effort="100" lower="-3.14" upper="3.14" velocity="1.0"/> </joint> <link name="shoulder_link"> <visual> <geometry> <cylinder length="0.3" radius="0.05"/> </geometry> </visual> <inertial> <mass value="1.0"/> <inertia ixx="0.1" iyy="0.1" izz="0.1" ixy="0.0" ixz="0.0" iyz="0.0"/> </inertial> </link> <joint name="shoulder_lift_joint" type="revolute"> <parent link="shoulder_link"/> <child link="upper_arm_link"/> <origin rpy="-1.57 0 0" xyz="0 0 0.3"/> <axis xyz="0 1 0"/> <limit effort="100" lower="-3.14" upper="3.14" velocity="1.0"/> </joint> <link name="upper_arm_link"> <visual> <geometry> <cylinder length="0.4" radius="0.05"/> </geometry> </visual> <inertial> <mass value="1.0"/> <inertia ixx="0.1" iyy="0.1" izz="0.1" ixy="0.0" ixz="0.0" iyz="0.0"/> </inertial> </link> <joint name="elbow_joint" type="revolute"> <parent link="upper_arm_link"/> <child link="forearm_link"/> <origin rpy="1.57 0 0" xyz="0 0 0.4"/> <axis xyz="0 1 0"/> <limit effort="100" lower="-3.14" upper="3.14" velocity="1.0"/> </joint> <link name="forearm_link"> <visual> <geometry> <cylinder length="0.2" radius="0.05"/> </geometry> </visual> <inertial> <mass value="1.0"/> <inertia ixx="0.1" iyy="0.1" izz="0.1" ixy="0.0" ixz="0.0" iyz="0.0"/> </inertial> </link> <joint name="wrist_joint" type="revolute"> <parent link="forearm_link"/> <child link="wrist_link"/> <origin rpy="-1.57 0 0" xyz="0 0 0.2"/> <axis xyz="0 1 0"/> <limit effort="100" lower="-3.14" upper="3.14" velocity="1.0"/> </joint> <link name="wrist_link"> <visual> <geometry> <cylinder length="0.1" radius="0.05"/> </geometry> </visual> <inertial> <mass value="1.0"/> <inertia ixx="0.1" iyy="0.1" izz="0.1" ixy="0.0" ixz="0.0" iyz="0.0"/> </inertial> </link> <joint name="gripper_joint" type="revolute"> <parent link="wrist_link"/> <child link="gripper_link"/> <origin rpy="-1.57 0 0" xyz="0 0 0.1"/> <axis xyz="0 1 0"/> <limit effort="100" lower="-3.14" upper="3.14" velocity="1.0"/> </joint> <link name="gripper_link"> <visual> <geometry> <box size="0.05 0.05 0.1"/> </geometry> </visual> <inertial> <mass value="0.1"/> <inertia ixx="0.0001" iyy="0.0001" izz="0.0001" ixy="0.0" ixz="0.0" iyz="0.0"/> </inertial> </link> </robot> ``` 2. Launch文件 以下是一个简单的六自由度机械臂的Gazebo2仿真launch文件示例: ``` <launch> <!-- Load URDF into parameter server --> <param name="robot_description" textfile="$(find six_dof_arm)/urdf/six_dof_arm.urdf" /> <!-- Launch Gazebo with robot model --> <node name="gazebo" pkg="gazebo_ros" type="gazebo" args="$(find six_dof_arm)/worlds/six_dof_arm.world"/> <!-- Spawn robot model in Gazebo --> <node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-urdf -model my_robot -param robot_description"/> <!-- Start joint_state_publisher --> <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher"> <rosparam param="source_list">[/shoulder_pan_joint, /shoulder_lift_joint, /elbow_joint, /wrist_joint, /gripper_joint]</rosparam> </node> <!-- Start robot_state_publisher --> <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" /> </launch> ``` 注意,上述示例的文件路径和文件名需要根据实际情况进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值