当前位置: 首页 > 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

相关文章:

  • 如何确定是不是一个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脚本
  • 进阶-自定义类型(结构体、位段、枚举、联合)
  • 网站开发预算报价表/nba排行榜最新排名
  • 赣州网站建设优化服务/简单的个人主页网站制作
  • 可信赖的响应式网站/网上营销培训课程
  • 自适应科技公司网站模板/东莞优化网站制作
  • 营销型企业网站建设/营销平台有哪些
  • 福建泉州曾明军的网站/信息检索关键词提取方法