如何开始一个ROS工程

1、ROS新建并初始化工作空间

mkdir  -p  ~/demo01_ws/src
cd  ~/demo01_ws/src
catkin_init_workspace  //生成本工作个空间、src目录下的顶层CmakeLists.txt文件

2.A、命令行编译ROS工作空间

cd ~/demo01_ws
catkin_make     //编译工作空间的命令

首次编译,工作空间根目录会自动产生 build 和 devel 两个文件夹及其中的文件。devel 文件夹中产生 setup.bash 环境变量设置脚本。使用 source 命令运行脚本文件 setup.bash 以使工作空间中的环境变量生效。(肉眼可见的效果为:使 $PACKAGE_PATH 包含功能包所在路径,不论是官方写的包,还是自己写在ws/src里的包)


2.B、VSCode快捷键编译ROS工作空间

先说效果:经过如下配置,可在VSCode中使用 Ctrl + Shift + B 快捷键编译ROS工作空间。

code  ~/demo01_ws        //使用 code 打开工作空间目录             

首次使用VSCode打开工作空间时,按Ctrl + Shift + B后会出现以下界面:

鼠标移到 catkin_make: build (两者中短的那个)以使其高亮,然后点击右边的小齿轮进行配置,点击小齿轮后会来到如下界面:

将tasks.json文件内容用如下代码覆盖,即可在VSCode中使用Ctrl + Shift + B快捷键编译ROS工作空间。

{
// 有关 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"
        }
    ]
}

注:主要起作用的是 “group”:这行


3.A、命令行创建ROS功能包

catkin_create_pkg  <package_name>  [depend1]  [depend2]  [depend3]

3.B、VSCode中创建ROS功能包

① 右键点击工作空间中的顶层src目录
② 在下拉菜单中选择 Creat Catkin Package

③ VSCode顶部会弹出如下界面,需要填写功能包的名字,按Enter完成以进入下一步

④ 在与步骤③相同的位置,现在需要输入依赖包

⑤ 修改工作空间下面的默认.vscode目录中的c_cpp_properties.json文件,以达到代码提示的目的。只需修改一处:将 gnu++14 改为 c++17

  


4、新建一个c++功能包后,功能包目录下的CMakeLists.txt文件的配置

add_executable(节点名称  src/C++源文件名.cpp)  //给.cpp源文件映射一个名称(从右映射为左),一般源文件叫啥,
                                              //映射名称就叫啥,只是去掉了.cpp后缀,最多加个_node后缀。参数①②都要改
                                              //一个功能包中可以有多个节点,类似一个工作空间下可以有多个功能包
target_link_libraries(节点名称   ${catkin_LIBRARIES})  //只需改参数①,与映射名称一致


5、运行功能包

①打开一个终端,启动ROS核心

roscore

②在工作空间目录再打开一个终端,键入命令

source  ./devel/setup.bash
rosrun  功能包名  节点名(或标签5中所说的映射名称)

(非必须的步骤,只是方便的小技巧)添加 ROS 环境变量,使本工作空间在所有所有终端生效的方法:

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

6、解决打印中文日志时输出乱码的问题

在main函数的开始添加如下一行语句即可解决

setlocale(LC_ALL, "");

7、main函数的参数不可被const修饰

我目前我也不知道为什么,先听话,以后出了问题多个排错方向。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值