9.12 下午-晚上

1.3 ROS快速体验,但是我体验了一个半小时 才体验成功

遇到的问题:

1.cmakelists配置好了但忘了删注释符号,我是sssssssssssssssssb。

2.运行如下下载指令时:sudo apt install terminator

报错:正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。

原因:另一个进程(例如,另一个软件包管理器或系统更新)正在使用 apt

解决办法:

查看哪些进程在运行:

sudo lsof /var/lib/dpkg/lock-frontend

将该进程结束:

sudo kill 进程名

收获:

一、ROS编程流程

  1. 在主目录里创建一个工作空间(文件夹),假设名字为workplace
  2. 在/workplace里创建source文件夹,假设名字为src
  3. 在目录/workplace里打开终端,运行catkin_make
  4. 在/workplace/src里打开终端,运行(ROS包名为hello)     
    catkin_create_pkg 自定义ROS包名 roscpp rospy std_msgs
     创建软件包,依赖项有roscpp  rospy  std_msgs                                                          
  5. 在目录/workplace/src/hello创建文件夹src
  6. 在/workplace/src/hello/src里创建.cpp文件并编写,假设.cpp文件名为hello.cpp
  7. 配置/workplace/src/hello里的CMakelists,这里源文件名称就是.cpp文件名
    add_executable(步骤3的源文件名
      src/步骤3的源文件名.cpp
    )
    target_link_libraries(步骤3的源文件名
      ${catkin_LIBRARIES}
    )
  8. 在目录/workplace里重新catkin_make,启动roscore,继续在工作空间/workplace里运行
    source ./devel/setup.bash
    rosrun 包名 C++节点

二、一些困惑

为什么要在工作空间终端运行catkin_make?

catkin_make 通过扫描你的 ROS 工作空间中的 src 目录来查找 ROS 包,然后编译这些包。这个过程包括编译源代码、链接库文件、生成消息和服务文件等。

catkin_make 会自动处理 ROS 包之间的依赖关系。它会根据 package.xml 文件中的依赖项和 CMakeLists.txt 文件中的指令,确保所有必需的依赖项都被正确编译和链接。

一个 ROS 工作空间可以包含多个 ROS 包,catkin_make 会处理整个工作空间中的所有包,而不仅仅是单个包。这使得管理和构建多个相关的 ROS 包变得更简单和一致。

也就是说catkin_make可以编译工作空间里所有ROS包,也会保证CMakelists列表里的依赖项正确编译和链接,还会保证package.xml文件里有的别人写的包的 依赖关系正确。

package.xml文件是 ROS 包的元数据文件,用于描述包的基本信息和依赖关系。它包括包的名称、版本、作者、许可证以及依赖的其他 ROS 包或系统库。这个文件帮助 ROS 构建系统和工具识别、管理和正确配置包。

为啥rosrun之前要运行 source ./devel/setup.bash  ?

source devel/setup.bash 用于设置你的终端环境,以便 ROS 可以正确地找到和使用你的工作空间中编译的包。它配置了环境变量,如 ROS_PACKAGE_PATHCMAKE_PREFIX_PATH,这些变量指向你的工作空间的开发文件夹,使得 ROS 可以识别和使用你的包和库。

总的来说,

  • catkin_make 确保你的包及其依赖项被正确编译和链接,并处理包之间的依赖关系。
  • source devel/setup.bash 配置你的终端环境,使得 ROS 可以识别和使用你在工作空间中编写的包和构建生成的文件。

        

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值