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

[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.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.kler.cn/a/287460.html

相关文章:

  • 3、C语言基本数据类型关键字
  • Tailscale 自建 Derp 中转服务器
  • 【大语言模型】ACL2024论文-16 基于地图制图的罗马尼亚自然语言推理语料库的新型课程学习方法
  • ATmaga8单片机Pt100温度计源程序+Proteus仿真设计
  • 2411rust,异步函数
  • Vue通过file控件上传文件到Node服务器
  • 数据仓库系列10:如何处理维度表中的变化类型?
  • Shell 脚本入门指南
  • 深度学习100问24:什么是语言模型
  • 基于混沌麻雀搜索算法的光伏MPPT控制MATLAB仿真
  • 文章_Linux运维_在非docker环境中编译安装docker
  • java 二级列表 stream流实现
  • 力扣经典题目之->另一颗树的子树(subRoot是否是root的子树)
  • 【STM32 Blue Pill编程】-ADC数据采样(轮询、中断和DMA模式)
  • Linux使用openssl生成ssl证书
  • 游戏设计师:创造虚拟世界的艺术家
  • 江协科技stm32————10-1 I2C通信协议
  • 【C语言必学知识点六】自定义类型——结构体
  • 芯旺微,车规级32位MCU KF32A芯片简介
  • 内存管理篇-14kmalloc机制实现分析
  • SpringBoot整合积木报表
  • 14 大模型微调-KitTrain
  • OpenGL/GLUT实践:绘制旋转的立方体与雪人世界——添加光照与SOIL方式添加纹理(电子科技大学信软图形与动画Ⅱ实验)
  • Linux中如何查看一个进程?如何杀死一个进程?如何查看某个端口有没有被占用?
  • 【Python报错已解决】`TypeError: ‘numpy.ndarray‘ object is not callable`
  • DDS(Data Distribution Service)的数据状态分布和管理简单介绍