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

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://www.lryc.cn/news/2385948.html

相关文章:

  • 图解 | 大模型智能体LLM Agents
  • Lambda表达式的方法引用详解
  • echarts设置标线和最大值最小值
  • gcc编译构建流程
  • Maven 中央仓库操作指南
  • BUUCTF——RCE ME
  • clickhouse-1-特性及docker化安装
  • Docker核心笔记
  • log日志最佳实践
  • FreeRTOS--消息队列
  • 三步快速部署一个本地Windows/Linux大语言模型ChatGLM(环境配置+权重下载+运行)
  • 深入解析Spring Boot与Redis的缓存集成实践
  • leetcode105.从中序与前序遍历序列构造二叉树:前序定根与中序分治的递归重建术
  • Python二级考试
  • DeepSeek联网Google搜索引擎
  • 理论物理:为什么在极低温(接近绝对零度)时,经典理论失效?
  • 奈雪小程序任务脚本
  • 上海医日健集团物联网专利技术领跑智慧药房赛道
  • 基于Java+MySQL实现(Web)图书借阅管理系统
  • SAR ADC的功耗设计
  • PP-OCRv5
  • nginx的一些配置的意思
  • Agent模型微调
  • Android-OkHttp与Retrofit学习总结
  • 移远三款主流5G模块RM500U,RM520N,RG200U比较
  • C++引用以及和指针的区别
  • firfox 国外版和国内版本账号不互通问题处理
  • Linux基本指令篇 —— whoami指令
  • 用go从零构建写一个RPC(3)--异步调用+多路复用实现
  • 力扣395做题笔记