在ROS2(humble)+Gazebo+rqt下,实时显示仿真无人机的相机图像

文章目录


前言

在ROS2的环境下,进行无人机仿真的过程中,有时需要调取无人机的相机图像信息,这里使用rqt获取。
提示:注意PX4,ROS2以及Gazebo的版本
PX4需要在1.16以下,Gazebo需要Gazebo sim7


一、版本检查

我使用的是ROS2的humble版本,PX4版本是1.15.3,Gazebo的版本是Gazebo sim7。
注意:这一步很重要,版本相互对应。否则会出现下图情况------无法显示相机图像。
如果你是其他版本的ROS,那需要寻找对应的PX4与Gazebo版本,或者卸载使用和我一样的环境

检查ROS2版本

按 Ctrl + Alt + T,打开终端,输入以下代码,查询已安装的ROS2版本。

c 复制代码
gazebo --version

如果不是ROS2的humble版本,可以参考这篇文章《一键安装ROS/ROS2》重新下载ROS2。

二、步骤

1.下载对应版本的PX4

(1)检查PX4版本

按 Ctrl + Alt + T,打开终端,输入以下代码

c 复制代码
cd ~/PX4-Autopilot
git describe --tags

(2)修改文件名

如果不是1.15.3版本,可打开home文件,找到PX4-Autopilot文件夹,修改它的名字。这样就可以下载新的PX4了。

(3)下载正确的PX4版本

在终端中,输入以下代码,安装1.15.3版本的PX4版本。

c 复制代码
git clone --branch v1.15.3 --recursive https://github.com/PX4/PX4-Autopilot.git
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh

详细情况可以参考这篇文章:
《如何查询已安装的PX4版本,如何下载指定版本的PX4,PX4未下载完全怎么处理》

2.下载对应版本的Gazebo

(1)检查Gazebo版本

打开已有的Gazebo,点击左上角,选取about,可查看当前Gazebo的版本。

(2)卸载不正确的Gazebo版本

如果不是Gazebo sim7,输入以下命令,查找已安装的Gazebo

c 复制代码
 dpkg --list | grep gz

再输入以下命令,XXXX为你想要删除的Gazebo

c 复制代码
 sudo apt remove XXXX
 sudo apt autoremove

(3)下载正确的Gazebo版本

输入以下代码,下载对应版本的Gazebo。

c 复制代码
sudo apt install ros-humble-ros-gzgarden

3.安装bridge包

输入以下代码

c 复制代码
sudo apt update
sudo apt install ros-humble-ros-gz-image

点击,bridge的Github官网,即可查看详细内容。

4.启动

按 Ctrl + Alt + T,打开第一个终端,输入以下代码,打开带相机的无人机仿真。

c 复制代码
cd ~/PX4-Autopilot
make px4_sitl gz_x500_depth

注意:使用 make px4_sitl 进行编译,失败的因素有很多,比如是否正确下载了GPU的驱动,再比如网络问题(没错,编译需要网络,没想到吧)

按 Ctrl + Alt + T,打开第二个终端,输入以下代码:

c 复制代码
ros2 run ros_gz_image image_bridge /camera

按 Ctrl + Alt + T,打开第三个终端,输入以下代码:

c 复制代码
ros2 run rqt_image_view rqt_image_view

我们可以看见无人机相机图像了。

总结

以上就是今天要讲的内容,希望对大家有所帮助,接下来,我还会分享更多的文章,希望可以帮助到大家。

相关推荐
DIY机器人工房35 分钟前
代码详细注释:ARM-Linux字符设备驱动开发案例:LCD汉字输出改进建议开发板断电重启还能显示汉字,显示汉字位置自定义
linux·嵌入式·文件io·diy机器人工房
得物技术1 小时前
eBPF 助力 NAS 分钟级别 Pod 实例溯源|得物技术
linux
Rudon滨海渔村1 小时前
解决阿里云ubuntu内存溢出导致vps死机无法访问 - 永久性增加ubuntu的swap空间 - 阿里云Linux实例内存溢出(OOM)问题修复方案
linux·运维·ubuntu
A-刘晨阳2 小时前
【Linux】Redis 6.2.6 的二进制部署【适用于多版本】
linux·运维·redis
cat_with_cat2 小时前
Linux网络:UDP socket创建流程与简单通信
linux·网络·udp
2401_861615282 小时前
跨平台的ARM 和 x86 Docker 镜像:汇编语言实验环境搭建
linux·汇编·ubuntu·docker·容器
hz355722 小时前
IO多路复用--epoll
linux
努力学习的小廉3 小时前
深入了解linux系统—— System V之消息队列和信号量
android·linux·开发语言
华无丽言3 小时前
如何简单实现发版不影响客户使用?nginx负载
linux·nginx
自由游戏开发者3 小时前
用U盘启动制作centos系统最常见报错,系统卡住无法继续问题(手把手)
linux·运维·centos