ROS helloworld实现(Melodic)

ROS helloworld实现(Melodic),第1张

笔者写下这篇文章时处于研0,对linux系统等知识的储备很少,本文作为学习过程中的记录,仅作参考,内有不少缺漏和理解不当之处,望前辈同僚不吝赐教。

前注:

过程中需自命名的几个名称:

(1).工作空间名称:主目录下对应文件夹

(2).ros功能包名称:/工作空间/src 目录下的文件夹名称,用以实现功能

(3).源文件名称:c++ / python 源文件

(4).源码中ros节点初始化步骤需要的自定义名称

(5).配置文件中需要的自定义名称

对于名称(4)和名称(5)的理解不到位,初学时选择将二者名称统一,原因是过程中发现名称(4)的命名对本文功能实现没有影响,可随意修改,后续学习中可能会涉及。

正文

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

mkdir -p example_01/src  # example_01:工作空间名称
cd example_01
catkin_make

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

cd src
catkin_create_pkg Helloworld roscpp rospy std_msgs     #Helloworld:功能包名称

3.1C++ 实现

主目录依次进入 example_01/src/Helloworld/src

新建文本文档,重命名helloworld_c.cpp(源文件名称),编辑源文件

源码:

#include "ros/ros.h"                        //包含ros的头文件
int main(int argc, char *argv[])            //主函数
{

    ros::init(argc,argv,"hello");           //执行ros节点初始化,hello为名称(4)
    ROS_INFO("hello world!  by c++");       //控制台输出
    return 0;

}

编辑ros包下的配置文件Cmakelists.txt

找到“add_executable”和“target_link_libraries”两行,分别进行修改,修改结果如下:

add_executable(hello src/helloworld_c.cpp)  #括号内第一个参数hello为名称(5)
target_link_libraries(hello ${catkin_LIBRARIES})   #括号内第一个参数hello应保持与上述名称(5)一致

3.2python 实现

进入ros包添加scripts目录(文件夹)并新建文本文档,重命名helloworld_p.py(源文件名称),编辑源文件

源码:

#! /usr/bin/env python3                            //指定解释器
import rospy                                       //导包
if __name__ == "__main__":                         //编写主入口
    rospy.init_node(hello_p)                       //初始化ros节点,hello_p为名称(4)
    rospy.loginfo("hello world!  by python")       //输出日志

为python文件添加可执行权限(c++无此步骤)

终端执行:

chmod +x helloworld_p.py

编辑ros包下的配置文件Cmakelists.txt

找到catkin_install_python

将括号内修改为:

(PROGRAMS
 scripts/helloworld_p.py
 DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

4.进入工作空间目录并编译

cd example_01

catkin_make

5.进入工作空间目录并编译

先启动命令行1,执行

roscore

再启动命令行2,执行

cd example_01
source ./devel/setup.bash
rosrun Helloworld hello
#或
rosrun Helloworld helloworld_p.py

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1498759.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-25
下一篇 2022-06-25

发表评论

登录后才能评论

评论列表(0条)

保存