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

[Doc][px4][ros2][gazebo][yolov8]PX4-ROS2-Gazebo-YOLOv8

GIT地址:Https://github.com/monemati/PX4-ROS2-Gazebo-YOLOv8

apt install python3.8-venv

 Create a virtual environment

# create
python -m venv /home/xg/px4-venv# activate
source /home/xg/px4-venv/bin/activate

Clone repository

git clone https://github.com/monemati/PX4-ROS2-Gazebo-YOLOv8.git

Install PX4

cd /home/xg
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh
cd PX4-Autopilot/
make px4_sitl

但是提示make不了。又找了其他的文章,ros2+px4的安装

Https://blog.csdn.net/Zecet/article/details/130474620

一、Install PX4

以下步骤需要科学上网:

  下载PX4源码

git clone https://github.com/PX4/PX4-Autopilot.git --recursive
cd /home/xg/PX4-Autopilot
make px4_stil gazebo-classic

 

    安装配套的工具,这步需要注意,我这里安装了一些没用的更新源,需要先删除这部分更新源

APT的源列表通常存储在/etc/apt/sources.list文件中,或者在/etc/apt/sources.list.d/目录下的多个.list文件中。你可以通过以下命令查看这些源

cat /etc/apt/sources.list
ls /etc/apt/sources.list.d/

 2. 编辑/etc/apt/sources.list文件

首先,检查主/etc/apt/sources.list文件,看看是否有导致403错误的源。

你可以使用你喜欢的文本编辑器来编辑这个文件,比如nano或vim:

sudo vim /etc/apt/sources.list

 在文件中,找到并删除或注释掉(在行前加#)那些导致403 Forbidden的源。例如:

# deb http://example.com/ubuntu focal main restricted

更新APT缓存

 删除或注释掉有问题的源后,运行以下命令来更新APT缓存:

sudo apt-get update

确保更新过程不再出现403 Forbidden的错误。

 保存并退出编辑器

bash ./PX4-Autopilot/Tools/setup/ubuntu.sh

 

 

    重启电脑(我通过stop docker再start docker操作来模拟,具体是否有效暂不确定)

二、Setup XRCE-DDS Agent & Client

要让ROS2和PX4通讯,需要在PX4上运行XRCE-DDS的客户端,并在计算机上运行XRCE-DDS的代理

1.Setup the Agent

启动一个终端,输入以下指令

git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
cd Micro-XRCE-DDS-Agent
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig /usr/local/lib/

但是make 时失败,提示cmake版本要4.20以上,当前我的版本是4.16.我尝试直接升级失败,因此选择手动升级

wget https://github.com/Kitware/CMake/releases/download/v3.21.4/cmake-3.21.4-linux-x86_64.sh
sudo mkdir /opt/cmake
sudo sh cmake-3.21.4-linux-x86_64.sh --skip-license --prefix=/opt/cmake

当时,wget下载很慢,直接到该地址通过浏览器的方式进行下载,再放到环境中

然后更新环境变量:

echo 'export PATH=/opt/cmake/bin:$PATH' >>~/.bashrc
source ~/.bashrc

这样再查看cmake版本:

可以了,这样再执行make操作

cd /home/xg/Mirco-XRCE-DDS-Agent
rm -rf ./build
mkdir build && cd build
cmake ..
make

sudo make install
sudo ldconfig /usr/local/lib/

 

2.启动代理,连接模拟器运行的XRCE-DDS的客户端

MicroXRCEAgent udp4 -p 8888

这样代理就启动了,但是在启动PX4的客户端之前,代理不会接收到任何信息。

Start the Client

PX4的仿真环境会自动启动XRCE-DDS的客户端,并连接到UDP 8888端口。我们打开一个新的终端,启动PX4的仿真:

注意,一定要在px4的目录下,否则会出现错误提示:

cd /home/xg/PX4-Autopilot
make px4_sitl gazebo-classic

三、重新弄下,

1.用了v1.9的image重新展开。重新安装一次

 sudo docker run -itd --privileged -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY     -v /home/xg/dockfile:/root/chans_files -v /dev/dev -v /run/udev:/run/udev --device /dev/video0 --device /dev/video1 --device /dev/media0 -p 6788:22 --gpus=all ros2_orbslam3_usbcam_d435i_mono_ok_20240821:v1.9 /bin/bash
sudo docker exec -it 1526ebadab12 /bin/bash

service ssh restart

2.删除无效的更新源:

  APT的源列表通常存储在/etc/apt/sources.list文件中,或者在/etc/apt/sources.list.d/目录下的多个.list文件中。你可以通过以下命令查看这些源

vim /etc/apt/sources.list

3.开始下载PX4的V1.14.0版本

参考:https://blog.csdn.net/weixin_42037083/article/details/137102858

git clone https://github.com/PX4/PX4-Autopilot.git
cd /home/xg/PX4-Autopilot
git checkout v1.14.0

下一步这个操作会经历180次失败,无所谓,一直尝试,直到完全下载更新完

 git submodule update --init --recursive 

 4.安装必要的组件

bash /home/xg/PX4-Autopilot/Tools/setup/ubuntu.sh

GitHub - theunknowninfinite/Real-Time-UAV-Obstacle-Avoidance-Using-Nonlinear-Programming: Real-time obstacle avoidance utilizing the ModalAI Sentinel Drone with the PX4 flight stack and an Intel Realsense D435i .

 Https://github.com/theunknowninfinite/Real-Time-UAV-Obstacle-Avoidance-Using-Nonlinear-Programming

pip3 uninstall em && pip3 install empy==3.3.4
pip3 install  pyros-genmsg setuptools

5.执行make

cd /home/xg/PX4-Autopilot
make  px4_sitl gazebo-classical

 5.安装XRCE

5.1 先升级cmake到3.21

wget https://github.com/Kitware/CMake/releases/download/v3.21.4/cmake-3.21.4-linux-x86_64.sh
sudo mkdir /opt/cmake
sudo sh cmake-3.21.4-linux-x86_64.sh --skip-license --prefix=/opt/cmake

 wget下载很慢,直接到该地址通过浏览器的方式进行下载,再放到环境中

然后更新环境变量:

echo 'export PATH=/opt/cmake/bin:$PATH' >>~/.bashrc
source ~/.bashrc

这样再查看cmake版本:

cmake --version

 

5.2 安装

git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
cd Micro-XRCE-DDS-Agent
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig /usr/local/lib/
# mavros
sudo apt install ros-foxy-mavros ros-foxy-mavros-extras
# geographiclib
wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.sh
sudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh #此行代码运行完毕需要一定时间

    mkdir -p ~/ws_sensor_combined/src/cd ~/ws_sensor_combined/src/git clone https://github.com/PX4/px4_msgs.gitgit clone https://github.com/PX4/px4_ros_com.git
cd ~/ws_sensor_combined/src/source /opt/ros/foxy/setup.bash
colcon build

(一)Ubuntu20.04下PX4开发环境搭建(v1.14.0)_ubuntu20.04 px4 ros 编译环境-CSDN博客

四。使用px4_ros2官方镜像

参考链接:Https://blog.csdn.net/lxxwkan/article/details/132044422

还是不行,在windows下安装docker desktop后,通过windows下载px4_ros2镜像,再导出离线文件再导入ubuntu电脑内,再执行

1.解决Docker Engine stopped

Https://blog.csdn.net/cplvfx/article/details/138033592

下载docker desktop后安装,安装完运行软件提示:Docker Engine stoppedwin10系统 Docker 提示Docker Engine stopped

 

一、检查服务是否开启

 找到 【Docker Desktop Service】,启动;

你也可以直接设置为“自动”

找到服务,右键》属性》启动类型:自动》点击“确定”

 

二、检查 Hyper-V是否安装

    windows控制面板》程序和功能》启用或关闭Windows功能》找到Hyper-V》全部勾选后,点击“确定”,等待安装即可

三、检查 bcdedit的hypervisorlaunchtype是否为Auto

    【win菜单】右键》选择 Windows PowerShell(管理员),注意要使用管理员操作

输入

bcdedit

 查看hypervisorlaunchtype的状态

如果不是Auto

则需要输入下面命令,重启电脑即可。

bcdedit /set hypervisorlaunchtype auto

 

 四、检查CPU是否开启虚拟化:

    右键底部菜单》任务管理器》性能》CPU

如何设置:

    重启电脑》进入boss》高级设置》处理器设置》CPU》Intel虚拟机》设置为“开启”》保存后退出,重启

1、重启计算机,并在开机时按下特定的按键,如F2、F10、Delete等,进入BIOS设置界面。

2、在BIOS设置界面中,找到“Advanced”或“高级”选项,然后选择“CPU Configuration”或“CPU 配置”选项。

3、在“CPU Configuration”或“CPU 配置”选项中,找到“SVM Mode”或“SVM 模式”选项,然后将其设置为“Enabled”或“启用”状态。

4、保存并退出BIOS设置界面,重新启动计算机。

这样,就可以开启AMD的CPU虚拟化功能,然后可以使用虚拟化软件或模拟器来运行虚拟的操作系统或应用程序了。

五、检查wsl


5.1.是否开启

    windows控制面板》程序和功能》启用或关闭Windows功能》找到【适用于Linux的Windows子系统】》勾选后,点击“确定”,等待安装即可

 5.2检查更新

    打开Windows PowerShell

    windows命令分为2种,一种是命令提示符(CMD),另一种是PowerShell;怎么打开他们-CSDN博客

输入命令

wsl --update

 

2.下载镜像

经过docker desktop这样可以正常显示后,下载镜像

 

全部完成后,可以看到镜像 。存储路径在这里

 3.加载镜像

将文件放在ubuntu电脑里,执行docker load操作

sudo docker load -i px4-ros2-foxy.tar

4.开启容器

sudo docker run -itd --privileged -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY     -v /home/xg/dockfile:/root/chans_files -v /dev/dev -v /run/udev:/run/udev --device /dev/video0 --device /dev/video1 --device /dev/media0 -p 6788:22 --gpus=all 66165367cbba /bin/bash

sudo docker exec -it 0efc4a3bbe40 /bin/bash

5.下载并安装MicroXRCEAgent

 5.1 先升级cmake到3.21

wget https://github.com/Kitware/CMake/releases/download/v3.21.4/cmake-3.21.4-linux-x86_64.sh
sudo mkdir /opt/cmake
sudo sh cmake-3.21.4-linux-x86_64.sh --skip-license --prefix=/opt/cmake

 wget下载很慢,直接到该地址通过浏览器的方式进行下载,再放到环境中

然后更新环境变量:

echo 'export PATH=/opt/cmake/bin:$PATH' >>~/.bashrc
source ~/.bashrc

这样再查看cmake版本:

cmake --version

 

5.2 安装

git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
cd Micro-XRCE-DDS-Agent
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig /usr/local/lib/

 5.3  安装px4 的通信

    mkdir -p ~/ws_sensor_combined/src/cd ~/ws_sensor_combined/src/git clone https://github.com/PX4/px4_msgs.gitgit clone https://github.com/PX4/px4_ros_com.git
cd ~/ws_sensor_combined/src/source /opt/ros/foxy/setup.bash
colcon build

6.下载px4

git clone https://github.com/PX4/PX4-Autopilot.git
bash /home/xg/PX4-Autopilot/Tools/setup/ubuntu.sh

 安装过程中会存在失败的情况,反复多次。直到完整

pip3 install symforce -i https://mirrors.aliyun.com/pypi/simple

 
 

 开始执行make

make px4_sitl gazebo-classic

这回终于看到了mavlink的交互了

五。设置x11的界面可以看到UI

安装openssh
#下载openssh
apt-get update
apt-get install openssh-server
# 设置root密码,然后设置两遍相同的密码,之后登陆的时候要用到
passwd
# 修改配置文件
apt-get install vim
vim /etc/ssh/sshd_config
# 注释掉 PermitRootLogin prohibit-password 这一行 添加这一行 PermitRootLogin yes 
# 注释掉 X11UseLocalhost yes这行,添加这一行 X11UseLocalhost no
# 5. 重启ssh服务
service ssh restart
# 或使用
# /etc/init.d/ssh restart

 

在windows电脑下打开moba_xterm

# ssh -p 6788 root@192.168.2.83

 

 在docker容器中配置bashrc
vim ~/.bashrc

添加如下内容,注意这里的192.168.3.3是windows电脑的IP,即运行moba_xterm的电脑IP

export 192.168.3.3:0.0

将更改生效:

source ~/.bashrc

如果无法连接到容器,则在容器内尝试重新启动ssh服务:

service ssh restart

试下是否可用:

xclock

  

如果提示:xclock:command not found

那么在容器内安装x11-apps

apt-get install x11-apps

是可以显示图像了,但是SSH没有成功,不知道为什么

 

7.无人机5米处定点盘旋

好了,下一步准备利用这个环境测试下无人机在5m的高度上定点盘旋

参考:Https://blog.csdn.net/Zecet/article/details/130474620

7.1Build ROS 2 Workspace
 

默认的ROS2工作区建立在home目录下,当然这个可以根据需求更改

打开终端,建立一个新的工作区

mkdir -p /home/user/ws_sensor_combined/src/
cd /home/user/ws_sensor_combined/src/

下载例程和px4_msgs

git clone https://github.com/PX4/px4_msgs.git
git clone https://github.com/PX4/px4_ros_com.git

    配置ros2 foxy的环境,并用colcon编译工作区

注意:colcon build需要在/home/user/ws_sensor_combined/下

cd ..
source /opt/ros/foxy/setup.bash
colcon build

Running the Example

可以利用以下例程测试是否搭建成功

   在终端输入(在~/ws_sensor_combined/目录下)

source install/local_setup.bash

    启动示例

ros2 launch px4_ros_com sensor_combined_listener.launch.py

只要PX4以及MicroXCREAgent的仿真是启动着的,就可以在终端接收到订阅的传感器信息:

7.2ROS 2 Offboard Control Example

(注意,此时,PX4以及MicroXCREAgent都是打开状态)打开一个新的终端,进入之前创建的ROS2工作区目录下

cd /home/user/ws_offboard_control/
source source /opt/ros/foxy/setup.bash
source install/local_setup.bash
ros2 run px4_ros_com offboard_control

可以看到无人机慢慢起飞了

于2024年9月2日,好了。这回可以跑其他的环境了 ,保存镜像名称为:

ros2_px4_xrce_ok:v1.2,离线文件名称为:ros2_px4_xrce_ok.tar

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SQL 数据查询
  • 《JavaEE进阶》----8.<SpringMVC实践项目:【简易对话留言板(数据存在内存中)】>
  • 3134. 找出唯一性数组的中位数
  • Go父类调用子类方法(虚函数调用)
  • k8s中pod基础及https密钥、horber仓库
  • 修改服务器DNS解析及修改自动对时时区
  • 零信任赋予安全牙齿,AI促使它更锋利
  • JAVA vs Python:谁更适合后端开发?
  • 软件工程-图书管理系统的需求分析
  • 天地图使用
  • WPF MVVM如何在ViewModel直接操作控件对象
  • 详细解说一下Python中的递归和基例
  • JVM面试(二)内存区域划分
  • 在MySQL存储过程中,以下句子需要以分号(;)结尾
  • 后台框架-统一数据格式
  • [译]前端离线指南(上)
  • Angular 响应式表单之下拉框
  • echarts的各种常用效果展示
  • E-HPC支持多队列管理和自动伸缩
  • flask接收请求并推入栈
  • Javascript弹出层-初探
  • learning koa2.x
  • Python_OOP
  • react-native 安卓真机环境搭建
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 第2章 网络文档
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 小试R空间处理新库sf
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • (04)odoo视图操作
  • (C++17) std算法之执行策略 execution
  • (vue)页面文件上传获取:action地址
  • (二)linux使用docker容器运行mysql
  • (附源码)计算机毕业设计ssm电影分享网站
  • (力扣)1314.矩阵区域和
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (一)80c52学习之旅-起始篇
  • .htaccess配置重写url引擎
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .net 程序发生了一个不可捕获的异常
  • .NET 快速重构概要1
  • .net2005怎么读string形的xml,不是xml文件。
  • .NET和.COM和.CN域名区别
  • .NET文档生成工具ADB使用图文教程
  • .Net中wcf服务生成及调用
  • [ C++ ] STL_vector -- 迭代器失效问题
  • [20171102]视图v$session中process字段含义
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——
  • [AI]ChatGPT4 与 ChatGPT3.5 区别有多大
  • [C#]C# winform实现imagecaption图像生成描述图文描述生成
  • [C语言]-基础知识点梳理-编译、链接、预处理
  • [Firefly-Linux] RK3568 pca9555芯片驱动详解
  • [gdc19]《战神4》中的全局光照技术
  • [Google Guava] 2.1-不可变集合
  • [i.MX]飞思卡尔IMX6处理器的GPIO-IOMUX_PAD说明