Ubuntu22.04配置ROS2+PX4仿真环境

Ubuntu22.04配置ROS2+PX4仿真环境


主要参考源:

https://blog.csdn.net/weixin_44174421/article/details/135827130

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

一、准备工作

  1. 确保网络能够连接到github,出错主要源自于此;
  2. 确保EmPy库的版本是3.3.4,否则会在colcon build的时候出错。现在安装ubuntu22.04更新后的EmPy版本为4.0,因而需要退回到3.3.4版本。在Ubuntu下,多种开源软件联合工作,各种版本不匹配而导致问题是非常常见的。
    1. Empy库是一个强大、稳健且成熟的模板系统,用于在模板文本中插入Python代码;
    2. 版本回退命令如下(先卸载再安装)
    pip3 uninstall empy
    pip3 install empy==3.3.4
    
  3. 安装git工具
    sudo apt update
    sudo apt upgrade
    sudo apt install git
    #查看git版本
    git --version
    

二、安装ROS2

推荐使用鱼香ROS安装。

wget http://fishros.com/install -O fishros & . fishros

三、安装ROS2相关依赖

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
pip3 install --user empy==3.3.4 pyros-genmsg setuptools
#安装colcon最容易出错,可以多参考博客
sudo apt install python3-colcon-common-extensions
sudo apt install ros-humble-desktop python3-argcomplete
sudo apt install ros-dev-tools

四、安装PX4固件

#下载源码 --recursive会递归下载二级及以下文件
git clone https://github.com/PX4/PX4-Autopilot.git --recursive# 进入PX4-Autopilot文件夹,确认源码是否下载完毕,如果因网络等未下载完全,则需要进一步下载更新
cd PX4-Autopilot
git submodule update --init --recursive# 源码下载完毕后,执行下面操作
bash ./Tools/setup/ubuntu.sh#显示 relogin or reboot when you attempting to install Nuttx
#即说明上一步成功make px4_sitl gz_x500
#成功后将会显示Gazebo界面,并且里面有一架飞机

五、安装XRCE-DDS代理

XRCE-DDS是ROS2与PX4之间通信的桥梁。

#下载源码
git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
#进入文件夹
cd Micro-XRCE-DDS-Agent
#新建文件夹build
mkdir build
#进入build文件夹
cd build
#执行cmake
cmake ..
#执行make
make
#安装?
sudo make install
#????
sudo ldconfig /usr/local/lib/
#安装完成后,启动代理,端口号为8888
MicroXRCEAgent udp4 -p 8888

六、创建ROS2工作空间并生成代码样例

此后的工作主要在此空间内进行

#创建工作空间路径
mkdir -p ~/ws_ros2/src/
#进入src文件夹,将下面的源码下载至src
cd ~/ws_ros2/src/
git clone https://github.com/PX4/px4_msgs.git
git clone https://github.com/PX4/px4_ros_com.git#返回至工作空间根目录下进行编译
cd ..
#执行colcon编译
colcon build
#成功后,以上步骤在此后的工作中不需要再重复source install/local_setup.bash
#执行代码样例
ros2 run px4_ros_com offboard_control

七、安装Mavros2

到第六部分为止,ROS2与PX4已经可以通过MicroXRCE通信并进行仿真,但在无人机中更常用的还是Mavros,因此还要安装Mavros2

mkdir -p ~/mavros2_ws/src
cd ~/mavros2_ws
rosinstall_generator --format repos mavlink | tee /tmp/mavlink.repos
rosinstall_generator --format repos --upstream mavros | tee -a /tmp/mavros.repos
vcs import src < /tmp/mavlink.repos
vcs import src < /tmp/mavros.repos
rosdep install --from-paths src --ignore-src -y
sudo ./src/mavros/mavros/scripts/install_geographiclib_datasets.sh
#注意:下面一行的路径与catkin build得到的不同
echo "source ~/mavros2_ws/install/setup.bash" >> ~/.bashrc

八、问题汇总

  1. Gazebo-GL问题
    a. 错误信息: OpenGL 3.3 is not supported. Please update your graphics card drivers. 在这里插入图片描述

    b. 解决方法:

    export MESA_GL_VERSION_OVERRIDE=3.3
    
  2. Gazebo闪退
    a. 错误信息: 按上述步骤操作之后,将不再提示错误信息,但Gazebo还是会闪退
    b. 解决方法:

    #在PX4-Autopilot文件夹下搜索px4-rc.simulator文件,应该有两个。
    #在文件内添加一句,如下所示
    --render-engine ogre

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索分布式系统监控zabbix------------自动发现与自动注册

目录 一、部署 zabbix 服务端 二、部署 zabbix 客户端 2.1环境准备 2.2服务端和客户端都配置时间同步 &#xff08;ntp&#xff09; 2.2.1服务端zbx-server 2.2.2服务端zabbix-agent01客户端 2.3客户端配置时区&#xff0c;与服务器保持一致 2.4设置 zabbix 的下载源&…

深度学习 Lecture 8 决策树

一、决策树模型&#xff08;Decision Tree Model) 椭圆形代表决策节点&#xff08;decison nodes)&#xff0c;矩形节点代表叶节点&#xff08;leaf nodes)&#xff0c;方向上的值代表属性的值&#xff0c; 构建决策树的学习过程&#xff1a; 第一步&#xff1a;决定在根节点…

allure2教程-1-环境搭建

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 自动化测试执行完成后我们需要展示给其他人看&#xff0c;这就要有自动化测试报告了。复杂的测试报告当然可以自己代码实现&#xff0c;但用pytest-html或allure基本也能满足我们生成测试报告的要求了。本小节介绍…

nacos 安装保姆级教程

安装nacos nacosVersion:2.2.3 需要的java版本较高&#xff0c; 所以这里直接安装jdk17&#xff1b; 安装链接见nacos 和jdk 官网&#xff0c;具体选择下面图片中的两个版本哈 本来想直接传到csdn的&#xff0c;结果这边的资料审核还是有点繁琐&#xff0c;然后上传的速度也有点…

oracle数据库怎么查看当前登录的用户?

方法如下&#xff1a; 输入select * from dba_users; 即可。 常用语句&#xff1a; 一&#xff0c;查看数据库里面所有用户&#xff1a; select * from dba_users; 前提是你是有dba权限的帐号&#xff0c;如sys,system。 二&#xff0c;查看你能管理的所有用户&#xff1…

每日一题 — 串联所有单词的子串

30. 串联所有单词的子串 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;因为words里面的每一个字符串的长度都是固定的&#xff0c;所以可以将题转换成字符在字符串中的所有异位词 设出哈希表定义left和right进窗口维护count判断出窗口维护count 代码&#xff1a; …

高分二号卫星(GF-2):中国遥感科技的新高度

​高分二号卫星&#xff08;GF-2&#xff09;是中国在高分辨率地球观测领域的重要成就&#xff0c;其引入了先进的成像技术和灵活的数据获取模式&#xff0c;为地球资源监测、环境保护、城市规划等领域提供了强大的数据支持。本文将深入介绍高分二号卫星的技术特点、成像能力以…

14.C++常用的算法_排序算法

文章目录 遍历算法1. sort()代码工程运行结果 2. random_shuffle()代码工程运行结果第一次运行结果第二次运行结果第三次运行结果 3. merge()代码工程运行结果 4. reverse()代码工程运行结果 遍历算法 1. sort() 代码工程 sort()函数默认是升序排列&#xff0c;如果想要降序…

a == 1 a== 2 a== 3 返回 true ?

1. 前言 下面这道题是 阿里、百度、腾讯 三个大厂都出过的面试题&#xff0c;一个前端同事跳槽面试也被问了这道题 // &#xff1f; 位置应该怎么写&#xff0c;才能输出 trueconst a ?console.log(a 1 && a 2 && a 3) 看了大厂的面试题会对面试官的精神…

Vue 阶段练习:记事本

将 Vue快速入门 和 Vue 指令的学习成果应用到实际场景中&#xff08;如该练习 记事本&#xff09;&#xff0c;我们能够解决实际问题并提升对 Vue 的技能掌握。 目录 功能展示 需求分析 我的代码 案例代码 知识点总结 功能展示 需求分析 列表渲染删除功能添加功能底部统计…

怎么清除3D模型杂质?---模大狮模型网

在进行3D建模过程中&#xff0c;模型可能会受到各种杂质的影响&#xff0c;这些杂质可能来自于模型本身的结构问题、导入导出过程中的错误、或者是不当的编辑操作所留下的痕迹。清除这些杂质是保证模型质量和渲染效果的关键步骤之一。本文将介绍几种常见的清除3D模型杂质的方法…

总结 HashTable, HashMap, ConcurrentHashMap 之间的区别

前言 HashMap 本身不是线程安全的. 在多线程环境下使用哈希表可以使用: Hashtable&#xff08;不推荐使用&#xff09;ConcurrentHashMap&#xff08;推荐使用&#xff09; HashMap HashMap数据结构 根本&#xff1a; 数组 链表&#xff08;jdk1.7&#xff09;/数组链表红黑…