ROS学习笔记(7)进一步深入了解ROS第一步

0.前提

        最近在学习宾夕法尼亚大学工程学院的ROS公开课,在尽力的去融入全英语的环境(哪怕我的英语水准并不是很高)。既然是在学习,笔记也就是必须的了,当然这些笔记都是课程当中提出的问题,我去寻找后得出的答案,可能并不是最准确的,请一定要认真辨别。

1. (Python & C++) What is a CMakeList? Is it related to a make file used for compiling C++ objects? If yes then what is the difference between the two?(什么是CMakeList?是否作用于c++文件的编译?python和c++文件的编译有何区别?)

1.What is a CMakeList?(什么是CMakeList?)

1.CMakeLists.txt 

        CMakeLists.txt用于构建软件包的 CMake 构建系统的输入。任何符合CMake 的包都包含一个或多个 CMakeLists.txt 文件,用于描述如何生成代码以及将其安装到的位置。用于 catkin 项目的 CMakeLists.txt 文件是一个标准的 CMakeLists.txt 文件,具有一些附加约束。(通俗了讲就是记录了功能包的编译规则。)

2.CMakeLists.txt 文件格式

1.CMake版本:cmake_minimum_required()

2.包名:project()

3.构建所需的其他CMake/Catkin软件包:find_package()

4.开启Python模块支持:catkin_python_setup()

5.消息/服务/操作生成器:add_message_files()、add_service_files()、add_action_files()

6.调用消息/服务/操作生成:generate_messages()

7.指定包构建信息导出 catkin_package()

8.构建的库/可执行文件 add_library()/add_executable()/target_link_libraries()

9.构建测试:catkin_add_gtest()

10.安装规则:install()

详情请查阅ROS官方文档(查看官方资料比网络流传更重要)catkin/CMakeLists.txt - ROS Wiki

2.Is it related to a make file used for compiling C++ objects?(是否作用于c++文件的编译?)

是的,作用于C++文件的编译。

3.If yes then what is the difference between the two?(python和c++文件的编译有何区别?)

Python代码没有使用add_library()和 add_executable()函数

2. (Python & C++) Are you using CMakeList.txt for Python in ROS? Is there a executable object being created for Python?(在ROS中对python文件会使用CMakeList.txt吗?是否为Python创建了可执行对象?)

1.Are you using CMakeList.txt for Python in ROS?(在ROS中对python文件会使用CMakeList.txt吗?)

会的,但我目前还未经历过要使用的情况(我资历太浅)。

2.Is there a executable object being created for Python?(是否为Python创建了可执行对象?)

创建了。

3. (Python & C++) In which directory would you run catkin make?(catkin_make在哪使用?)

在工作空间路径(也就是ws的位置)

4. (Python & C++) The following commands were used in the tutorial:

       $ source / opt / ros / kinetic ( melodic )/ setup . bash

       $ source devel / setup . bash

Why do we need to source setup.bash? What does it do? Why do we have to different setup.bash files here and what is there difference?(为什么我们要source setup.bash?如何做?为什么两者不同?不同在哪?)

设置环境变量 (source devel/setup.bash)是为了系统能够找到这个工作空间,Ubuntu默认使用的终端是bash,需要在bash中设置ros环境变量,最好把它放在家目录的.bashrc目录下,以便系统启动时能够执行其中的source /opt/ros/kinetic/setup.bash指令,使得工作空间中的环境变量可以生效,这样系统终端能够读懂ros命令,执行相应的操作。

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

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

相关文章

【STM32】I2C通信

基本的任务是:通过通信线,实现单片机读写外挂模块寄存器的功能。其中至少要实现在指定位置写寄存器和在指定的位置读寄存器这两个功能。 异步时序的优点:省一根时钟线,节约资源;缺点:对事件要求严格&#…

20231228在Firefly的AIO-3399J开发板的Android11的挖掘机的DTS配置单前置摄像头ov13850

20231228在Firefly的AIO-3399J开发板的Android11的挖掘机的DTS配置单前置摄像头ov13850 2023/12/28 10:42 【碰到一个很神奇的问题】: 昨天晚上前置摄像头怎么也点不亮!改了巨多的地方!晚上睡觉之前把开发板彻底断电了!今天开电脑…

深度生成模型之GAN基础 ->(个人学习记录笔记)

文章目录 深度生成模型之GAN基础生成对抗网络1. 生成对抗网络如何生成数据2. 生成对抗原理3. GAN的核心优化目标4. D的优化5. GAN的理想状态6. GAN的训练7. 梯度不稳定与模式崩塌(collapse mode)问题8. 梯度消失问题 深度生成模型之GAN基础 生成对抗网络 1. 生成对抗网络如何…

深入研究矫正单应性矩阵用于立体相机在线自标定

文章:Dive Deeper into Rectifying Homography for Stereo Camera Online Self-Calibration 作者:Hongbo Zhao, Yikang Zhang, Qijun Chen,, and Rui Fan 编辑:点云PCL 欢迎各位加入知识星球,获取PDF论文,欢迎转发朋…

【Java并发】深入浅出 synchronized关键词原理-上

一个问题的思考 建设我们有两个线程,一个进行5000次的相加操作,另一个进行5000次的减操作。那么最终结果是多少 package com.jia.syn;import java.util.concurrent.TimeUnit;/*** author qxlx* date 2024/1/2 10:08 PM*/ public class SynTest {privat…

稳部落 – 新浪微博备份导出工具

稳部落 稳部落是新浪微博备份导出工具,可以帮助用户非常方便的导出备份新浪微博的数据,让我们可以永久保存这些微博数据。它支持新浪微博、微博私信、微博评论的导出,并可以备份包含图片、视频的完整微博内容。用户只需登录微博账号&#xf…

Java学习,一文掌握Java之SpringBoot框架学习文集(2)

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

【计算机毕业设计】SSM游戏点评网站

项目介绍 本项目分为前后台,前台为普通用户登录,后台为管理员登录; 管理员角色包含以下功能: 管理员登录,管理员管理,网站用户管理,游戏资讯管理,游戏类型管理,城市信息管理,竞技场管理,游戏信息管理,游戏评价信息管理等功能。…

双侧电源系统距离保护MATLAB仿真模型

微❤关注“电气仔推送”获得资料(专享优惠) 系统原始数据 双侧电源系统模型如图所示: 仿真模型搭建 将线路AB分成Line1和Line2,将线路BC分成Line3和Line4,用三相电压电流测量模块作为系统母线,根据系统已…

Java基础-----集合类(一)

文章目录 1.集合类简介2. 自定义集合类 1.集合类简介 集合和数组一样,都是用来存储多个数据的结构,也可以称作容器。 数组长度是不可变化的,一旦在初始化数组时指定了数组长度,这个长度就不可变。如果需要处理数量变化的数据&am…

Flutter 混合开发 - 动态下发 libflutter.so libapp.so

背景 最近在做包体积优化,在完成代码混淆、压缩,裁剪ndk支持架构,以及资源压缩(如图片转webp、mp3压缩等)后发现安装包的中占比较大的仍是 so 动态库依赖。 具体查看发现 libflutter.so 和 libapp.so 的体积是最大的&…

探索Java的魅力

从本篇文章开始,小编准备写一个关于java基础学习的系列文章,文章涉及到java语言中的基础组件、实现原理、使用场景、代码案例。看完下面一系列文章,希望能加深你对java的理解。 本篇文章作为本系列的第一篇文章,主要介绍一些java…

【数据库原理】(6)关系数据库的关系操作集合

基本关系操作 关系数据操作的对象都是关系,其操作结果仍为关系,即集合式操作。关系数据库的操作可以分为两大类:数据查询和数据更新。这些操作都是基于数学理论,特别是集合理论。下面是对这些基本操作的解释和如何用不同的关系数据语言来表达这些操作的…

STM32入门教程-2023版【3-2】推挽输出和开漏输出驱动问题

关注 点赞 不错过精彩内容 大家好,我是硬核王同学,最近在做免费的嵌入式知识分享,帮助对嵌入式感兴趣的同学学习嵌入式、做项目、找工作! 二、正式点亮一个LED灯 (4)推挽输出和开漏输出驱动问题 把LED的正负极对换&…

react useEffect 内存泄漏

componentWillUnmount() {this.setState (state, callback) > {return;};// 清除reactionthis.reaction();}useEffect 使用AbortController useEffect(() > { let abortController new AbortController(); // your async action is here return () > { abortCo…

008、所有权

所有权可以说是Rust中最为独特的一个功能了。正是所有权概念和相关工具的引入,Rust才能够在没有垃圾回收机制的前提下保障内存安全。 因此,正确地了解所有权概念及其在Rust中的实现方式,对于所有Rust开发者来讲都是十分重要的。在本文中&…

添加 Android App Links

添加 Android App Links功能 介绍一个简单的效果Android配置Add Url intent filtersAdd logic to handle the intentAssociate website 搭建网页支持AppLinks 介绍 Android App Links 是指将用户直接转到 Android 应用内特定内容的 HTTP 网址。Android App Links 可为您的应用带…

计算机网络--作业

作业一 1、比较电路交换、报文交换和分组报文交换优缺点 电路交换 电路交换是以电路连接为目的的交换方式,通信之前要在通信双方之间建立一条被双方独占的物理通道(由通信双方之间的交换设备和链路逐段连接而成)。 优点: ①由于…

SpringSecurity-2.7中跨域问题

SpringSecurity-2.7中跨域问题 访问测试 起因 写这篇的起因是会了解到 SSM(CrosOrigin)解决跨域,但是会在加入SpringSecurity配置后,这个跨域解决方案就失效了,而/login这个请求上是无法添加这个注解或者通过配置(WebMvcConfig)去解决跨域,所以只能使用SpringSecurity提供的.c…

MySQL的安装网络配置

目录 一. MySQL5.7的安装 二. MySQL8.0的安装 三. 配置网络访问 思维导图 一. MySQL5.7的安装 1. 解压 2. 将my.ini文件放入到解压文件中 3. 编辑my.ini文件,将路径改为当前路径 4. 进到bin目录下,以管理员身份打开cmd命令窗口 5. 安装MySQL服务 my…