笔者写下这篇文章时处于研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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)