【oracle dsg源码】【-66的源码】【简单火箭源码】ros源码

时间:2024-12-22 20:26:03 来源:搜客淘宝客源码 分类:休闲

1.Cartographer ROS编译安装及相关可执行文件理解
2.ROS2测试源码编译安装cartographer
3.怎么在github上找到对应ros版本的Gmapping源代码?
4.rosbag相关源码解析
5.rosa的isource的作用
6.ROS 2中级教程——8 使用colcon构建软件包

ros源码

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

       一、编译安装Cartographer ROS

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

       安装所需的oracle dsg源码工具和依赖项,包括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等文件夹,分别用于源代码、-66的源码孤立编译、开发和安装。

       三、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解决方案,包括数据收集、处理、验证和应用。

ROS2测试源码编译安装cartographer

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

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

       若国内访问github受限,可选择Gitee上的备份仓库进行下载。尝试多个版本,确认在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文件名。

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

怎么在github上找到对应ros版本的Gmapping源代码?

       在 GitHub 上找到对应 ROS 版本的 Gmapping 源代码,可以按照以下步骤进行操作:

       打开 GitHub 网站,并在搜索栏中输入 "Gmapping",按下回车键进行搜索。

       在搜索结果中,找到 Gmapping 的官方仓库,通常是 "ros-gmapping/gmapping"。

       打开 Gmapping 仓库页面后,找到 "Releases" 或者 "Tags" 选项,829源码王通常在仓库的右侧。

       在 "Releases" 或 "Tags" 页面中,可以看到 Gmapping 的版本列表。找到与你使用的 ROS 版本相对应的 Gmapping 版本。

       点击所需版本的标签或链接,进入该版本的源代码页面。

       在该页面中,你可以浏览 Gmapping 的源代码,包括 package.xml、CMakeLists.txt、src 目录等。

       如果你需要下载源代码,可以点击 "Clone or download" 按钮,并选择 "Download ZIP" 选项来下载整个仓库的源代码。

       请注意,不同版本的 ROS 可能对应不同的 Gmapping 版本。在查找 Gmapping 源代码时,请确保选择与你使用的 ROS 版本兼容的 Gmapping 版本。

rosbag相关源码解析

       rosbag核心功能解析

       rosbag主要由rosbag包和rosbag_storage包构成,其常用功能包括play、record和view。下面逐一探讨它们的实现流程。

       Record功能

       记录过程如下:

       指定要订阅的topic,通过subscribe函数进行订阅。

       subscribe函数关联doQueue回调,关键代码如下:

       ... (doQueue函数内容省略)

       执行doRecord函数保存数据,涉及doWrite函数,主要调用writeMessageDataRecord:

       ... (doWrite和writeMessageDataRecord函数内容省略)

       Play功能

       播放过程包括:

       通过Bag类打开并解析.bag文件。

       初始化view对象,用于有条件地显示数据。

       发布bag内消息并进行广告。

       消息的发布。

       Bag类与View类

       Bag类用于打开并解析.bag文件,解析工作主要在startReadingVersion函数内进行。而View类在Bag类的基础上,对解析结果进行筛选和展示,它负责迭代bag内消息数据,流程如下:

       构造View类时,通过updateQueries函数处理消息迭代器。

       初始化iters_,根据消息时间进行排序。

       每次输出时间最早的message_instance_并补充后续消息,保持时间顺序。

       对iters_内的实体持续更新并排序。

rosa的isource的作用

源代码管理、依赖关系管理和包发布和共享。

       1、源代码管理:iSource提供了一种机制,使得开发人员能够将源代码组织成包,并对其进行版本控制。这有助于维护代码的一致性和可追溯性,同时使得开发人员能够更方便地管理和共享代码。

       2、依赖关系管理:iSource通过ROS构建系统来管理包的依赖关系。开发人员可以通过iSource来声明他们所依赖的包,并且ROS构建系统会自动地处理包的构建和链接问题。这有助于减少开发人员的工作量,并提高代码的可靠性。

       3、包发布和共享:iSource提供了发布和共享包的功能。开发人员可以通过iSource将他们的包发布到ROS软件库中,使得其他开发人员可以轻松地获取和使用这些包。这有助于促进代码的共享和重用,并加速机器人技术的发展。

ROS 2中级教程——8 使用colcon构建软件包

       本教程旨在向读者展示如何使用colcon工具来创建并构建ROS 2工作空间。尽管本教程是实践性的,并不替代核心文档,但建议在学习过程中参考相关文档以获取更全面的知识。

       首先,了解colcon工具,它代表了ROS构建工具catkin_make,catkin_make_isolated,catkin_tools和ament_tools的改进版本。更多关于colcon设计的信息可查阅指定文档。

       要开始使用colcon,请访问GitHub上的colcon组织,下载并安装源代码。具体而言,Linux用户可以通过命令行使用sudo apt install python3-colcon-common-extensions,macOS用户则使用python3 -m pip install colcon-common-extensions,而Windows用户应执行pip install -U colcon-common-extensions。

       在安装完colcon和ROS 2后,需要创建一个用于存放软件包的ROS工作空间。Linux和macOS用户可使用mkdir -p ~/ros2_example_ws/src cd ~/ros2_example_ws,而Windows用户则执行md \dev\ros2_example_ws\src cd \dev\ros2_example_ws命令。此时工作空间内仅包含一个名为src的空目录。

       接下来,将ROS 2示例源代码存储库克隆到src目录中,通过git clone github.com/ros2/example... src/examples操作完成。确保检出与已安装ROS版本兼容的分支。然后,在工作空间根目录中运行colcon build命令以构建软件包。在Windows操作系统上构建时,请参考“构建ROS 2代码”以获取详细信息。

       构建完成后,可以在install目录中找到已安装的软件包。为了使用这些安装好的可执行文件或库,需要将它们添加到路径和库路径中。colcon会在install目录中生成bash / bat文件,通过source这些文件即可完成环境设置。

       之后,可以通过ros2 run命令运行colcon构建的可执行文件。以ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function为例,运行订阅者节点。同时,可以在另一个终端中运行发布者节点(别忘了source安装脚本),以确保消息正确传输。

       对于创建自己的软件包,colcon使用REP 中定义的package.xml规范(也支持format 2)。它支持多种构建类型,包括ament_cmake、ament_python和纯cmake软件包。ament_python构建中,setup.py文件作为构建的主要入口点。例如,demo_nodes_cpp软件包使用ament_cmake构建类型,并利用CMake作为构建工具。

       为了简化创建软件包的过程,ros2 pkg create工具可以用于基于模板创建新的软件包,这相当于catkin用户中的catkin_create_package。

       在使用colcon时,读者可以参考一些提示来提高工作效率。例如,如果不想构建特定的软件包,可以将其目录中放置一个名为COLCON_IGNORE的空文件。另外,若要避免在CMake软件包中配置和构建测试,可以传递参数--cmake-args -DBUILD_TESTING=0。此外,可以通过colcon test命令运行单个特定测试,只需指定软件包和测试名称即可。

如何编写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局部路径规划器使用方法及源码流程解读》。