ROS保姆级教程之ROS基本操作1

目录

注意:使用ROS前的准备

(一)、使用ROS前需要提前配置好Linux环境

1、方式一:使用虚拟机安装ubuntu系统

2、方式二:安装Linux双系统

(二)、安装ROS

(三)、安装ROS后推荐安装的插件和需要使用的操作

1、安装Terminator

2、安装VScode

3、解决乌班图虚拟机内外不能相互复制问题

一、创建工作空间

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

(二)、进入工作空间

(三)、编译工作空间

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

(一)、进入功能包

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

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

(一)、cpp版

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

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

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

4、执行代码

(二)、python版

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

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

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

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

5、执行代码


注意:使用ROS前的准备

(一)、使用ROS前需要提前配置好Linux环境

1、方式一:使用虚拟机安装ubuntu系统

(1)、VMbox

(2)、vmware

上述两种虚拟机软件均可选择,vmware正版需要付费,VMbox是免费的。

vmware的下载可以参考:

https://blog.csdn.net/weixin_52799373/article/details/124324077

VMbox的下载可以参考:

https://blog.csdn.net/l1015649309/article/details/124519596

2、方式二:安装Linux双系统

双系统的安装可以参考:

https://blog.csdn.net/hwh295/article/details/113409389

(二)、安装ROS

在终端逐行运行以下命令即可:

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update
sudo apt install ros-noetic-desktop-full

echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

安装后测试:

终端1:

roscore

终端2:

rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key

能用键盘控制小乌龟运动说明已经安装成功

(三)、安装ROS后推荐安装的插件和需要使用的操作

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

1、安装Terminator

Terminator安装命令:

sudo apt install terminator

2、安装VScode

(1)、VScode下载地址:“Documentation for Visual Studio Code”下载后双击即安装。

(2)、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"
        }
    ]
}

3、解决乌班图虚拟机内外不能相互复制问题

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、当日志输出中包含中文时会出现乱码,解决方法为:在函数开头加入下面任意一句代码。2、如果没有代码提示,解决方法为:修改 .vscode/c_cpp_properties.json文件,设置 "cppStandard": "c++17"。

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

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 功能包名
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

猜你喜欢

转载自blog.csdn.net/ekekex/article/details/130102946
ROS