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

news2024/9/20 18:51:15

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.git
    git 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.git
    git 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2098514.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【实用干货】5大自动化测试的Python框架!

自从2018年被评选为编程语言以来,Python在各大排行榜上一直都是名列前茅。 目前,它在Tiobe指数中排名第三个,仅次于Java和C。随着该编程语言的广泛使用,基于Python的自动化测试框架也应运而生,且不断发展与丰富。 因…

博客园-awescnb插件-geek皮肤优化-表情配置

💖简介 博客园-awescnb插件-geek皮肤下,表情配置及优化 🔗链接 官方配置:https://www.yuque.com/awescnb/user/rycpvv#KwRr4 官方配置文档 在线Emoji:https://tool.itzd.cn/ 在线获取Emoji表情 🔧配置 …

「Python程序设计」基本数据类型:字典

在python编程语言中,字典是一个名值对的组合的集合。也就是说,字典中的数据元素,都是通过名称和数值的形式出现的。字典这种数据结构,类似于C语言中的struct结构体,以及json数据格式类型。 字典的数据结构特性&#x…

MySQL第10讲--约束的介绍

文章目录 前言约束约束的演示 外键约束删除外键外键删除/更新行为 前言 在第9讲MySQL第9讲–函数的介绍中我们主要介绍了几种mysql的内置函数:字符串函数、数值函数、流程函数、日期函数,并对这些函数中常用的几种函数做了总结,如下图所示&am…

多层数组的formdata格式提交处理

一、数据结构 二、主要代码 for (var i 0; i < this.addProjectContentReqList.length; i) {formData.append(addProjectContentReqList[ i ].contentText, this.addProjectContentReqList[i].contentText);for (var k 0; k < this.addProjectContentReqList[i].co…

《深入理解JAVA虚拟机(第2版)》- 第7章 - 学习笔记

第7章 虚拟机类加载机制 7.1 概述 类的加载机制是&#xff1a;虚拟机将描述类的数据从Class文件中读取到内存中&#xff0c;再对这些数据进行检验、转换解析、初始化&#xff0c;最终生成一个可以被虚拟机直接使用的数据类型。之所以称Java是动态加载和动态连接&#xff0c;是…

如何在Windows系统上安装和配置Git客户端

&#x1f600;前言 在这篇博文中&#xff0c;我将为大家介绍如何在Windows系统上安装和配置Git客户端&#xff0c;包括Git for Windows和TortoiseGit。这些工具是进行版本控制管理的必备工具&#xff0c;特别适合开发者在日常工作中使用。通过这篇文章&#xff0c;您将学会如何…

开放式耳机的优缺点?音质好吗?分享四款开放式蓝牙耳机

作为蓝牙耳机的重度使用患者&#xff0c;我认为开放式耳机音质的好坏取决的因素有好多&#xff0c;包括不同的品牌、不同的‌型号及不同的产品所采用的声学技术&#xff0c;而且开放式耳机的音质好不好也是取决使用者的需求的&#xff0c;有些开放式耳机能提供更清晰的人声音频…

为量产而设计:自动驾驶车辆激光雷达旋转外参在线标定与异常排除策略

更多精彩内容&#xff0c;请关注公众号&#xff1a;智驾机器人技术前线 1.论文信息 论文标题&#xff1a;Fault Detection and Exclusion for Robust Online Calibration of Vehicle to LiDAR Rotation Parameter 作者&#xff1a;Jiwon Seok, Chansoo Kim, Paulo Resende, B…

黑马点评4——优惠券秒杀—分布式锁

文章目录 分布式锁什么是分布式锁分布式锁的实现基于redis实现分布式锁分布式锁初级版本redis分布式锁的误删问题分布式锁的原子性问题lua脚本解决多条命令原子性问题Java调用lua脚本改进redis的分布式锁分布式锁-Redisson功能介绍分布式锁-Redisson快速入门Redisson可重入原理…

vue3+vant4父组件点击提交并校验子组件form表单

先看效果 代码如下 父组件 <template><ChildForm ref"childFormRef" /><button click"validateForm">校验表单</button> </template> <script setup> import { ref } from vue; import ChildForm from ./ChildForm.…

【Python系列】异步任务的终止

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

如何在S7-200 SMART CPU断电后保持高速计数器的当前值

1、首先是问题描述 S7-200 SMART的断电数据保持不支持高速计数器的范围设置&#xff0c;因此高速计数器的当前值在CPU每次断电后都会复位为数值0。要使S7-200 SMART高速计数器的当前值在CPU断电重启后依然保持&#xff0c;可以通过以下的编程来实现。 在此以通过向导生成高速…

MapStruct-Java实体转换利器

MapStruct-Java实体转换利器 MapStruct 概述MapStruct 使用例子UserDTOUserEntityUserDTOConverter ( mapstruct 接口)UserModelConverterImpl &#xff08;自动生成&#xff09;Service 层使用 MapStruct 概述 MapStruct 是一个用于生成映射器接口的代码生成库&#xff0c;主…

哪款宠物空气净化器性价比高,希喂、霍尼韦尔真实测评分享

几年前养宠物就帮我开启了一个全新的体验。下班回去后能看到它在门口处摇着尾巴&#xff0c;眨巴着个大眼的等我回家&#xff1b;每天醒来就看到它在我的身边安安静静的躺着&#xff0c;实在是一幅岁月静好的画面。但如果没有浮毛和异味困扰的话&#xff0c;我相信会更好。 随…

ChatTTS文本转语音本地Windows环境部署与远程生成AI音频实战流程

文章目录 前言1. 下载运行ChatTTS模型2. 安装Cpolar工具3. 实现公网访问4. 配置ChatTTS固定公网地址 前言 本篇文章主要介绍如何快速地在Windows系统电脑中本地部署ChatTTS开源文本转语音项目&#xff0c;并且我们还可以结合Cpolar内网穿透工具创建公网地址&#xff0c;随时随…

【BLE】四.SMP安全配对详解

设备配对流程 SMP专业术语 Paring&#xff08;配对&#xff09;&#xff1a; 配对能力交换&#xff0c;设备认证&#xff0c;密钥生成&#xff0c;连接加密以及机密信息分发等 过程 Bonding&#xff08;绑定&#xff09; 配对中会生成一个长期密钥&#xff08;LTK&#xff0c;…

022集—— 字符串按ascii码转数字——C#学习笔记

字符串分解为字符&#xff0c;字符分别转为ascii对应数字&#xff0c;最后数字连接起来转为字符串&#xff0c;具体如下&#xff1a; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace Console…

【Next】3. 开发规范

笔记来源&#xff1a;编程导航 1、约定式路由 Next.js 使用 约定式路由&#xff0c;根据文件夹的结构和名称&#xff0c;自动将对应的 URL 地址映射到页面文件。 常见的几种路由规则如下&#xff1a; 1&#xff09;基础规则&#xff1a;以 app 目录作为根路径&#xff0c;根…

mybatis-plus添加replace(自定义)方法,添加sql注入器SqlInjector

1. 继承DefaultSqlInjector import com.baomidou.mybatisplus.core.injector.AbstractMethod; import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector; import com.baomidou.mybatisplus.core.metadata.TableInfo; import org.springframework.stereotype.Compon…