赞
踩
写在前面,本系列笔记参考的是AutoLabor的教程,具体项目地址在 这里
输入以下命令行安装terminator
终端
sudo apt-get install terminator
terminator
终端可以进行拆分,安装完成后启动的终端效果如下:
直接在snap
商店中搜索vscode
选择第一个软件进行安装即可,注意安装完成后需要对vscode
进行更新
使用以下命令对vscode
进行更新
sudo apt-get upgrade
sudo apt-get install vscode
需要安装的插件有c/c++ python ros
,直接在插件商城搜索安装最多下载量的那个就可以。
使用终端在用户目录下创建工作空间并且初始化
cd 用户目录
mkdir -p xxx_ws/src
cd xxx_ws
catkin_make
如果使用catkin_make
进行编译时失败,出现
CMake Error at /opt/ros/melodic/share/catkin/cmake/empy.cmake:29 (message):
Unable to find either executable 'empy' or Python module 'em'... try
installing the package 'python-empy'
Call Stack (most recent call first):
/opt/ros/melodic/share/catkin/cmake/all.cmake:163 (include)
/opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:20 (include)
CMakeLists.txt:56 (find_package)
那是因为,catkin找的python版本为anaconda下面的版本,所以需要改为指定采用下面的命令
catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3
可以在vscode中通过图形化的方式来进行打开,不过这里推荐使用命令行的方式进行打开
cd xxx_ws
code .
然后在vscode中使用ctrl + shift + B
执行第一次编译,在执行第一次编译之前我们需要对编译文件进行一些配置,选择这里的这个齿轮进入配置文件开始配置
将其修改为以下的内容:
{ // 有关 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" } ] }
或者是以下内容,具体看会不报上面提到的错误
{ // 有关 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": ["-DPYTHON_EXECUTABLE=/usr/bin/python3"],//如果需要在命令后面加一些后缀,可以写在这里,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2” "group": {"kind":"build","isDefault":true}, "presentation": { "reveal": "always"//可选always或者silence,代表是否输出信息 }, "problemMatcher": "$msCompile" } ] }
即完成配置,这时我们使用ctrl + shift + B
执行第一次编译,没有报错即可进行下一步
在安装ROS插件的前提下我们可以直接用图形化的方式来创建ROS功能包,省去了使用命令行
cd src
catkin_create_pkg 自定义Ros包名 roscpp rospy std_msgs
的麻烦。
这里直接使用图形化的方式来创建ROS功能包,在路径xxx_ws/src
中创建功能包,如果没有该选项说明你没有安装ROS插件。
然后确定自己的包名,这里取的包名为holavscode
(注意:包名不能有大写字母)
紧接着为包添加依赖,一般的依赖都包括roscpp rospy std_msgs
这样我们就创建好了一个ROS功能包,接下来我们就可以在这个ROS功能包中继续完成我们的源码文件了。
首先为python脚本文件创建一个存放的文件夹,
然我们可以在这个文件夹中开始编写我们的python脚本文件,这里写一个简单的脚本文件,打印一条信息Holaaaaa Vscode!!!
#! usr/bin/env python
#为python选择解释器
import rospy
if __name__ == "__main__":
rospy.init_node("hola")
rospy.loginfo("Holaaaaa Vscode!!!")
然后,使用chmod +x *.py
可以为所有python文件添加可执行权限
接下来我们需要修改CmakeList.txt
文件,找到
#############
## Install ##
#############
的位置,修改
catkin_install_python(PROGRAMS scripts/自定义文件名.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
修改完成后使用ctrl + shift + B
执行编译,编译成功会出现以下的提示:
然后我们可以进行验证,打开两个终端,在第一个终端中输入
roscore
在第二个终端中先进行数据刷新,然后运行节点
cd xxx_ws
source ./devel/setup.bash
rosrun 包名 脚本文件名.py
首先为包添加一个可执行Cpp
文件,输入以下内容
#include "ros/ros.h"
int main(int argc, char *argv[])
{
setlocale(LC_ALL, "");
//执行节点初始化
ros::init(argc, argv, "HolaVscode");
//输出日志信息
ROS_INFO("Holaaaaaa Vsode!!!");
return 0;
}
注:如果使用cpp时没有代码提示:
修改 .vscode/c_cpp_properties.json
设置 “cppStandard”: “c++17”
然后修改CmakeList.txt
文件
在CmakeList.txt文件中找到
###########
## Build ##
###########
部分
add_executable(执行结点名
src/源文件名.cpp
)
target_link_libraries(执行结点名
${catkin_LIBRARIES}
)
例如这样
需要记住这个执行结点名,因为在后面使用rosrun
运行程序的时候需要使用这个节点名,
在运行包之前同样要进行编译ctril+shift+B
和缓存刷新
cd 工作空间
source ./devel/setup.bash
运行Cpp脚本和Python脚本有一点区别,Cpp需要编译所以我们使用的是其执行结点名,而Python脚本不需要编译我们可以直接使用源文件
rosrun 包名 执行节点名 #运行cpp脚本
rosrun 包名 python源文件名 #运行python脚本
下面是一个例子
1、介绍
当我们在一个程序中需要启动多个节点时,如果每次都用rosrun
逐一启动,显然效率低下,那么更好的做法是使用launch
文件,一次性启动多个节点。
2、实现
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>
4.更新缓存
source ./devel/setup.bash
5.运行launch文件
roslaunch 包名 launch文件名
3、示例
为我们的上述代码编写launch文件,并且输出到终端
<launch>
<node pkg="holavscode" type="holavs_c" name="hell_c" output="screen"/>
<node pkg="holavscode" type="holavs_p.py" name="hello_p" output="screen"/>
</launch>
结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。