一、ROS全称:Robot Operating System
1、ROS=Plumbing(通信)+Tools(工具)+Capabilities(功能)+Ecosystem(生态)
二、C++实现"Hello,World"
1、创建工作环境:
在命令窗口输入
mkdir -p xxx/src
即可创建xxx文件夹,该文件夹下有src文件夹(注意src文件是一定要有的,不然下面编译会出错)
2、进入工作空间并编译:
(1)在命令窗口输入
cd xxx/
(2)之后再调用ros里内置的编译命令
catkin_make
3、创建功能包:
(1)进入工作空间下的src目录
进入工作空间:cd xxx/
进入xxx空间下的src目录: cd src
(2)创建功能包
atkin_create_pkg xxx roscpp rospy std_msgs
(xxx为功能包,可自定义;roscpp rospy std_msgs这三个为依赖包)
4、编写C++程序:
进入功能包中src目录,新建文件夹并重命名为.cpp文件后编写程序:
//1.包含ros的头文件
#include "ros/ros.h"//2.编写main函数
int main(int argc, char *argv[])
{
//3.初始化ros节点
ros::init(argc,argv,"hello_node");
//4/输出日志
ROS_INFO("hello,world");
return 0;
}
5、编辑文件内容:
进入功能包下的CMakeLists.txt文件:
add_executable(C++文件名
src/C++文件名.cpp
)
target_link_libraries(C++文件名
${catkin_LIBRARIES}
)
(add_executable第一处修改时映射,第二处修改时配对)
(target_link_libraries第一处修改和add_executable第一处修改一样,也是映射到C++源文件)
6、编译程序并执行程序
(1)在工作空间下,在终端打开窗口,并输入
catkin_make
即可完成编译
(2) 完成后再输入
roscore
来启动ros核心
(3)再输入
cd 工作空间
source ./devel/setup.bash
rosrun 包名 C++节点
(包名就是工作空间下的src目录下的功能包,C++节点就是前面的映射部分)
注意:第二行source ./devel/setup.bash是为了刷新该窗口,使程序在该窗口下能执行,但是换到其他的窗口就要重新输入一遍这个程序了。
要想优化配置,需要做如下操作:
·ctrl+h打开所有隐藏文件
·找到bashrc文件并打开拉至最后
·添加内容:source ~/(工作环境)/devel/setup.bash
·输入source .bashrc
完成上述步骤之后即可在任意窗口完成工作
三、vscode使用-基本配置
参考视频P27-P28
1、创建ROS工作空间
roslin@roslin-VirtualBox:~$ mkdir -p ros2/src
roslin@roslin-VirtualBox:~$ cd ros2/
roslin@roslin-VirtualBox:~/ros2$ catkin_make
2、启动vscode
roslin@roslin-VirtualBox:~/ros2$ code .
3、vscode中编译ros
(出现程序运行中文乱码的问题,可在最前面加setlocale(LC_ALL,"");)
四、launch实现多节点工作
1、选定功能包后右击,添加launch文件夹
2、选定launch文件夹后右击,添加.launch类型的文件
3、编辑launch文件内容,例如:
<launch>
<node pkg="helloworld" type="demo_hello" name="hello" output="screen" />
<node pkg="turtlesim" type="turtlesim_node" name="t1"/>
<node pkg="turtlesim" type="turtle_teleop_key" name="key1" />
</launch>
-
node ---> 包含的某个节点
-
pkg -----> 功能包
-
type ----> 被运行的节点文件
-
name --> 为节点命名
-
output-> 设置日志的输出目标
4、运行launch文件
roslaunch 包名 .launch类型的文件名
五、修改配置(重要)
快捷键 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"
}
]
}