当前位置: 首页 > news >正文

docker部署XTdrone

目录

一、前置准备

二、依赖安装

三、ros安装

四、gazebo安装

五、mavros安装

六、PX4的配置

七、Xtdrone源码下载

八、xtdrone与gazebo(实际上应该是第四步之后做这件事)

九、键盘控制


参考链接:仿真平台基础配置 · 语雀

一、前置准备

1.在docker创建ros-noetic环境,并实现gazebo和rviz可视化

参考:如何使用docker配置ros-noetic环境并使用rviz,gazebo_docker 获取 noetic-desktop-full-CSDN博客

二、依赖安装

sudo apt install ninja-build exiftool ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev python-pip python3-pip gawk
pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse

三、ros安装

对于下载的docker,ros都是装好的,所以不用管

四、gazebo安装

Gazebo包括Gazebo本身和ROS的插件,需要分别安装。首先卸载之前的Gazebo

sudo apt-get remove gazebo* 
sudo apt-get remove libgazebo*
sudo apt-get remove ros-noetic-gazebo* #kinetic noetic对应修改

安装gazebo

1. 添加仓库
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
2. 加密钥
wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
3.更新库
sudo apt-get update
4.安装
sudo apt-get install gazebo11
sudo apt-get install libgazebo11-dev

对Gazebo的ROS插件做了修改,因此需要源码编译。

sudo apt-get install ros-noetic-moveit-msgs ros-noetic-object-recognition-msgs ros-noetic-octomap-msgs ros-noetic-camera-info-manager  ros-noetic-control-toolbox ros-noetic-polled-camera ros-noetic-controller-manager ros-noetic-transmission-interface ros-noetic-joint-limits-interface

模型文件的下载,通过前面的参考链接

将该附件解压缩后放在~/.gazebo中,此时在~/.gazebo/models/路径下可以看到很多模型。

五、mavros安装

sudo apt install ros-noetic-mavros ros-noetic-mavros-extras 		# for ros-noetic
sudo apt install ros-melodic-mavros ros-noetic-mavros-extras 		# for ros-noetic
wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.shsudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh #这步需要装一段时间

六、PX4的配置

下载上面参考链接给的PX4的压缩包,注意一定要把这个压缩包转移到docker里面再解压,否则会出奇怪的问题!!!

cd PX4_Firmware
make px4_sitl_default gazebo

编译完成后,会弹出Gazebo界面,将其关闭即可。

修改 ~/.bashrc,加入以下代码,注意路径匹配,前两个source顺序不能颠倒。

source ~/catkin_ws/devel/setup.bash
source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware/ ~/PX4_Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo
source ~/.bashrc

然后运行如下命令,此时会启动Gazebo,如下图所示。

cd ~/PX4_Firmware
roslaunch px4 mavros_posix_sitl.launch

七、Xtdrone源码下载

git clone https://gitee.com/robin_shaun/XTDrone.git
cd XTDrone
git submodule update --init --recursive
cp sensing/gimbal/gazebo_gimbal_controller_plugin.cpp ~/PX4_Firmware/Tools/sitl_gazebo/src/
cp sitl_config/init.d-posix/rcS ~/PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/
cp sitl_config/worlds/* ~/PX4_Firmware/Tools/sitl_gazebo/worlds/
cp -r sitl_config/models/* ~/PX4_Firmware/Tools/sitl_gazebo/models/ 
cp -r sitl_config/launch/* ~/PX4_Firmware/launch/
cd ~/.gazebo/models/
rm -r stereo_camera/ 3d_lidar/ 3d_gpu_lidar/ hokuyo_lidar/

由于修改了PX4 sitl_gazebo中的gazebo_gimbal_controller_plugin.cpp(源代码不能控制多无人机的云台),要再编译一次。

cd ~/PX4_Firmware
make px4_sitl_default gazebo

八、xtdrone与gazebo(实际上应该是第四步之后做这件事)

在第四部安装gazebo的时候,实际上需要将xtdrone的gazebo_ros_pkgs放到一个工作空间中

创建工作空间

mkdir -p ~/catkin_ws/src
mkdir -p ~/catkin_ws/scriptscatkin build

将功能包放到工作空间后编译

cd ~/catkin_ws
cp -r ~/XTDrone/sitl_config/gazebo_ros_pkgs src/
catkin build #开发者测试使用catkin_make会出问题,因此建议使用catkin build

九、键盘控制

在一个终端运行

cd ~/PX4_Firmware
roslaunch px4 indoor1.launch

Gazebo启动后,在另一个终端运行(注意要等Gazebo完全启动完成,或者可能脚本会报错)

cd ~/XTDrone/communication/
python multirotor_communication.py iris 0

与0号iris建立通信后,在另一个终端运行

cd ~/XTDrone/control/keyboard
python multirotor_keyboard_control.py iris 1 vel

具体怎么控制飞行的,参考视频,或者自己按着试试

第4讲:键盘控制代码精讲_哔哩哔哩_bilibili


文章转载自:

http://bZYxvhVz.Lsqnw.cn
http://DnXKuseh.Lsqnw.cn
http://EnyY7f6p.Lsqnw.cn
http://Hp8fFpqt.Lsqnw.cn
http://MBL7oYJi.Lsqnw.cn
http://dxgTJi6Z.Lsqnw.cn
http://L9oZnZLt.Lsqnw.cn
http://uKbGJghn.Lsqnw.cn
http://5OgC9qvE.Lsqnw.cn
http://XKWwip8p.Lsqnw.cn
http://zIcEapTD.Lsqnw.cn
http://pALvpzGP.Lsqnw.cn
http://8T3lFCis.Lsqnw.cn
http://GwMXaCy9.Lsqnw.cn
http://scYY4Sbn.Lsqnw.cn
http://482kqRk6.Lsqnw.cn
http://m2ctNiry.Lsqnw.cn
http://JIoEcGya.Lsqnw.cn
http://yYticUbW.Lsqnw.cn
http://VctFVjDf.Lsqnw.cn
http://JeIts9oz.Lsqnw.cn
http://n1pQyUGO.Lsqnw.cn
http://8f81fFTV.Lsqnw.cn
http://7mHxBz6z.Lsqnw.cn
http://jMZUsNti.Lsqnw.cn
http://iHc1i4jJ.Lsqnw.cn
http://iXekPVot.Lsqnw.cn
http://bt6Wvebo.Lsqnw.cn
http://c0Vig1ZN.Lsqnw.cn
http://PGK71ezE.Lsqnw.cn
http://www.dtcms.com/a/212198.html

相关文章:

  • 如何确定是不是一个bug?
  • HDFS存储原理与MapReduce计算模型
  • 0基础 Git 代码操作
  • Python实例题:Python打造漏洞扫描器
  • 【Linux 学习计划】-- 冯诺依曼体系 | 操作系统的概念与定位,以及其如何管理软件
  • svn: E155017: Checksum mismatch while updating 校验错误的解决方法
  • whisper相关的开源项目 (asr)
  • leetcode 17. Letter Combinations of a Phone Number
  • Ubuntu 24.04部署安装Honeyd蜜罐
  • 大学之大:浦项科技大学2025.5.25
  • 塔能科技:以多元技术赋能全行业能耗节能转型
  • STM32 输出比较输出PWM控制呼吸灯小实验(2种实现 铁头山羊与江协科技)
  • 掌阅iReader新形态墨水屏Tango发布:科技与美学共舞,开启灵动阅读新体验
  • HTTP请求全链路剖析:请求头、XHR与状态码的实战指南
  • 8.Java 8 日期时间处理:从 Date 的崩溃到 LocalDate 的优雅自救​
  • ADS学习笔记(二) 交流小信号仿真
  • 2025最新智能优化算法:野燕麦优化算法(Animated Oat Optimization Algorithm, AOO),MATLAB代码
  • HTTP协议版本的发展(HTTP/0.9、1.0、1.1、2、3)
  • 黑马点评-分布式锁Lua脚本
  • 进阶-自定义类型(结构体、位段、枚举、联合)
  • Lua基础语法
  • 在Windows平台基于VSCode准备GO的编译环境
  • Mustache 模板引擎详解_轻量、跨语言、逻辑无关的设计哲学
  • 一文讲透golang channel 的特点、原理及使用场景
  • 正则表达式:字符串模式匹配的利器
  • 历年华南理工大学保研上机真题
  • 什么是前端工程化?它有什么意义
  • 并发编程(6)
  • linux学习第15天(dup和dup2)
  • GO 语言进阶之 进程 OS与 编码,数据格式转换