ROS 工作空间与功能包的创建
1、 创建工作空间
2、 创建功能包
3、 配置功能包
4、 编译功能包
ROS中的程序即使使用不同的编程语言,实现流程大致如下:
mkdir -p ~/工作空间名称/src
例如:创建一个名称为 catkin_ws 的工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
初始化了工作空间,创建了一个 catkin_ws 空间,在该空间下有一个 src 文件夹
catkin_init_workspace
初始化工作空间后,会在src目录中生成一个 CMakeLists.txt 文件,生成这个文件说明当前路径已经是ROS的工作空间了。
注:在编译工作空间时,需要在工作空间的根目录执行编译命令。
cd ~/catkin_ws/
编译工作空间下所有功能包的源码。
catkin_make
编译完成后会生成 build 和 devel文件夹。
build文件夹中的内容,存放编译的二进制文件。
devel文件夹中的内容,存放开发中的可执行文件和库
此时还缺少一个 install 文件夹,需要执行以下指令,便可自动生一个 install 文件夹。
catkin_make install
install 文件夹中的内容,用来存放着编译后的可执行文件。
catkin_create_pkg[depend1][depend2][depend3]
工作空间是一个存放工程开发相关文件的文件夹。
cd ~/catkin_ws/src
catkin_create_pkg test_pkg std_msgs rospy roscpp
上述命令,会在工作空间下生成一个功能包,该功能包依赖于 rospy 、roscpp与std_msgs
编写C++文件放在 test_pkg 功能包的 src目录下
helloworld_c.cpp文件内容
// 1.包含 ros 的头文件
#include "ros/ros.h"
//2.编写 main 函数
int main(int argc, char *argv[]){
// 3.初始化ros节点
ros::init(argc, argv, "hello_node"); // 定义节点名称
// 4.输出日志
ROS_INFO("hello world");
// 4.输出日志
return 0;
}
# add_executable(${PROJECT_NAME}_node src/test_pkg_node.cpp)
修改为
add_executable(hello src/helloworld_c.cpp)
# target_link_libraries(${PROJECT_NAME}_node
# ${catkin_LIBRARIES}
# )
改为这样
target_link_libraries(hello
${catkin_LIBRARIES}
)
注:hello 为 add_executable()第一个参数映射的名称。
注:如果实在找不到这两个地方,可以从上面把配置信息 粘贴到 CMakeLists.txt
文件中的任意空白位置。
修改完这两步以后,保存配置文件。
cd ~/catkin_ws
再次编译工作空间。
catkin_make
让系统能够找到该工作空间,需要设置环境变量。
source devel/setup.bash
或
source ~/catkin_ws/devel/setup.bash
检查环境变量
echo $ROS_PACKAGE_PATH
启动ROS Master
roscore
rosrun test_pkg hello
CMakeLists.txt
文件下配置的 add_executable() 映射的cpp文件名创建存放Python代码的目录
cd ~/catkin_ws/src/test_pkg
创建 scripts 文件夹
mkdir scripts
编写Python文件放在 test_pkg 功能包的 scripts 目录下
cd scripts
创建 helloworld_p.py Python文件
touch helloworld_p.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
##指定解释器
#1.导包
import rospy
#2.编写主入口
if __name__ == '__main__':
#3.初始化ROS节点
rospy.init_node("hello_world");
# 4.输出日志
rospy.loginfo("Hello Python!")
ls -l
chmod +x helloworld_p.py
# catkin_install_python(PROGRAMS
# scripts/my_python_script
# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
# )
修改为
catkin_install_python(PROGRAMS
scripts/helloworld_p.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
source ~/catkin_ws/devel/setup.bash
cd ~/catkin_ws
再次编译工作空间。
catkin_make
启动ROS Master
roscore
执行编写的源文件
cd ~/catkin_ws
rosrun test_pkg helloworld_p.py
rosrun 包名 自定义文件名.py
执行成功后输出 hello Python!
source ~/工作空间/devel/setup.bash 可以添加进 .bashrc 文件
chmod +x helloworld_p.py