首页 > 其他分享 >史上最详细的ROS学习笔记

史上最详细的ROS学习笔记

时间:2023-01-17 20:23:40浏览次数:55  
标签:文件 ROS catkin 创建 笔记 空间 cpp ros 史上

第一节:ROS的一些基本操作

注意事项:

在乌班图里面安装好ros之后,需要搭建ros集成开发环境,方便我们进行相关的操作,下载VScode和Terminator软件。

Terminator安装命令:“sudo apt install terminator”

VScode下载地址:“https://code.visualstudio.com/docs?start=true”下载后双击即可安装。

VScode安装后需要配置tasks.json才能编译ROS,在创建功能包后,快捷键 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"

}

]

}

 

注:如果不能实现乌班图内外相互复制,可以执行以下两个命令:

sudo apt-get autoremove open-vm-tools

sudo apt-get install open-vm-tools-desktop

 

一、创建工作空间

(一)、创建工作空间,并在工作空间下面生成src文件夹

mkdir -p 工作空间名/src

(二)、进入工作空间

cd 工作空间名

(三)、编译工作空间

catkin_make

二、在工作空间下创建功能包

注:这一步骤也可在vscode中直接创建功能包,只需进入右键工作空间下的src目录,选择最后一项“Create Catkin Package”,输入功能包名,回车,输入依赖包名,回车,即可。

(一)、进入功能包

cd src

(二)、导入功能包的依赖

catkin_create_pkg 功能包名 roscpp rospy std_msgs

三、在功能包下面编写代码

(一)、cpp版

1、在功能包的src目录下创建cpp文件并进行编写

直接在vscode中右键创建即可

最简单的cpp源文件:

#include "ros/ros.h" //导入ros的包,任何ros的cpp文件都要导入这个头文件

int main(int argc, char *argv[]) //定义主函数,注意第二个参数中的const一定删

{

//执行 ros 节点初始化

ros::init(argc,argv,"hello"); //这是在初始化ros结点,“hello”为节点名

//创建 ros 节点句柄(非必须)

ros::NodeHandle n; //这是在初始化节点句柄,节点句柄可以用来调用各种函数

//控制台输出 hello world

ROS_INFO("hello world!"); //这是在进行日志输出,即在我们的终端中输出内容

return 0;

}

注:(1)、当日志输出中包含中文时会出现乱码,解决方法为:在函数开头加入下面任意一句代码

setlocale(LC_CTYPE, "zh_CN.utf8");

setlocale(LC_ALL, "");

(2)、如果没有代码提示,解决方法为:修改 .vscode/c_cpp_properties.json文件,设置 "cppStandard": "c++17"

2、编辑功能包的Cmakelist.txt文件

这个文件只需改两个地方:

add_executable(cpp文件的映射名称

src/xxx.cpp

)

target_link_libraries(cpp文件的映射名称

${catkin_LIBRARIES}

)

 

注:cpp的映射名称可以随便起,在执行时我们会调用映射名称,但一般我们要求其与cpp文件名一致;xxx.cpp即改功能包src目录下的cpp文件名带后缀。另外这两个命令分别在Cmakelist.txt文件的136、149行附近。

3、进入工作空间目录并编译

注:这一步骤也可以在vscode中直接使用,使用ctrl+shift+B直接编译即可。

cd 自定义空间名称

catkin_make

4、执行代码

首先在第一个终端下运行:

roscore

启动ros核心,使用ros之前必须执行这一步

接着创建第二个终端,在该终端下:

cd 工作空间名

source ./devel/setup.bash
rosrun 功能包名 映射名称

 

注:source ./devel/setup.bash是在修改环境变量,每创建一个终端都需要运行这句话;也可以直接在.bashrc文件中进行设置,.bashrc文件隐藏在我们乌班图的主目录下,使用ctrl+H即可取消隐藏,在文件最后追加“source home/ros/工作空间名/devel/setup.bash”,然后新建终端,运行一次.bashrc文件,输入“source .bashrc”即可。设置完之后就无需每个终端都修改环境变量。

(二)、python版

1、进入 ros 包添加 scripts 目录并编辑 python 文件

先创建scripts文件:

cd ros包

mkdir scripts

进入scripts后,右键创建.py文件,文件名可以任意定义

最简单的.py源文件:

#! /usr/bin/env python

# 选择一个python解释器

import rospy

if __name__ == "__main__":

    rospy.init_node("Hello") # 这是在初始化ros结点,“hello”为节点名

    rospy.loginfo("Hello World!!!!") # 这是在进行日志输出

2、为 python 文件添加可执行权限

先进入scripts目录,在终端下输入ll可查看可执行权限,接着输入下列语句:

chmod +x文件名.py

再输入ll查看权限是否有变化,若无变化,可尝试下列语句:

sudo chmod 777 文件名.py

3、编辑 ros 包下的 CamkeList.txt 文件

catkin_install_python(PROGRAMS scripts/文件名.py

DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}

)

注:这个命令在Cmakelist.txt文件的162行附近。

4、进入工作空间目录并编译

注:这一步骤也可以在vscode中直接使用,使用ctrl+shift+B直接编译即可。

cd 自定义空间名称

catkin_make

5、执行代码

首先在第一个终端下运行:

roscore

接着创建第二个终端,在该终端下:

cd 工作空间名

source ./devel/setup.bash

rosrun 功能包名 文件名.py

标签:文件,ROS,catkin,创建,笔记,空间,cpp,ros,史上
From: https://www.cnblogs.com/godxumyblog/p/17058630.html

相关文章

  • 学习笔记——Spring中的注解;Spring中装配对象的注解;使用注解配置对象中属性
    2023-01-17一、Spring中的注解 1、使用注解的原因(1)使用注解将对象装配到IOC容器中(2)使用注解管理对象之间依赖关系(自动装配)2、Spring中装配对象的注解(1)@Component标......
  • ABB 800XA学习笔记29:AC 800M硬件10
    这一篇学习笔记我在新浪博客发表过,地址是ABB800XA学习笔记29:AC800M硬件10_来自金沙江的小鱼_新浪博客(sina.com.cn)在这里也记录一遍,以免丢失继续学习2.7硬件配置硬......
  • ABB 800XA学习笔记30:AC 800M硬件11
    2.7.5在模块总线上添加S800IO模板打开刚刚插入的控制器结构,右键单击模块总线并选择“插入单元”。 然后选择适当的S800I/O和位置(插槽)2.7.6在PROFIBUS总线上添......
  • ABB 800XA学习笔记26:AC 800M硬件7
    这一篇学习笔记我在新浪博客记录过,地址是ABB800XA学习笔记26:AC800M硬件7_来自金沙江的小鱼_新浪博客(sina.com.cn)在这里也记录一次,以免丢失继续学习2.5.2IO连接可能......
  • ABB 800XA学习笔记27:AC 800M硬件8
    2.5.5 CI801的局限性一个工作站可以连接的最大I/O模块数为24个模块。由于PROFIBUS-DPV1规范,不可能始终连接24个I/O模块。原因是S800I/O系统包含的数据和用户......
  • ABB 800XA学习笔记28:AC 800M硬件9
    这一篇学习笔记我在新浪博客记录过,地址是ABB800XA学习笔记28:C800M硬件9_来自金沙江的小鱼_新浪博客(sina.com.cn)在这里也记录一次,以免丢失接着学习2.6硬件冗余2.6.1......
  • ABB 800XA学习笔记2:AC 800M硬件4
    这一篇学习笔记我在新浪博客记录过,地址是ABB800XA学习笔记23:AC800M硬件4_来自金沙江的小鱼_新浪博客(sina.com.cn)我在这里也记录一遍,以免丢失2.3.6AC800M通讯端口CPU......
  • ABB 800XA学习笔记24:AC 800M硬件5
    这一篇学习笔记我在新浪博客记录过,地址是ABB800XA学习笔记24:AC800M硬件5_来自金沙江的小鱼_新浪博客(sina.com.cn)在这里我也记录一次,以免丢失继续学习:2.4通讯接口单......
  • ABB 800XA学习笔记25:AC 800M硬件6
    这一篇学习笔记我在新浪博客记录过,地址是ABB800XA学习笔记25:AC800M硬件6_来自金沙江的小鱼_新浪博客(sina.com.cn)在这里也记录一遍,以免丢失2.4.2通讯交换总线CEX......
  • ABB 800XA学习笔记22:AC 800M硬件3
    这一篇学习笔记我在新浪博客发表过,地址是ABB800XA学习笔记22:AC800M硬件3_来自金沙江的小鱼_新浪博客(sina.com.cn)在这里也记录一遍,以免丢失接着学习2.3.3高性能CPU-......