编写第一个ros程序

1.下载VScode

下载链接如下:

Download Visual Studio Code - Mac, Linux, Windows

 下载ARM64下的.deb文件

打开虚拟机,再rosnoetic下新建一个文件夹VSCODE,将windows下的文件导入该文件夹下如下图。

在该文件夹下右键选择在终端中打开

 输入如下代码

sudo dpkg -i code_1.100.2-1747260578_amd64.deb 

然后会跳出一个界面直接选择是然后回车即可

然后可以把VSCODE删除掉(这是.deb是安装包删了不影响)

2.打开VSCODE并放入收藏夹

然后按两次ESC键可以回到桌面。

2.打开VSCODE并下载相关扩展

需要下载如下扩展

安装完这些插件后重启VSCODE

3.创建一个ROS工作空间

在主文件夹下打开一个终端输入

mkdir -p demo1_ros/src

然后再输入(可以用tab补齐)

cd demo2_ros/

然后在输入

catkin_make

会发现执行后demo1_ros文件夹下会多出来build和devel

然后再输入(注意code(空格).)打开vscode

code .

打开后按下 ctrl + shift + B

再上面的对话框中选择第二个并打开那个设置按钮

 后会弹出一个这个界面

将下面这个代码替换进去即可然后按ctrl+s保存

{"version": "2.0.0","tasks": [{"type": "catkin_make","args": ["--directory","/home/rosnoetic/demo1_ros","-DCMAKE_BUILD_TYPE=RelWithDebInfo"],"group":{"kind": "build","isDefault": true},"problemMatcher": ["$catkin-gcc"],"label": "catkin_make: build"}]
}

然后右键src选择创建package 

在弹窗中输入hello 按下回车键

 

 再新的弹窗中输入依赖项如下代码和下图后回车

roscpp rospy std_msgs

 按ctrl + shift+ B如果编译没问题则配置正确

 然后就会多出来一个hello文件夹(你上面的工作包叫啥名这里多出来啥文件夹)

4.创建一个CPP程序

再hello文件夹下找到src文件夹右键新建文件helloworld.cpp

4.1 打开helloworld.cpp输入以下代码

//导入标准头文件
#include "ros/ros.h"int main(int argc, char *argv[])
{ros::init(argc,argv,"helloworld");//创建ros节点ROS_INFO("hellworld\n");//打印输出return 0;
}

4.2 打开hello文件夹下的CMakeLists.txt

通过ctrl+f找到add_executable打开这一行注释

并改为下面

add_executable(helloworld src/helloworld.cpp)

前面是节点后面是在hello文件夹下的cpp文件位置

找到在add_executable下的第一个target_link_libraries将下面三行取消注释。

并将其改为下面代码(将上面的节点改为设的helloworld即可)

target_link_libraries(helloworld${catkin_LIBRARIES}
)

然后ctrl + s 保存后,按ctrl+shift+B编译,成功后如下图

4.3 运行cpp文件

3.1新建一个终端输入roscore

输入roscore后回车

再建一个终端输入(更新环境)

source ./devel/setup.bash

 在输入(rosrun  (你的工作包文件夹)(你的节点映射))

rosrun hello helloworld

发现输出成功 

4.4 配置自动补齐

5.创建一个py文件 

在hello文件夹下新建一个scripts文件夹

 5.1新建一个py文件

5.2在helloworld.py中输入如下代码

#! /usr/bin/env python
#配置编译器#导入包
import rospy#main函数if __name__ == "__main__":rospy.init_node("hellopy")  #初始化节点rospy.loginfo("this is a python helloworld \n") #输出

5.3打开hello文件夹下的CMakeLists.txt

按ctrl + f搜索catkin_install_python取消注释这三行

并将其改为如下代码后ctrl +是保存后按ctrl + shift +B运行编译

catkin_install_python(PROGRAMSscripts/helloworld.pyDESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

5.4运行python文件

 新建一个终端输入(更新环境)

source ./devel/setup.bash

 在输入(rosrun  (你的工作包文件夹)(你的节点映射))

rosrun hello helloworld.py

得到如下输出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/81459.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营第60期第四十九天打卡

大家好,今天我们还是继续我们的动态规划章节,可能有的朋友已经开始厌倦了说为什么动态规划怎么这么多题目,大家可以想想我们前面其实刷过好几种类型的动态规划的经典题目比如说各式各样的背包问题当然包括0-1背包,完全背包&#x…

centos7.9离线升级内核到4.19.12详细教程

cenots7.9默认安装的内核版本是:3.10.0-1160.119.1.el7.x86_64,在安装nvidia显卡驱动的时候,提示内核版本过低,需要升级内核版本,升级完成之后,就可以顺利的安装上nvidia显卡驱动了,实测有效。 一、查看当前内核版本命令 uname -r二、下载离线内核的rpm包

Vue3 + TypeScript + el-input 实现人民币金额的输入和显示

输入人民币金额的参数要求: 输入要求: 通过键盘,只允许输入负号、小数点、数字、退格键、删除键、方向左键、方向右键、Home键、End键、Tab键;负号只能在开头;只保留第一个小数点;替换全角输入的小数点&a…

方正字库助力华为,赋能鸿蒙电脑打造全场景字体解决方案

2025年5月19日,搭载华为鸿蒙操作系统的鸿蒙电脑,面向用户推出集AI智能、互联流畅、安全保障和精致体验于一体的全新办公系统。作为鸿蒙生态核心字体服务商,方正字库为此次提供了全面的系统字体支持,涵盖中文、西文及符号三大类字库…

PHPStudy 一键式网站搭建工具的下载使用

目录 一、下载 PHPStudy二、安装步骤三、基本使用方法3.1 创建网站3.2 管理数据库3.3 软件管理3.4 自动启动3.5 配置管理 四、注意事项和进阶使用4.1 注意事项4.2 进阶使用 背景: 我们在学习和工作中,经常会遇到各种需要自己搭建环境的场景,这…

java中的线程安全的集合

1.ConcurrentHashMap。 key,value结构。 jdk1.7通过分段锁保证不同段同时操作是线程安全的,但并发不足,jdk1.8通过node节点锁和CAS保证并发安全。不同node节点可以并发读写。通过它的computer,computerIfAbsent,等可以保证原子更新value。ifAbsent表示有…

MySQL问题:MySQL中使用索引一定有效吗?如何排查索引效果

不一定有效,当查询条件中不包含索引列或查询条件复杂且不匹配索引顺序 对于一些小表,MySQL可能选择全表扫描而非使用索引,因为全表扫描的开销可能更小 最终是否用上索引是根据MySQL成本计算决定的,评估CPU和I/O成本 排查索引效…

使用vscode MSVC CMake进行C++开发和Debug

使用vscode MSVC CMake进行C开发和Debug 前言软件安装安装插件构建debuug方案一debug方案二其他 前言 一般情况下我都是使用visual studio来进行c开发的,但是由于python用的是vscode,所以二者如果统一的话能稍微提高一点效率。 软件安装 需要安装的软…

【后端高阶面经:消息队列篇】29、Kafka高性能探秘:零拷贝、顺序写与分区并发实战

一、 顺序写入:磁盘性能的极致挖掘 Kafka的高性能本质上源于对磁盘顺序访问的深度优化。 传统随机写入的磁盘操作需要磁头频繁寻道,机械硬盘的随机写性能通常仅为100IOPS左右,而Kafka通过追加日志(Append-Only Log)模式,将所有消息按顺序写入分区文件,使磁盘操作转化为…

AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月27日第90弹

从今天开始,咱们还是暂时基于旧的模型进行预测,好了,废话不多说,按照老办法,重点8-9码定位,配合三胆下1或下2,杀1-2个和尾,再杀6-8个和值,可以做到100-300注左右。 (1)定…

Git 初次推送远程仓库

Git 初次推送远程仓库(完整实战版) —— 涵盖重命名分支、强制合并、冲突解决等高频场景 🔥 核心流程图 初始化 → 关联远程 → 提交代码 → 处理分支冲突 → 成功推送 1. 基础操作(全新仓库) # 初始化 cd /your/pr…

Pluto实验报告——基于FM的音频信号传输并解调恢复

目录 一、实验目的 ................................ ................................ ................................ .................. 3 二、实验内容 ................................ ................................ ................................ ......…

输出数据OutputFormat案例

输出数据OutputFormat 案例: www.atguigu.com www.atguigu.com www.atguigu.com www.hao123.com www.shouhu.com www.baidu.com www.atguigu.com www.qq.com www.gaga.com www.qinghua.com www.sogou.com www.baidu.com www.alibaba.com …

STM32与ESP32的区别

STM32与ESP32都是当前电子行业中广泛使用的微控制器芯片,但二者在架构、功能、应用领域以及开发生态上均存在显著差异。需要高度实时响应和低功耗的系统通常适合STM32,而需要网络连接和便捷无线通讯的物联网应用通常更适合ESP32。 一、架构与性能 STM32…

YOLOv11改进 | Neck篇 | 双向特征金字塔网络BiFPN助力YOLOv11有效涨点

YOLOv11改进 | Neck篇 | 双向特征金字塔网络BiFPN助力YOLOv11有效涨点 引言 目标检测领域的最新进展表明,特征金字塔网络(FPN)的设计对模型性能具有决定性影响。本文详细介绍如何将**双向特征金字塔网络(BiFPN)**集成到YOLOv11的Neck部分,通过改进的多尺度特征融合机制…

Python后端框架新星Robyn:性能与开发体验的双重革命

引言:Python后端框架的进化之路 在Web开发领域,Python生态长期被Flask、Django等经典框架主导。随着异步编程需求的增长和高并发场景的普及,开发者对框架性能提出了更高要求。2023年,一款名为Robyn的新型Web框架横空出世,以其独特的Rust底层架构和优雅的Python API设计,…

ADS学习笔记(三) 瞬态仿真

参考书籍:见资源绑定,书籍3.4 瞬态仿真,书籍链接: https://pan.baidu.com/s/1pjw8p7r3-1x8qcC1-hljFQ?pwd4v79 提取码: 4v79 本文为对实验内容的补充 瞬态仿真放大倍数与交流仿真不一致 为什么对同一个BJT电路进行交流信号仿真和进行瞬态仿真,得出交流信号仿真的放大倍数是3.…

Flask 会话管理:从原理到实战,深度解析 session 机制

1、Flask中session 的实现原理:服务器与客户端的协作 HTTP 协议是无状态的——服务器无法区分两次请求是否来自同一用户。这意味着,用户登录后跳转到其他页面时,服务器会“忘记”用户身份。 为解决这一问题,Web 开发中引入了会话…

学习STC51单片机16(芯片为STC89C52RCRC)

每日一言 那些让你喘不过气的日子,正是蜕变的开始。 串口编程寄存器分析(红色框里面的这个是串口助手里面生成的波特率初始化函数哈) 我们就根据以上的寄存器分析,因为这个是配置波特率的需要的寄存器 PCON smod 0 就是PCON的bit…

crud方法命名示例

以下是基于表名dste_project_indicator(项目指标表)的完整命名示例,覆盖各类增删改查场景: 1. 表名与实体类映射 // 表名:dste_project_indicator // 实体类:DsteProjectIndicatorEntity public class Ds…