【Autolabor初级教程】ROS机器人入门 第1章 环境搭建 个人学习笔记

【Autolabor初级教程】ROS机器人入门 第1章 环境搭建 笔记

1.3.1 HelloWorld实现简介

OS中涉及的编程语言以C++和Python为主,ROS中的大多数程序两者都可以实现,C++运行效率高但是编码效率低,Python则反之。基于二者互补的特点,ROS设计者分别设计了roscpp与rospy库,roscpp旨在成为ROS的高性能库,而rospy则一般用于对性能无要求的场景,旨在提高开发效率

image-20240318140418963

  1. 创建工作空间并初始化

    工作空间:一般形式为xxx_ws/src(意思是项目_工作空间workspace),下级目录src用于存放源码

    执行编译catkin_make会在xxx_ws下生成两个文件夹builddevel

    mkdir -p 自定义空间名称/src
    cd 自定义空间名称
    catkin_make
    

image-20240318140727811

image-20240318140715376

  1. 进入src创建ros包并添加依赖

    cd src
    catkin_create_pkg 自定义ROS包名 roscpp rospy std_msgs
    

    image-20240318152508624

    image-20240318144452486

  2. 进入 ros 包的 src 目录编辑源文件

    cd 自定义的包/src,新建源文件xxx.cpp并编辑源文件

    image-20240318152240900

  3. 编辑自定义的包下的 Cmakelist.txt文件

    image-20240318152817455

    编辑以下两项

    image-20240318152933442

    image-20240318154214762

    # 使用指定的源文件来生成目标可执行文件
    add_executable(<name> [source1] [source2 ...])
    
    # 指定目标(可执行文件)需要链接到哪些库文件
    target_link_libraries(上一步的<name>
      ${catkin_LIBRARIES} # 这是一个CMake变量,其中包含了由Catkin软件包导出的库的列表。
    )
    

    参考链接:

    CMake常用命令(五)add_executable命令 生成可执行文件-CSDN博客

  4. 编译并执行

    编译:返回工作空间,并执行catkin_make

    image-20240318160334208

    image-20240318160353584

    执行:打开一个新的终端执行roscore,启动ros的核心,启动完成后返回工作空间启动源文件

    source ./devel/setup.bash:修改环境变量

    rosrun 功能包包名 可执行文件名

    image-20240318160732035

    image-20240318161013173

1.4.2 vscode 使用_基本配置

  • 启动vscode:在项目的workspace目录下执行code .

  • 编译:快捷键ctrl+shift+B,点击catkin_make:build旁的小齿轮(如果没有该选项,检查之前的插件是否全部安装启用)

    image-20240318192910608

    没有出现tasks.json的原因:要点击小齿轮!!!

    注意选择catkin_make:build是不会有tasks.json的

    image-20240318193715850

    tasks.json内容替换为以下代码

    {
    // 有关 tasks.json 格式的文档,请参见
        // https://go.microsoft.com/fwlink/?LinkId=733558
        "version": "2.0.0",
        "tasks": [
            {
                "label": "catkin_make:debug", //代表提示的描述性信息
                "type": "shell",  //可以选择shell或者process,如果是shell代码是在shell里面运行一个命令,如果是process代表作为一个进程来运行
                "command": "catkin_make",//这个是我们需要运行的命令
                "args": [],//如果需要在命令后面加一些后缀,可以写在这里,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”
                "group": {"kind":"build","isDefault":true},
                "presentation": {
                    "reveal": "always"//可选always或者silence,代表是否输出信息
                },
                "problemMatcher": "$msCompile"
            }
        ]
    }
    
  • 创建包:右击src目录,选择create catkin package,设置包名,添加依赖(roscpp rospy std_msgs

    image-20240318195351100

  • 编写源码:在包名的src下新建文件xxx.cpp,编写源文件

  • 编辑配置文件

  • 编译执行:编译——ctrl+shift+B 执行——在两个终端分别执行roscoresource ./devel/setup.bash rosrun 功能包包名 可执行文件名

image-20240318203316725

中文输出乱码问题:在函数开头加入以下任意一条代码

setlocale(LC_CTYPE, "zh_CN.utf8");
setlocale(LC_ALL, "");

1.4.3 launch文件

作用:使用 launch 文件,可以一次性启动多个 ROS 节点

实现

  1. 选定功能包右击 —> 添加 launch 文件夹
  2. 选定 launch 文件夹右击 —> 添加 launch 文件
  3. 编辑 launch 文件内容
  4. 执行launch文件:roslaunch 包名 launch文件名

image-20240318204848204

launch文件书写:

<launch>
    <node pkg="helloworld" type="demo_hello" name="hello" output="screen" />
    <node pkg="turtlesim" type="turtlesim_node" name="t1"/>
</launch>

Note:

  1. 第一个 <launch>没有/,第二个</launch>有/

  2. 格式<node pkg="" type="" name="" />的结束>前有/

  3. 符号含义:

    • node —> 包含的某个节点
    • pkg -----> 功能包
    • type ----> 被运行的节点文件(type实测为图示,应为实际运行的命令)
    • name --> 为节点命名
    • output-> 设置日志的输出目标

    image-20240318212259345

  4. 若要将打印字符输出到屏幕,需要加上output="screen"

1.5.1 ROS文件系统

参考链接:1.5.1 ROS文件系统 · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程

文件系统

WorkSpace --- 自定义的工作空间

    |--- build:编译空间,用于存放CMake和catkin的缓存信息、配置信息和其他中间文件。

    |--- devel:开发空间,用于存放编译后生成的目标文件,包括头文件、动态&静态链接库、可执行文件等。

    |--- src: 源码

        |-- package:功能包(ROS基本单元)包含多个节点、库与配置文件,包名所有字母小写,只能由字母、数字与下划线组成

            |-- CMakeLists.txt 配置编译规则,比如源文件、依赖项、目标文件

            |-- package.xml 包信息,比如:包名、版本、作者、依赖项...(以前版本是 manifest.xml)

            |-- scripts 存储python文件

            |-- src 存储C++源文件

            |-- include 头文件

            |-- msg 消息通信格式文件

            |-- srv 服务通信格式文件

            |-- action 动作格式文件

            |-- launch 可一次性运行多个节点 

            |-- config 配置信息

        |-- CMakeLists.txt: 编译的基本配置

1.5.2 ROS文件系统相关命令

参考链接:1.5.2 ROS文件系统相关命令 · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程

1.增
catkin_create_pkg 自定义包名 依赖包 === 创建新的ROS功能包

sudo apt install xxx === 安装 ROS功能包
2.删
sudo apt purge xxx ==== 删除某个功能包
3.查
rospack list === 列出所有功能包

rospack find 包名 === 查找某个功能包是否存在,如果存在返回安装路径

roscd 包名 === 进入某个功能包

rosls 包名 === 列出某个包下的文件

apt search xxx === 搜索某个功能包
4.改
rosed 包名 文件名 === 修改功能包文件

需要安装 vim

**比如:**rosed turtlesim Color.msg

5.执行
5.1roscore
roscore === 是 ROS 的系统先决条件节点和程序的集合, 必须运行 roscore 才能使 ROS 节点进行通信。

roscore 将启动:

  • ros master
  • ros 参数服务器
  • rosout 日志节点

用法:

roscore或(指定端口号)roscore -p xxxx

5.2rosrun
**rosrun 包名 可执行文件名** === 运行指定的ROS节点

比如:rosrun turtlesim turtlesim_node

5.3roslaunch
**roslaunch 包名 launch文件名** === 执行某个包下的 launch 文件

1.5.3 ROS计算图

ROS 分布式系统中不同进程需要进行数据交互,计算图可以以点对点的网络形式表现数据交互过程。

运行指令:rosrun rqt_graph rqt_graph

小乌龟示例:

计算图

  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咕噜咕噜咕噜噜噜噜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值