ROS基础学习

2022年9月16日

一、ros快速体验

刚开始ros的学习,真的是基础不牢地动山摇啊!!!

1.ros工作空间的创建,mkdir-p name/src        cd name        catkin_make,这才算把工作空间创建好。

2.工作包的创建,cd src        catkin_create_pkg name roscpp rospy std_msgs 。

3.源码的实现,cd name        cd src,编写源码,错误百出!!!

#include "ros/ros.h"

int main(int argc,char *argv[]){

    ros::init(argc, argv, "helloWorld");
    ROS_INFO("helloWorld!");

    return 0;

}

第一个helloWorld为节点名,注意ROS_INFO函数的用法。

修改cmakeLists.txt文件。

add_executable(helloWorld_node src/helloWorld_c.cpp)
target_link_libraries(helloWorld_node
   ${catkin_LIBRARIES}
 )

其中helloWorld_node为调用时运行的文件名。

写好后,到工作空间的根目录编译catkin_make。

4.代码的运行

首先运行roscore指令,另外打开一个终端,运行source指令,刷新环境变量,也可以直接在.bashrc文件中写入下面的第一行程序,保存后退出,再根目录下调用第二行程序即可。

source ~/demo_stu/devel/setup.bash
source .bashrc

这样每次就不需要运行该指令。然后运行rosrun指令,指定package和node即可。

yankai@yankai-linux:~/demo_stu$ rosrun helloWorld helloWorld_node 
[ INFO] [1663319467.507848846]: helloWorld!

二、ros开发集成环境搭建

1.Terminator终端的安装

常用快捷键

Alt+Up                          //移动到上面的终端
Alt+Down                        //移动到下面的终端
Alt+Left                        //移动到左边的终端
Alt+Right                       //移动到右边的终端
Ctrl+Shift+O                    //水平分割终端
Ctrl+Shift+E                    //垂直分割终端
Ctrl+Shift+C                    //复制选中的内容到剪贴板
Ctrl+Shift+V                    //粘贴剪贴板的内容到此处
Ctrl+Shift+W                    //关闭当前终端
Ctrl+Shift+Q                    //退出当前窗口,当前窗口的所有终端都将被关闭
Ctrl+Shift+X                    //最大化显示当前终端
Ctrl+Shift+Z                    //最大化显示当前终端并使字体放大

2.vscode的安装与使用

一步一步来即可。

其中注意复制下面的代码

快捷键 ctrl + shift + B 调用编译,选择:catkin_make:build

可以点击配置设置为默认,修改.vscode/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"
        }
    ]
}

中文乱码解决,在主函数前加上以下任何一行程序即可

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

3.launch文件演示

launch文件是写在包下单独创建的launch文件夹中

写完launch文件后,按ctrl+~,完成launch文件的更新

简单的launch文件







  • node ---> 包含的某个节点

  • pkg -----> 功能包

  • type ----> 被运行的节点文件

  • name --> 为节点命名

  • output-> 设置日志的输出目标

 三.ROS框架

1.ros文件系统

ROS基础学习_第1张图片

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: 编译的基本配置

2.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 日志节点

5.2rosrun

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

比如:rosrun turtlesim turtlesim_node

5.3roslaunch

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

3.ros设计图

ROS 内置的小乌龟案例来演示计算图

首先,按照前面所示,运行案例

然后,启动新终端,键入: rqt_graph 或 rosrun rqt_graph rqt_graph,可以看到类似下图的网络拓扑图,该图可以显示不同节点之间的关系。

 ROS基础学习_第2张图片

以上为今天所学内容,今天上午摸鱼,下午晚上才学,进度也算可以了,明天继续加油!!!

你可能感兴趣的:(学习,机器人)