当前位置: 首页 > 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.xdnf.cn/news/31789.html

相关文章:

  • DeepSeek与Napkin:信息可视化领域的创新利器
  • [matlab]南海地形眩晕图代码
  • Github 2025-04-19Rust开源项目日报 Top10
  • Prompt-Tuning 提示词微调
  • 机器学习核心算法全解析:从基础到进阶的 18 大算法模型
  • MySQL运维三部曲初级篇:从零开始打造稳定高效的数据库环境
  • 10软件测试需求分析案例-查询学习信息
  • 详讲Linux下进程等待
  • Go-zero框架修改模版进行handler统一响应封装
  • 手撕 简易HashMap
  • YOLO11改进-Backbone-使用MobileMamba替换YOLO backbone 提高检测精度
  • 在服务器上部署MinIO Server
  • JMeter实现UI自动化测试的完整方案
  • 配置管理与系统文档
  • MyImgConverter:图片批量处理工具
  • 智能提示语全周期优化系统:云原生架构设计与工程实践
  • LPDDR中读操作不存在Additive Latency(AL)的技术思考
  • opencv 最近邻插值法的原理
  • 集合框架(详解)
  • 手机投屏到电视方法
  • 从UDS协议学习ISO网络七层架构:汽车诊断网络协议的分层逻辑剖析
  • vue3专题1------父组件中更改子组件的属性
  • 应急响应篇近源攻击Docker镜像容器分析Dockfile路径定位基线扫描
  • MPTCP 的吞吐困局
  • 数据库基础-B+树
  • 使用 #pragma warning(push) 局部开启更高等级
  • 性能比拼: Elixir vs Go
  • MATLAB 控制系统设计与仿真 - 39
  • 春和景明-C语言简单代码
  • 又一张支付牌照注销