ROS学习笔记1:基础知识

前言

本人ROS小白,利用寒假时间学习ROS,在此以笔记的方式记录自己每天的学习过程。争取写满15篇(1/15)。
环境:Ubuntu20.04、ROS1:noetic
环境配置:严格按照下方学习链接的教程配置,基本一次成功。
学习链接:【Autolabor初级教程】ROS机器人入门
对应链接文档:ROS机器人入门课程《ROS理论与实践》
本期关键词:vscode,helloworld(C++/python),launch

VScode

VScode的安装

  1. 在Ubuntu浏览器里直接搜索VScode,进入官网下载即可,注意要下载Linux版本的。
  2. 在“下载”文件夹里找到刚刚下载的.deb文件,双击开始安装即可,如果安装失败,提示“密钥无法识别”等信息,可以运行指令sudo chmod 777 安装包文件名,然后再重复点击几次安装,直到成功为止。(本人就是这样安装成功的)

初始环境配置

  1. 安装C++、Python、ROS等插件
  2. 在创建好的工作空间下打开code,重新配置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"
        }
    ]
}
// You can use the shortcut key "Ctrl+Shift+B" to complie.
  1. 使用Ctrl+Shift+B快捷键编译,成功编译即初始化成功。

Hello World编写

实现流程

  1. 创建工作空间
  2. 创建ROS包,并添加依赖(通常为roscpp rospy std_msgs
  3. 编辑源文件(.cpp/.py)
  4. 编辑配置文件(CMakeLists.txt)
  5. 编译并执行(catkin_makerosrun

工作空间创建

  1. mkdir -p catkin_ws/src在当前目录创建文件
  2. cd catkin_ws
  3. catkin_make
  4. ls查看catkin_ws目录下是否多出了builddevel,有就表示创建成功
  5. 需注意,ROS包的命名规则要求包名不能有大写字母,否则会有以下警告:WARNING: Package name "HelloWorld_Test" does not follow the naming conventions. It should start with a lower case letter and only contain lower case letters, digits, underscores, and dashes.

基于C++

  1. 在catkin_ws目录下打开vscode,命令:code .
  2. 在src目录下创建ROS包和依赖库,在新的src目录下创建.cpp文件,测试代码如下:
#include "ros/ros.h"

int main(int argc, char *argv[])
{
    // 执行 ros 节点初始化
    ros::init(argc, argv, "hello");
    // 创建 ros 节点句柄(非必须)
    ros::NodeHandle n;

    // 控制台输出 hello world
    ROS_INFO("hello world!");

    return 0;
}

  1. 写好之后修改CMakeLists.txt文件
# 这里的helloworld_test是hello.cpp的映射
add_executable(helloworld_test src/hello.cpp)

target_link_libraries(helloworld_test
  ${catkin_LIBRARIES}
)
  1. Ctrl+Shift+B编译
  2. 另外:写C++代码时,VScode的一键代码排版快捷键:Alt+Shift+Q(可修改,我在Ubuntu的就是这,在Windows上的是Alt+Shift+F
  3. 代码执行:编译好之后,在工作空间目录(catkin_ws目录)下执行source ./devel/setup.bash,然后再运行roscore,新开终端,运行rosrun helloworld_test(包名) helloworld_test(cpp文件的映射)
  4. 注意:一定要先执行roscore指令再执行source ./devel/setup.bash,最后再执行rosrun helloworld_test(包名) helloworld_test(cpp文件的映射) ,否则会报错,找不到ROS包

基于Python

  1. 在ROS包下创建scripts文件夹,在scripts里创建.py文件,测试代码如下所示:
#! /usr/bin/env python

# 第一行是用来声明Python解释器的

import rospy # 1.导包

if __name__ == "__main__":

    rospy.init_node("Hello_Vscode_p")  # 2.初始化 ROS 节点
    rospy.loginfo("Hello VScode, 我是 Python ....")  #3.日志输出 HelloWorld

  1. 添加可执行权限:chmod +x 文件名.py
  2. 编辑ROS包下的CMakeLists文件(注意不要编辑到工作空间src下的CMakeLists)
catkin_install_python(PROGRAMS
  scripts/hello_p.py
  DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
  1. 配置好以上,编译和执行流程和C++的一样

launch文件

  1. 示例:pkg、type、name是必有属性;pkg就是包,type就是节点类型,name可以自定义
<launch>

    <!--add node-->
    <!--turtle GUI-->
    <node pkg="turtlesim" type="turtlesim_node" name="gui" />
    <node pkg="turtlesim" type="turtle_teleop_key" name="key" />
    <node pkg="helloworld" type="hello_c" name="hello" output="screen"/>

</launch>
  1. 可以理解为将多个节点指令打包输出,使用roslaunch运行launch文件。
  2. 终端指令格式:roslaunch helloworld(ROS包名) start_turtle.launch(ROS包launch文件夹下的launch文件)
  • 19
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值