提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
1.先创建一个工作空间;
2.创建功能包
3.编辑源文件即程序文件
4.编辑配置文件
5.编译并执行
提示:以下是本篇文章正文内容,下面案例可供参考
一、总结概述C++
1.创建工作空间并初始化
mkdir -p demo01_ws/src
cd demo01_ws/src
catkin_init_workspace
cd ..
catkin_make
2.创建功能包
cd src
catkin_create_pkg helloworld roscpp rospy std_msgs
3.编辑cpp源文件
cd demo01_ws/src/helloworld/src
touch helloworld_c.cpp
//回车后双击进入写节点程序
//1.包含ros头文件
#include "ros/ros.h"
//2.编写main函数
int main(int argc, char *argv[]){
//3.初始化节点
ros::init(argc,argv,"hello_node");
//4.输出日志
ROS_INFO("hello world");
return 0;
}
4.编辑配置文件
进入src中的功能包的Cmakelist.txt文件,修改两处:名称和链接库。
//第一处,删掉注释,替换项目名称节点(随意命名);
//修改.cpp的文件名和编辑的文档一致;
add_executable(${PROJECT_NAME}_node src/helloworld_node.cpp)
//第二处,删掉注释
target_link_libraries(${PROJECT_NAME}_node
${catkin_LIBRARIES}
)
5.编译并执行
打开终端,cd进入工作空间,catkin_make,编译
cd demo01_ws
catkin_make
//先启动核心,单独开终端
roscore
//在工作空间目录下
source ./devel/setup.bash
rosrun helloworld project_name就是上面4随意命名的名字
小知识点: source的.bashrc文件的设置方法。
PS: source ~/工作空间/devel/setup.bash
二、总结概述Python
1-2.和上面的一部分一致,在同一工作空间下的src文件夹下的功能包中新建一个scripts文件夹,创建一个.py文件。
3.编辑.py文件
#! /usr/bin/env python
##指定解释器
#1.导包
import rospy
#2.编写主入口
if __name__=="__mian__":
#3.初始化ROS节点
rospy.init_node("hello_p");
#4.输出日志
rospy.loginfo("hello world! by python");
修改.py文件的权限:
1.右键属性,可执行文件打勾;
2.指令修改如下;
//查看权限
ll
//helloworld_p.py为.py的名称
chmod +x helloworld_p.py
//给所有的python文件加可执行权限
chmod +x *.py
ll
4.编译运行
//cd到工作空间
catkin_make
//打开一个终端
roscore
//运行文件
rosrun helloworld helloworld_p.py
三、总结概述VsCode的使用C++
1.进入vscode调试配置
//进入工作空间,打开一个终端,输入
code .
//回车进入VScode
2.快捷键Ctrl shift B,选择catkin_make:build后面的设置,对vscode/tasks.json文件进行修改。修改代码如下:
{
"version": "2.0.0",
"tasks": [
{
"label": "catkin_make:debug",//代表提示的描述性信息
"type":"shell",//可以选择shell或者process,如果是shell代码是在shell里面运行一个命令
"command":"catkin_make",
"args":[],//如果需要在命令后面加一些后缀,可以写在这里
"group":{"kind":"build","isDefault":true},
"presentation":{
"reveal": "always"//可选always或者silence,代表是否输出信息
},
"problemMatcher":"$msCompile"
}
]
}
3.对vscode/c_cpp_properties.json文件的修改。修改目的为在编写代码时可以自动提示对应代码,修改代码如下:
{
"configurations": [
{
"browse": {
"databaseFilename": "",
"limitSymbolsToIncludedHeaders": true
},
"includePath": [
"/opt/ros/noetic/include/**",
"/usr/include/**"
],
"name": "ROS",
"intelliSenseMode": "gcc-x64",
"compilerPath": "/usr/bin/gcc",
"cStandard": "gnu17",
"cppStandard": "c++17"//我的没有生成这个文件,是自己敲上的。
}
],
"version": 4
}
4.解决输出时中文乱码问题:
//解决乱码,加如下代码,是在ros初始化代码前加。
setlocale(LC_ALL,"");
四、总结概述VsCode的使用python
1.进入到功能包下,新建存放python文件的scripts文件夹,在scripts文件里新建.py的文件。
2.编写python代码如下:
#! /usr/bin/env python
#导包
import rospy
#入口
if __name__ == "__main__":
#初始化ros节点
rospy.init_node("hello_p")
#输出日志
rospy.loginfo("hello vscode! 这是python!")
3.配置CMakeLists.txt文件,在这个install附近找,上面是C++的修改配置,下面是python的修改配置。
4.对文件的编译运行,要注意运行时所在的不同目录下的差异
//在对应的文件夹下修改python文件权限
chmod +x *.py
//回到工作空间下编译
catkin_make
//打开新终端,打开ros核心
roscore
//刷新环境变量
source ./devel/setup.bash
//加载运行
rosrun .py的文件
5.因版本问题造成的问题解决方案说明。
//声明python解释器
#! /usr/bin/env python
//出现的现象:当不配置CMakeLists.txt 执行 python 文件抛出异常如下:
# /usr/bin/env:"python":没有那个文件或目录
//原因是当前noetic使用的是python3
//解决方法1:直接声明解释器为 Python3(不建议)
#! /usr/bin/env python3
//解决方法2:通过软链接将 python 链接到 python3(推荐)
sudo ln -s /usr/bin/python3 /usr/bin/python
五、launch文件的使用
1.在功能包下新建launch文件夹,右键新建.launch文件。编辑代码如下,然后按ctrl+ ~ 进入终端,roslaunch + 包名 + launch文件名:
<launch>
<!-- 添加被执行的节点 -->
<!-- 乌龟GUI -->
<node pkg="turtlesim" type="turtlesim_node" name="turtle_GUI" />
<node pkg="turtlesim" type="turtle_teleop_key" name="turtle_key" />
<node pkg="hello_vscode" type="hello_vscode_c" name="hell" output="screen" />
</launch>
2.释义注解
node——包含的某个节点
pkg——功能包
type——被运行的节点文件
name——为节点命名
output——设置日志的输出目标