当前位置:   article > 正文

在px4中,将iris模型替换为自己想要的无人机模型,并加上D435i深度相机_无人机模型添加深度相机

无人机模型添加深度相机

说明

本仓库旨在在已经安装好的px4的基础上,将其原本的iris模型替换为自己想要的无人机模型,并加上D435i深度相机

仓库地址 链接

环境

ROS: noetic

PX4: 1.13.3

注: 其他版本的原理都是类似的

步骤

Step0 预先准备

安装好px4及相应依赖,可参考或查看附录

运行下列命令,确保px4能够正常运行

roslaunch px4 mavros_posix_sitl.launch  
roslaunch px4 multi_uav_mavros_sitl_sdf.launch 
  • 1
  • 2

Step1 备份原模型文件

cd /PATH/to/PX4-Autopilot/Tools/sitl_gazebo/models/iris
cp iris.sdf iris.sdf.bk
  • 1
  • 2

Step2 (OPTIONAL)准备好想要替换模型的可视文件

[注]: 这一步可以跳过,用作者改好的模型

[注]: 下面两个方法各有耗时的地方

Method1 仅替换可视文件

这里以stl(其他类型没试过)为例。
通过各种渠道得到模型的stl文件(solidwork可以直接另存为,或者使用sw2urdf插件),保存至irismeshes文件夹下

gedit iris.sdf
  • 1

找到下列所示的标签,将iris.stl替换为YOURMODEL.stl

<!-- 省略了其他不重要的标签,沿着下面所示的标签一层一层找就行 -->
<model name='iris'>
    <link name='base_link'>
      <visual name='base_link_inertia_visual'>
        <geometry>
          <mesh>
            <scale>1 1 1</scale>
            <uri>model://iris/meshes/YOURMODEL.stl</uri>
          </mesh>
        </geometry>
      </visual>
    </link>
</model>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

[注]: 具体sdf文件格式各标签的含义可以参考 官网

相应的,为保持美观,需要调节位置角度与其他部件(比如桨叶)的大小与位置,此处较为耗时

Method2 整体替换
  1. 使用sw2urdf得到sdf文件,注意事项及步骤详细参考附录
  2. 将需要用到的stl文件拷贝进PX4-Autopilot/Tools/sitl_gazebo/models/iris/meshes/
  3. 根据第一步得到的sdf文件,修改PX4-Autopilot/Tools/sitl_gazebo/models/iris/meshes/iris.sdf,由于是用插件得到的,若第一步的配置合理的话,位置、姿态、大小等属性都是完美的,不需要再手动调整,直接粘贴进iris.sdf的对应位置即可

Step3 拷贝

拷贝本仓库下的各文件至指定位置

# D435i model
cp -r /PATH/to/THISRepositories/sdf/D435i /PATH/to/PX4-Autopilot/Tools/sitl_gazebo/models/
# 已经修改完的飞机模型,若跳过了第二步(也可以直接使用step2中你自己改好的)
cp -r /PATH/to/THISRepositories/sdf/iris /PATH/to/PX4-Autopilot/Tools/sitl_gazebo/models/
# launch (包含d435i的启动launch与新模型的启动launch)
cp -r /PATH/to/THISRepositories/launch /PATH/to/PX4-Autopilot/
# user-defined plugin (可任意放置,个人习惯在PX4的一级子目录下,与launch平级)
cp -r /PATH/to/THISRepositories/plugin /PATH/to/PX4-Autopilot/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Step4 导入环境变量

为方便启动,直接在shell启动时导入px4对应的环境变量

gedit ~/.bashrc
# 如果用的时zsh
gedit ~/.zshrc
  • 1
  • 2
  • 3

添加下面内容

## PX4 1.13.3
export PX4_DIR=/PATH/to/PX4-Autopilot
source $PX4_DIR/Tools/setup_gazebo.bash $PX4_DIR $PX4_DIR/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$PX4_DIR
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$PX4_DIR/Tools/sitl_gazebo
export GAZEBO_PLUGIN_PATH=$GAZEBO_PLUGIN_PATH:$PX4_DIR/plugin # user-defined plugin (看你上面一步里放在哪里了)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Step5 测试相机

roslaunch px4 d435i.launch
  • 1

Step6 启动无人机模型

roslaunch px4 mavros_posix_sitl_sdf.launch
  • 1

附录

其他非必要文件说明

  • src/realsense_ros_gazebo: d435i模型及插件源码 参考,plugin文件夹下的插件就是通过这份源码得到
  • src/px4_simple_example: 基于px4gazebo的简单的无人机悬停程序,编译后按下列方式启动
    roslaunch px4_simple_example one_agent_offboard.launch
    
    • 1
  • src/kun_urdf: 从solidwork中由sw2urdf插件得到的文件

使用sw2urdf得到sdf文件

使用该插件时需要注意 参考

  1. 每个link设为子装配体,确保link坐标系原点/关节轴与子装配体原点重合
  2. 确保所有坐标系/关节轴处于装配体根目录,不要使用任何子装配体/零件中的坐标系/轴
  3. 最后保存的文件夹不要有中文(要作为ros包运行)

否则最后出来的urdf模型可能会散架

得到urdf后,可以使用官方工具将其转换为sdf格式

gz sdf -p YOURMODEL.urdf > YOURMODEL.sdf
  • 1

启动urdf模型

# 原本为gazebo.launch
roslaunch kun_urdf kun_urdf.launch
  • 1
  • 2

启动sdf模型

# 自己加的
roslaunch kun_urdf kun_sdf.launch
  • 1
  • 2

px4安装

参考

mavros 安装

sudo apt-get install ros-noetic-mavros ros-noetic-mavros-extras
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
chmod a+x install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/647697
推荐阅读
相关标签
  

闽ICP备14008679号