ROS第一个程序——helloworld

news/2025/2/22 10:56:13

目录

一、工作空间的创建

1.创建工作空间并初始化

ros-包并添加依赖-toc" style="margin-left:40px;">2.进入 src 创建 ros 包并添加依赖

二、C++实现helloworld

C++源码实现

ros%20%E5%8C%85%E4%B8%8B%E7%9A%84%20Cmakelist.txt%E6%96%87%E4%BB%B6-toc" style="margin-left:40px;"> 编辑 ros 包下的 Cmakelist.txt文件

进入工作空间目录并编译 

执行 

python%E5%AE%9E%E7%8E%B0helloworld-toc" style="margin-left:0px;">三、python实现helloworld

ros%20%E5%8C%85%E6%B7%BB%E5%8A%A0%20scripts%20%E7%9B%AE%E5%BD%95%E5%B9%B6%E7%BC%96%E8%BE%91%20python%20%E6%96%87%E4%BB%B6-toc" style="margin-left:40px;">进入 ros 包添加 scripts 目录并编辑 python 文件

python%20%E6%96%87%E4%BB%B6%C2%A0-toc" style="margin-left:40px;">新建 python 文件 

python-文件添加可执行权限-toc" style="margin-left:40px;">为 python 文件添加可执行权限

ros-包下的-camkelisttxt-文件-toc" style="margin-left:40px;">编辑 ros 包下的 CamkeList.txt 文件

进入工作空间目录并编译

执行


一、工作空间的创建

1.创建工作空间并初始化

mkdir -p 自定义空间名称/src
cd 自定义空间名称
catkin_make

        首先会创建一个工作空间以及一个 src 子目录,然后再进入工作空间调用 catkin_make命令编译。 

ros-包并添加依赖">2.进入 src 创建 ros 包并添加依赖

cd src
catkin_create_pkg 自定义ROS包名 roscpp rospy std_msgs

        上述命令,会在工作空间下生成一个功能包,该功能包依赖于 roscpp、rospy 与 std_msgs,其中roscpp是使用C++实现的库,而rospy则是使用python实现的库,std_msgs是标准消息库,创建ROS功能包时,一般都会依赖这三个库实现。 

二、C++实现helloworld

cd 自定义的包

C++源码实现

#include "ros/ros.h"

int main(int argc, char *argv[])
{
    //执行 ros 节点初始化
    ros::init(argc,argv,"hello");
    //创建 ros 节点句柄(非必须)
    ros::NodeHandle n;
    //控制台输出 hello world
    ROS_INFO("hello world!");

    return 0;
}

ros%20%E5%8C%85%E4%B8%8B%E7%9A%84%20Cmakelist.txt%E6%96%87%E4%BB%B6"> 编辑 ros 包下的 Cmakelist.txt文件

add_executable(步骤3的源文件名
  src/步骤3的源文件名.cpp
)
target_link_libraries(步骤3的源文件名
  ${catkin_LIBRARIES}
)

 

进入工作空间目录并编译 

cd 自定义空间名称
catkin_make

执行 

先启动命令行1:
roscore
再启动命令行2:
cd 工作空间
source ./devel/setup.bash
rosrun 包名 C++节点

 

python%E5%AE%9E%E7%8E%B0helloworld">三、python实现helloworld

ros%20%E5%8C%85%E6%B7%BB%E5%8A%A0%20scripts%20%E7%9B%AE%E5%BD%95%E5%B9%B6%E7%BC%96%E8%BE%91%20python%20%E6%96%87%E4%BB%B6">进入 ros 包添加 scripts 目录并编辑 python 文件

cd ros包
mkdir scripts

python%20%E6%96%87%E4%BB%B6%C2%A0">新建 python 文件 

python">#! /usr/bin/env python

import rospy

if __name__ == "__main__":
    rospy.init_node("Hello")
    rospy.loginfo("Hello World!!!!")

python-文件添加可执行权限">为 python 文件添加可执行权限

chmod +x 自定义文件名.py

ros-包下的-camkelisttxt-文件">编辑 ros 包下的 CamkeList.txt 文件

catkin_install_python(PROGRAMS scripts/自定义文件名.py
  DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

 

进入工作空间目录并编译

先启动命令行1:
roscore
再启动命令行2:
cd 工作空间
source ./devel/setup.bash
rosrun 包名 自定义文件名.py

执行


http://www.niftyadmin.cn/n/5234562.html

相关文章

操作系统,并行性:两个或多个事件在同一时刻发生并发性:两个或多个事件在同一时间间隔内发生 ,就绪状态执行状态阻塞状态

操作系统的目的: 方便性 有效性 可扩展性 开放性 操作系统的作用: 作为用户和计算机硬件系统之间的接口 作为计算机系统资源的管理者 实现了对计算机资源的抽象 多道批处理系统的优缺点: 资源利用率高 系统吞吐量大 平均周转时间长 无交互…

LeetCode 每日一题 Day1

1094. 拼车 车上最初有 capacity 个空座位。车 只能 向一个方向行驶(也就是说,不允许掉头或改变方向) 给定整数 capacity 和一个数组 trips , trip[i] [numPassengersi, fromi, toi] 表示第 i 次旅行有 numPassengersi 乘客,接…

在 MySQL 中创建用户和分配权限

在 MySQL 中创建用户和分配权限 登录到 MySQL: 首先,使用 root 用户或其他具有足够权限的用户登录到 MySQL: mysql -u root -p创建新用户: 在 MySQL 提示符下,使用以下命令创建新用户: CREATE USER newuser…

分治-归并算法——LCR 170. 交易逆序对的总数

文章目录 🌼0. 归并排序🌻1. 题目🌼2. 算法原理🌷3. 代码实现 🌼0. 归并排序 归并排序是典型的分治,将数组分成若干个子数组,数组两两比较,不是很清楚的,可以查看此篇文…

git如何关联克隆远程仓库

一、添加远程仓库 之前我们仅仅是在本地创建了一个Git本地仓库,这里我们再在GitHub创建一个Git远程仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作开发。 1.…

InsCode实践分享

在当今信息爆炸的时代,如何从海量信息中脱颖而出,获取更多的关注和认可,成为了许多人的共同追求。作为知乎平台上的优质用户,我愿意分享一些自己的经验和技巧,帮助大家更好地运用InsCode,实现个人成长和进步…

关于wx注入后如何用python发送、接收信息的小白理解

wx注入一般有2个重要文件:一个exe 的注入器和1个dl的hook文件。 注入器运行后,就会将dll注入到wx程序中去,后面就可以用任何编程工具写代码发送或接收wx信息了。 运行注入器后,hook.dll就会被注入wx端。会产出一个本地服务&#x…

02.PostgreSQL 查询处理期间发生了什么?

PostgreSQL 查询处理期间发生了什么? 文中主要内容引用自PostgreSQL指南:内幕探索 查询处理是PostgreSQL中最为复杂的子系统。如PostgreSQL官方文档所述,PostgreSQL支持SQL2011标准中的大多数特性,查询处理子系统能够高效地处理这…