皮皮网

【商道源码】【雷霆2.0源码】【源码50套】ros编辑源码_ros 源码编译

来源:问卷源码 时间:2024-12-23 00:03:49

1.1.3 编写一个简单的编编译ROS2 Qt Demo(笔记)
2.ROS2测试源码编译安装cartographer
3.Cartographer ROS编译安装及相关可执行文件理解
4.简述ros系统从创建工作目录到运行节点程序运行的步骤
5.如何编写ros的python程序
6.ROS中MPC局部路径规划器使用方法及源码流程解读

ros编辑源码_ros 源码编译

1.3 编写一个简单的ROS2 Qt Demo(笔记)

       本文详细记录了创建一个简单的ROS2 Qt Demo的全过程。在开始之前,辑源我们参考了"古月居"课程,源码根据学习内容进行笔记整理。编编译

       首先,辑源在ROS2功能包的源码商道源码项目中,新建了名为rclcomm的编编译通信类。具体操作为进入项目目录,辑源选择新建C++类,源码命名为rclcomm。编编译

       将rclcomm.h文件放置在项目的辑源include目录下,rclcomm.cpp文件放在src目录中。源码完成创建后,编编译检查是辑源否需要自动加载,选择不自动加载,源码因为cmake配置中已包含相关文件。

       编写rclcomm.h文件定义通信类的接口,rclcomm.cpp实现类的具体功能。此外,通过CMakeLists.txt文件管理项目的构建。

       实现过程中,我们使用了QThread通信类,通过ROS的方式导入节点。针对发布和订阅话题,我们分别实现相应的功能。

       遇到的雷霆2.0源码主要问题在于发布话题和消息订阅接受编译时出现错误。解决方法是导入std_msgs包,并确保在CMakeLists.txt中正确声明updateTopicinfo函数。

       总结整个项目,我们通过按钮成功发布话题,但如何在按钮操作后停止话题发布仍需进一步研究。源码包括CMakeLists.txt、mainwindow.cpp、rclcomm.h、main.cpp和mainwindow.cpp、rclcomm.cpp等文件。

       通过此项目,我们不仅掌握了ROS2和Qt的集成方法,还深入了解了ROS2消息通信机制,为后续更复杂的项目打下了坚实的基础。

ROS2测试源码编译安装cartographer

       Cartographer是一个跨平台、传感器配置提供实时同步定位和绘图(SLAM)的系统,具有回环检测优势,资源占用适中。

       选择源码编译安装方式,以适应后期项目修改和移植需求。首先,使用Ubuntu虚拟机测试验证。

       若国内访问github受限,可选择Gitee上的备份仓库进行下载。尝试多个版本,源码50套确认在Ubuntu humble版本下能够成功下载和安装。

       在安装过程中,需要下载依赖项。在Ubuntu上,首先安装libabsl-dev、libceres-dev以及liblua5.3-dev等包。对于ceres-solver,需确保CUDA、显卡加速和TBB指令集优化选项已配置。

       在开发板上,通过源码编译安装三方依赖。确保所有依赖包均正确安装,包括protobuf版本为v3.4.1分支。

       完成所有依赖安装后,开始编译Cartographer源码。首先下载官方数据集,注意ROS2格式的rosbag转换,使用rosbags工具进行转换。

       介绍ROSbag格式,ROS1的.rosbag文件为二进制存储格式,而ROS2使用SQLite数据库格式,支持跨平台和扩展性。两种格式转换方法,推荐使用rosbags工具,无需依赖ROS环境。飞蛾源码装备

       测试Cartographer时,使用ros2命令启动示例launch文件,输入特定的bag文件名以加载数据集。测试3D数据集时,使用相应的launch文件和bag文件名。

       资源占用情况分析将后续进行。

Cartographer ROS编译安装及相关可执行文件理解

       一、编译安装Cartographer ROS

       为了安装 Cartographer ROS,首先需要确保ROS版本为kinetic,操作系统为Ubuntu.,并创建一个名为catkin_ws的工作空间。

       安装所需的工具和依赖项,包括wstool、rosdep、ninja。然后,通过catkin_make工具构建并安装cartographer_ros。

       加载数据包进行测试,运行launch和rosbag,最终可以生成slam图。

       二、编译方法

       编译Cartographer ROS时,使用catkin_make命令,这简化了catkin的标准工作流程,依次调用cmake、智慧党校源码make和make install。

       编译后的工作空间内将有src、build_isolated、devel_isolated、install_isolated等文件夹,分别用于源代码、孤立编译、开发和安装。

       三、install_isolated内可执行文件

       在install_isolated文件夹内,有多种可执行文件,如cartographer_assets_writer、cartographer_autogenerate_ground_truth、cartographer_compute_relations_metrics、cartographer_dev_rosbag_publisher等。

       cartographer_assets_writer用于保存和使用有效资源;cartographer_autogenerate_ground_truth自动生成期望的真实输出;cartographer_compute_relations_metrics计算相关指标。

       cartographer_dev_rosbag_publisher发布rosbag信息,用于数据收集与分析;cartographer_dev_trajectory_comparison进行轨迹比较;cartographer_migrate_serialization_format迁移序列化格式。

       cartographer_node为ROS中的核心节点,负责实时SLAM;cartographer_occupancy_grid_node构建并发布ROS的occupancy_grid地图;cartographer_offline_node进行离线SLAM。

       cartographer_pbstream_map_publisher创建静态占据栅格;cartographer_pbstream_to_ros_map将pbstream格式转换为标准ROS格式地图;cartographer_rosbag_validate验证rosbag数据。

       cartographer_start_trajectory用于在本地化模式中设置起始位姿。

       通过这些工具和节点,Cartographer ROS提供了一个全面的SLAM解决方案,包括数据收集、处理、验证和应用。

简述ros系统从创建工作目录到运行节点程序运行的步骤

       简述ROS系统从创建工作目录到运行节点程序的步骤

       一、创建ROS工作目录

       1. 选择合适的位置,创建一个新的文件夹作为ROS工作空间。

       2. 在该工作目录中,进一步创建src文件夹,用于存放ROS相关的源代码。

       二、配置工作环境

       1. 初始化工作空间,通过catkin工具进行构建。

       2. 配置ROS环境变量,确保系统能够识别ROS安装路径及相关依赖。

       三、编写节点程序

       1. 在src文件夹中,根据功能需求编写ROS节点程序。

       2. 节点程序可以是C++、Python或其他支持的语言。

       四、编译节点程序

       1. 在工作目录的根目录下,创建Catkin构建文件(如CMakeLists.txt和package.xml)。

       2. 使用catkin_make命令进行编译,生成可执行文件。

       五、运行节点程序

       1. 通过source命令加载ROS环境。

       2. 使用rosrun命令或roslaunch文件启动节点程序。

       3. 在ROS系统中,节点之间通过发布/订阅、服务等方式进行通信。

       详细解释

       创建ROS工作目录:这是ROS项目的基础,选择一个合适的位置创建一个新文件夹,并在其中创建src文件夹用于存放源代码。

       配置工作环境:通过catkin工具对工作空间进行初始化,配置ROS环境变量,确保系统能够识别ROS的安装路径及相关依赖。这是确保后续编译和运行节点程序的基础。

       编写节点程序:根据项目的功能需求,在src文件夹中编写ROS节点程序。这些程序可以是C++、Python或其他支持的语言。节点是ROS系统中的基本运行单元,负责实现特定的功能。

       编译节点程序:在工作目录的根目录下创建Catkin构建文件,如CMakeLists.txt和package.xml。使用catkin_make命令进行编译,生成可执行文件。这一步是将源代码转化为可执行的二进制文件。

       运行节点程序:首先通过source命令加载ROS环境,然后使用rosrun命令或roslaunch文件启动节点程序。在ROS系统中,各个节点之间通过发布/订阅、服务等方式进行通信,共同完成复杂的任务。

如何编写ros的python程序

       ROS Indigo beginner_Tutorials- ç¼–写 ROS è¯é¢˜ç‰ˆçš„ Hello World ç¨‹åºï¼ˆPython版)

       æˆ‘使用的虚拟机软件:VMware Workstation  

       ä½¿ç”¨çš„Ubuntu系统:Ubuntu ..4 LTS 

       ROS ç‰ˆæœ¬ï¼šROS Indigo

       1. 前言 :

       Hello world ç¨‹åºï¼Œåœ¨æˆ‘们编程界,代表学习某种语言编写的第一个程序。对于 ROS æœºå™¨äººæ“ä½œç³»ç»Ÿæ¥è¯´ï¼Œè¿™ä¸ª Hello World ç¨‹åºå°±æ˜¯ : 写一个简单的消息发布器(发送) 和 订阅器(接收)。

       2. 准备工作 :

       C++ çš„程序都会存放在每个程序包的 src æ–‡ä»¶å¤¹é‡Œã€‚ Python ä¸åŒï¼ŒPython ç¨‹åºéƒ½å­˜æ”¾åœ¨ scripts æ–‡ä»¶å¤¹ä¸­ï¼Œ 反正意思都是 æºæ–‡ä»¶ åŒ…。 

       Step 1 . æ‰€ä»¥ï¼Œå…ˆåœ¨ beginner_tutorials è½¯ä»¶åŒ…中创建一个 scripts æ–‡ä»¶å¤¹ï¼š

       $ roscd beginner_tutorials$ mkdir scripts$ cd scripts

       3. 编写消息发布器节点程序:

       å¦‚果你懒得去写的话,你可以使用 wget å‘½ä»¤ï¼Œ 在 github ä¸ŠèŽ·å–一个 talker.py æºä»£ç ã€‚如何获取呢 ? 

       Step 2 . å¼€ä¸€ä¸ªç»ˆç«¯ï¼Œè¾“入下面的命令就可以获取 talker.py ï¼š

       $ wget 

       -devel/rospy_tutorials/_talker_listener/talker.py$ ls

       talker.py

       ä½†æ˜¯æˆ‘建议你亲自动手,写一写:手动创建一个 talker.py æ–‡ä»¶åœ¨ /scripys æ–‡ä»¶å¤¹é‡Œï¼š

       $ roscd beginner_tutorials/scripts$ gedit talker.py

       å°†è¿™ä¸Šé¢é“¾æŽ¥é‡Œçš„代码手动输入到 talker.py æ–‡ä»¶ä¸­ã€‚(我就不将代码贴上来了)

       ä¸‹é¢æˆ‘来讲解一下代码:

       Step 3 . æœ€åŽä¸€æ­¥ï¼Œç»™è¿™ä¸ª talker.py æ–‡ä»¶åŠ ä¸Šå¯æ‰§è¡Œæƒé™ï¼š

       $ chmod +x talker.py1

       è¿™æ ·ï¼Œä¸€ä¸ªå‘布器就编写完了。我们不要急着去运行它,现在我们编写一个订阅器,来接收这个发布器发布的话题:

       4. 编写消息订阅器节点程序:

       Step 4 . å’Œå‘布器一样,我们使用wget命令获取订阅器的源代码 listener.py:

       $ roscd beginner_tutorials/scripts/$ wget 

       ials/indigo-devel/rospy_tutorials/_talker_listener/listener.py$ ls

       listener.py  talker.py

       ä½†æ˜¯ï¼Œæˆ‘还是建议你自己动手写一下。

       å¥½å§ï¼Œä¸‹é¢æˆ‘们开始讲解 listener.py é‡Œé¢çš„代码,这个listener.py程序的代码简单:

       Step 5 . æœ€åŽä¸è¦å¿˜äº†ç»™è¿™ä¸ªlistener.py åŠ å¯æ‰§è¡Œæƒé™ï¼š

       $ chmod +x listener.py1

       5. 运行 :

       å¯¹äºŽpython æ¥è¯´ï¼Œæˆ‘们不需要使用 catkin_make å‘½ä»¤å¯¹ ~/catkin_ws å·¥ä½œç©ºé—´è¿›è¡Œç¼–译。因为python文件本身就是可执行文件(前提是我们给它添加可执行权限)。

       OK,发布器 å’Œ è®¢é˜…器 éƒ½åˆ›å»ºå®Œäº†ã€‚下面我们运行它们,看看效果:

       Step 6 . æ–°æ‰“开一个终端,先执行 roscore å‘½ä»¤ï¼š

       $ roscore1

       Step 7 . æ–°æ‰“开一个终端,启动 å‘布器 ï¼š

       $ rosrun beginner_tutorials talker.py  1

       Step 8 . æ–°æ‰“开一个终端,启动 è®¢é˜…器 ï¼š

       $ rosrun beginner_tutorials listener.py 1

       è¿è¡Œæ•ˆæžœï¼š

       Step 9 . æˆ‘们来使用 rostopic list ï¼Œçœ‹çœ‹å½“前的话题有哪些:

       $ rostopic list

       /chatter

       /rosout

       /rosout_agg

       å…¶ä¸­ /chatter å°±æ˜¯æˆ‘们在发布器里面发布的 ROS话题。

       6. 扩展,编写一个启动脚本文件 :

       è¿˜è®°å¾—上一节,我们讲的ROS的启动脚本文件吧,下面我们来编写一个launch文件,来将 talker.py å’Œlistener.py æ–‡ä»¶çš„启动工作交个这个launch文件来做:

       Step . æ¥åˆ° beginner_tutorials程序包的 /launch è·¯å¾„下,新建一个 hello_world_topic.launch æ–‡ä»¶ï¼š

       $ roscd  beginner_tutorials/launch$ gedit hello_world_topic.launch   #使用你自己喜欢的文本编辑器

       Step . è¾“入下面的代码:

       <launch>

       <node pkg="beginner_tutorials" name="talker" type="talker.py" />

       <node pkg="beginner_tutorials" name="listener" type="listener.py" /></launch>

       Step . çŽ°åœ¨ï¼Œå°†ä¹‹å‰æ‰“开的终端都关闭,我们启动这个脚本: (开一个终端 : Ctrl+Alt+T)

       $ roslaunch beginner_tutorials hello_world_topic.launch1

       è¿è¡Œç»“果:

       ä¸Šé¢æˆªå›¾çš„输出显示: talker.py å’Œ listener.py è„šæœ¬è¿è¡ŒæˆåŠŸã€‚但是并没有出现刷屏的现象。这是为什么? 为了证明这个脚本程序真的成功的运行了,我们来试一试:

       Step . é‡æ–°å¼€ä¸€ä¸ªç»ˆç«¯ï¼Œè¾“入下面的命令:

       $ rosrun list$ rostopic list$ rostopic echo /chatter

       Step . çŽ°åœ¨ Ctrl+C ç»“束监听 /chatter è¯é¢˜ã€‚使用 rqt_graph å¯¹å½“前启动的节点可视化:

       $ rqt_graph1

       è¿™äº›è¶³ä»¥è¯´æ˜Žï¼Œhello_world_topic.launch å¯åŠ¨è„šæœ¬æ–‡ä»¶ï¼Œå¯åŠ¨æˆåŠŸã€‚

       æ€»ç»“: å‘布器 å’Œ è®¢é˜…器 æ˜¯å¾ˆç®€å•çš„, 就是简单的发布一个 自定义的话题。

       æˆ‘之前使用说过:节点之间通讯的方式有两种 : 话题(rostopic) 和 服务(rosservice)

       æ‰€ä»¥ï¼ŒæŽ¥ä¸‹æ¥ï¼Œæˆ‘们会讲:使用ROS服务来完成ROS版 Hello World ç¨‹åºçš„例子。但是在这之前,我们需要学一学:如何创建自定义的ROS消息和ROS服务,以便 ROS æœåŠ¡ç‰ˆçš„ Hello World ç¨‹åºçš„编写。 

       æ‰€ä»¥ä¸‹ä¸€è®²ï¼Œæˆ‘们来学习:如何创建自定义的ROS消息和ROS服务。

ROS中MPC局部路径规划器使用方法及源码流程解读

       本文主要解析ROS Navigation框架中的MPC局部路径规划器mpc_local_planner的使用方法和源码流程。MPC模型预测控制算法是关键环节,它处理复杂环境,优化性能,但计算复杂度较高。以下是mpc_local_planner的详细步骤:

       1. 首先,将mpc_local_planner从GitHub或其他源代码库下载至ROS工作空间的src文件夹。

       2. 环境配置需安装依赖和环境,可通过rosdep或参考相关博客解决安装问题。链接:[ROS Noetic版本 rosdep找不到命令 不能使用的解决方法]。

       3. 通过catkin_make编译mpc_local_planner包,并通过其自带示例测试其功能,如阿克曼模型小车的动态演示。

       4. 在move_base的launch文件中,将局部路径规划器设置为mpc_local_planner/MpcLocalPlannerROS,并根据机器人特性调整clearing_rotation_allowed参数,如阿克曼车型机器人禁止原地旋转。

       5. 配置参数文件mpc_local_planner_params.yaml,确保路径符合机器人实际情况。

       6. 完成配置后,进行实际路径规划测试,并根据测试结果调整参数,以优化路径规划性能。

       以上步骤详尽介绍了在ROS中使用MPC局部路径规划器mpc_local_planner的步骤,通过这些操作,你将能更好地将其应用到你的机器人项目中。详情请参考《ROS中MPC局部路径规划器使用方法及源码流程解读》。

ROS博客基于ROS的自动驾驶数据集可视化项目(附源代码)

       项目简介

       基于加州大学伯克利分校 MSC Lab的自动驾驶数据集,本项目旨在进行数据集的可视化。项目源代码已上传至 GitHub,英文版文章与演示视频也已准备就绪。

       数据集展示

       左侧展示了GPS信号的可视化,通过 Mapviz 工具,将行驶过程中走过的路径显示出来,左上角则呈现了车前摄像头的视角。右侧是自定义的可视化,利用绿色代表 y 轴正方向,蓝色表示 x 轴正方向。紫色圆点表示汽车行驶过程中各个方向的加速度信息,天蓝色箭头指示汽车前进方向,绿色则代表不同强度的加速度。

       问题与解决方案

       在使用 Mapviz 可视化 GPS 信号时,遇到了数据格式不匹配的问题。通过在自定义的 package 中编写 `trans_GPS.cpp` 文件,成功实现了数据格式转换,解决了数据可视化的问题。同时,还撰写了关于 Mapviz 的基础使用教程。

       加速度信息的可视化涉及确定坐标轴方向、避免信息跳动以及直观显示加速度大小。通过在 RVIZ 中绘制 x 和 y 轴,并使用平滑器处理频繁读取的 IMU 数据,成功解决了这些问题。极坐标系的引入使得加速度大小的显示更为直观。

       汽车前进方向的可视化涉及到姿态信息的获取与 RVIZ 显示角度的调整。通过分析 IMU 的 orientation 数据,并设置 marker 的 orientation 值,实现了方向的正确显示。

       相机信息的可视化面临格式转换问题。通过使用 `image_transport` 包装解决了传感器数据格式不兼容的问题。

       总结

       在本项目中,通过学习与实践 ROS 相关知识,成功实现了自动驾驶数据集的可视化。接下来,将集中精力深入学习 OSM 的使用,并着手进行 GPS 定位与搜索的小项目开发。