ROS 创建功能包
ROS工作空间是一个用于组织和构建ROS软件项目的目录结构。它是一个包含多个功能包的顶级目录。工作空间允许同时管理多个功能包,使得软件开发更加方便和模块化。
在工作空间中,可以同时包含多个功能包,并通过交叉编译和共享依赖项来管理它们之间的关系。
ROS功能包是ROS软件项目的基本单元。它是一组相关节点、库、配置文件和资源的组织形式。功能包是对特定功能或任务的模块化实现。
功能包可以根据需要提供各种功能,例如ROS节点、传感器驱动程序、算法实现、模拟器、可视化工具等。
ROS工作空间的创建和编译
第一步 新建目录
打开终端命令窗口后,输入命令新建工作空间目录( ros_workspace )和子目录( src )
sudo mkdir -p ros_workspace/src
执行该命令后需要输入系统密码:dongguan
第二步 赋权工作空间
在终端中键入以下命令给工作空间赋权。
sudo chmod -R 777 ros_wokspace/
执行该命令后,ros_workspace目录以及其所有子目录和文件赋予了完全的读、写和执行权限(777),请注意,使用777权限可以让任何用户都能对该目录及其内容进行修改,这可能会导致安全风险。
第三步 编译工作空间
在终端命令窗口中,通过cd命令跳转到自己创建好的工作目录。
cd ros_workspace
Linux cd(英文全拼:change directory)命令用于改变当前工作目录的命令,切换到指定的路径。
若目录名称省略,则变换至使用者的 home 目录 (也就是刚 login 时所在的目录)。
另外,~ 也表示为 home 目录 的意思, . 则是表示目前所在的目录, … 则表示目前目录位置的上一层目录。
cd .. //返回上级目录
cd ~ //切换到主目录
cd --help //帮助文档
跳转到工作空间目录后,输入编译命令。编译将在工作空间创建build与devel子目录。
catkin_make
build 目录:包含编译过程中生成的临时文件和中间结果。
devel 目录:包含编译后的功能包二进制文件、库文件和脚本等。这些文件是可执行文件和库的最终构建结果。
编译完成后需要将工作空间路径添加到系统环境变量中。
echo " source ~/ ros_workspace_test /devel/setup.bash" >> ~/.bashrc
也就是在**.bashrc**文件中添加工作空间的路径
第四步 创建ROS功能包
创建功能包需要在工作空间中的src目录下新建功能包。首先进入src目录
cd ros_workspace/src/
创建功能包
catkin_create_pkg ros_pkg roscpp rospy std msgs
catkin_create_pkg 是一个 ROS 命令行工具,用于创建一个新的 ROS 功能包。
ros_pkg:这是要创建的功能包的名称。可以根据需要选择一个有意义的名称。
roscpp:这是一个所需的依赖项,表示该功能包将使用 roscpp 库,它是用于 C++ 开发的 ROS 客户端库。
rospy:这是一个所需的依赖项,表示该功能包将使用 rospy 库,它是用于 Python 开发的 ROS 客户端库。
std_msgs:这是一个所需的依赖项,表示该功能包将使用 std_msgs 包,它是 ROS 中的标准消息包,包含一些常用的消息类型。
第五步 编写C++/Python文件
在 工作空间/src/功能包/src 目录下输入下面命令创建并编辑.cpp/.py文件。
gedit ros_cpp.cpp //创建.cpp文件
gedit ros_py.py //创建.py文件
在.cpp文件下编写代码
#include "ros/ros.h" //包含ros头文件
int main(int argc, char *argv[]) //编写ros的main函数
{
ros::init(argc, argv, "node_name_demo1"); //初始化ros节点
ROS_INFO("hello world!"); //输出日志
return 0;
}
第六步 添加编译规则
返回到工作空间下功能包路径
cd /home/wheeltec-client/ros_workspace_test/src/ros_pkg/
打开CMakeLists.txt
gedit CMakeLists.txt
在CMakeLists.txt中添加编译规则
add_executable(ros_cpp_node/ros_cpp.cpp)
添加目标链接库
target_link_libraries(ros_cpp_node ${catkin_LIBRARIES})
第七步 编译功能包
返回到工作空间目录,编译文件
cd ros_workspace_test
进入工作空间后,执行编译命令
catkin_make
第八步 开启节点
启动ros master
roscore
启动后打开一个新终端,在工作空间目录下运行节点
cd ros_workspace
rosrun ros_pkg ros_cpp_node