引言:主体学习根据赵虚左老师教学视频《ROS理论与实践》
几种实现话题通讯的方法:
一、直接法:(古月居)不使用IDE编写
二、集成法:(奥特学院)使用VScode IDE编写
二、集成法
1.创建工作区
建立工作区文件夹demo01_ws,位于根目录下的test文件夹内,-p可创建多个文件夹:
mkdir -p ~/text/demo01_ws/catkin_ws/src
使用cd命令从根目录移动至工作空间内:
cd ./text/demo01_ws/catkin_ws/
返回上一级:
cd ..
编译工作空间,生成build,install等文件夹:
catkin_make
2.启动VScode
进入catkin_ws启动vscode:
code .
3.vscode中编译ros配置
快捷键ctrl+shift+B调用vscode调试编译功能窗口,选择catkin_make:build,修改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" } ] }创建功能包:
选择src右击,选择create catkin package:
依次在跳出对话框设置包名,添加依赖:
plumbing_pub_sub
std_msgs rospy roscpp
3.创建发布者代码/订阅者代码(c++版)
在功能包plumbing_pub_sub目录下的src中,创建发布者/订阅者文件:
demo01_pub.cpp
demo02_sub.cpp
编写代码:
(1)发布者代码
(2)订阅者代码
4.配置发布者/订阅者编译规则
配置编译规则CMakeLists.txt:
add_executable(demo01_pubsrc/demo01_pub.cpp)
add_executable(demo02_sub src/demo02_sub.cpp)
target_link_libraries(demo01_pub ${catkin_LIBRARIES})
target_link_libraries(demo02_sub ${catkin_LIBRARIES})
5.编译并运行功能包
编译工作空间:
ctrl+shift+B
启动节点管理者:
roscore
另起一个窗口配置环境变量以及运行发布者功能包:
source devel/setup.bash
rosrun plumbing_pub_sub demo01_pub.cpp
再另起一个窗口配置环境变量以及运行订阅者功能包:
source devel/setup.bash
rosrun plumbing_pub_sub demo02_sub.cpp
转自课程资料:
编译: ctrl + shift + B
执行: 和之前一致,只是可以在 VScode 中添加终端,首先执行:
source ./devel/setup.bash
PS:
如果不编译直接执行 python 文件,会抛出异常。
1.第一行解释器声明,可以使用绝对路径定位到 python3 的安装路径 #! /usr/bin/python3,但是不建议
2.建议使用 #!/usr/bin/env python 但是会抛出异常 : /usr/bin/env: “python”: 没有那个文件或目录
3.解决1: #!/usr/bin/env python3 直接使用 python3 但存在问题: 不兼容之前的 ROS 相关 python 实现
4.解决2: 创建一个链接符号到 python 命令:
sudo ln -s /usr/bin/python3 /usr/bin/python