当前位置: 首页 > news >正文

2. ubuntu20.04 和VS Code实现 ros的输出 (C++,Python)

本节对应赵虚左ROS书籍的1.4.2

1)创建工作空间

mkdir -p catkin_ws/src
cd catkin_ws
catkin_make

2) 终端进入VS Code

code .

3) vscoe 的基本配置

        3.1)修改.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"}]
}

        3.2)修改 .vsocde/c_cpp_properties.json 修改内容如下:

      "cppStandard": "c++14"-->"cppStandard": "c++17"

在vscode 的终端下 编译一下

catkin_make

4)创建功能包

        src目录下右键选中 create catkin package 

        在弹出的横框中写入功能包名 hello_ros  ,回车

        再输入依赖 roscpp rospy std_msgs

这样就新建了一个功能包了

5)在功能包的src目录下新建cpp文件,并且写入:

#include "ros/ros.h"
int main(int argc,char *argv[]){setlocale(LC_ALL,"");ros::init(argc,argv,"hello_ros_c");ROS_INFO("He 哈");return 0;
}

6) 或者在功能包下新建scripts ,在scripts目录下新建python文件,并且写入:

#! /usr/bin/env pythonimport rospyif __name__ == "__main__":rospy.init_node("hello_ros_p")rospy.loginfo("he 哈")

7) 修改功能包目录下CMakeLists.txt

        7.1) C++的修改(136行,149行)

//136行 后面为cpp文件名,前面为自定义节点名(尽量和cpp文件名一样即可)
add_executable(hello_ros src/hello_ros.cpp)//149行 hello_ros也为前面的节点名target_link_libraries(hello_ros${catkin_LIBRARIES}
)

        7.2)python的修改

//这里的scripts文件夹要创建,防止报错 
catkin_install_python(PROGRAMSscripts/hello_ros.pyDESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

8)编译运行

编译

catkin_make

新建终端打开roscore

roscore

 8.1) cpp执行 rosrun <包名> <节点名>

source ./devel/setup.bash
rosrun hello_ros hello_ros

8.2) python执行 rosrun <包名> <python文件名>

source ./deve/setup.bash
rosrun hello_ros hello_ros.py

http://www.dtcms.com/a/143382.html

相关文章:

  • JAVA设计模式——(1)适配器模式
  • .gitignore 可能失效的原因
  • 在 Amazon Graviton 上运行大语言模型:CPU 推理性能实测与调优指南
  • XCVU13P-2FHGA2104I Xilinx Virtex UltraScale+ FPGA
  • 基于LSTM-AutoEncoder的心电信号时间序列数据异常检测(PyTorch版)
  • 简单代码应用
  • Linux(autoDL云服务器)mamba-ssm环境安装——一次成功!
  • 【计算机网络 | 第二篇】常见的通信协议(一)
  • 【HDFS入门】HDFS数据冗余与容错机制解析:如何保障大数据高可靠存储?
  • day29 学习笔记
  • 洛谷题目:P8624 [蓝桥杯 2015 省 AB] 垒骰子 题解 (本题简)
  • linux kernel irq相关函数详解
  • 系分架构论文《论高并发场景的架构设计和开发方法》
  • 股指期货跨期套利是如何赚取价差利润的?
  • Java实现将MarkDown保留文档内容及格式输出到浏览器页面
  • 基于控制台的小车导航游戏开发详解(C++实现)
  • 嘉立创原理图、PCB常见问题
  • 10.thinkphp的响应
  • MCP协议驱动的功能纳米材料设计及其在光催化甲烷偶联中的创新应用
  • CPU Loading and Task Loading Visualization Tool
  • 加一:从简单问题到复杂边界的深度思考
  • 每日一记:CRT和图论
  • 【软考-高级】【信息系统项目管理师】【论文基础】资源管理过程输入输出及工具技术的使用方法
  • vue3专题1------父组件中更改子组件的属性
  • 【信息系统项目管理师】高分论文:论信息系统项目的干系人管理(商业银行绩效考核系统)
  • Prompt-Tuning 提示词微调
  • 离线安装elasticdump并导入和导出数据
  • Android Studio 获取配置资源与第三方包信息详解
  • ProfiNet转DeviceNet边缘计算网关多品牌集成实践:污水处理厂设备网络融合全流程解析
  • [特殊字符] Kotlin与C的类型别名终极对决:typealias vs typedef,如何让代码脱胎换骨?