在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 

Step1 备份原模型文件

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

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

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

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

Method1 仅替换可视文件

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

gedit iris.sdf

找到下列所示的标签,将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>

[注]: 具体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/

Step4 导入环境变量

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

gedit ~/.bashrc
# 如果用的时zsh
gedit ~/.zshrc

添加下面内容

## 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 (看你上面一步里放在哪里了)

Step5 测试相机

roslaunch px4 d435i.launch

Step6 启动无人机模型

roslaunch px4 mavros_posix_sitl_sdf.launch

附录

其他非必要文件说明

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

使用sw2urdf得到sdf文件

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

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

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

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

gz sdf -p YOURMODEL.urdf > YOURMODEL.sdf

启动urdf模型

# 原本为gazebo.launch
roslaunch kun_urdf kun_urdf.launch

启动sdf模型

# 自己加的
roslaunch kun_urdf kun_sdf.launch

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
  • 20
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
uniapp是一个跨平台的前端开发框架,可以用于开发H5、小程序、App等多个平台的应用程序。如果需要在uniapp实现自定义相机功能,可以使用原生插件来完成。通过引入相机原生插件,并在界面上自定义叠加按钮文字等,可以实现自己的界面功能。同时,还可以调用插件提供的API来实现物理功能,比如拍照、切换闪光灯、切换摄像头等操作。 下面是一些示例代码: ```javascript // 在页面引入相机原生插件 <camera-view ref="cameraObj" class="camera_view" :defaultCamera="currentCamera" @receiveRatio="receiveRatio" @takePhotoSuccess="takePhotoSuccess" @takePhotoFail="takePhotoFail" @recordSuccess="recordSuccess" @recordFail="recordFail" @receiveInfo="onError" :style="'width:' + previewWidth + 'px;height:' + previewHeight + 'px;margin-left:-' + marginLeft + 'px'"> </camera-view> // 调用拍照API this.$refs.cameraObj.takePhoto(); // 设置水印 this.$refs.cameraObj.addWaterText({ "date": this.tempDateStr || "", "logo": "·七彩云·|水印相机", "address": (this.showAddress ? this.address : ""), "time": this.tempTimeStr || "", "week": this.weekDay || "", "remark": (this.showRemark ? this.remark : "") }); // 切换闪光灯 if (this.flashStatus === 0) { this.flashStatus = 1; this.$refs.cameraObj.openFlash(); } else { this.flashStatus = 0; this.$refs.cameraObj.closeFlash(); } // 切换摄像头 if (this.currentCamera === "0") { this.currentCamera = "1"; this.$refs.cameraObj.openFront(); } else { this.currentCamera = "0"; this.$refs.cameraObj.openBack(); } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值