怎样在ROS系统中建立工作空间和ROS软件包 | 您所在的位置:网站首页 › ros支持什么语言 › 怎样在ROS系统中建立工作空间和ROS软件包 |
要想创建工作空间,首先你需要了解什么是工作空间。 在ROS系统中,工作空间是一个包含ROS软件包的目录。它是ROS软件开发的基本组织单位,它类似于其他的编程语言中的项目或者工程。 工作空间常常包含一个或者多个软件包,每个软件包都包含着ROS节点、消息、服务、动作、参数等组件,用于实现功能。在ROS系统中,工作空间的创立和管理十分重要,它直接影响到ROS软件包的编译、运行和调试。 目录 一、建立工作空间 二、建立ROS软件包 三、编写功能程序 四、添加环境启动节点 一、建立工作空间你想在你的ROS系统中创建工作空间,首先你需要打开终端输入以下指令: mkdir -p ~/catkin_ws/src 接下来进入src: cd ~/catkin_ws/src 利用以下指令,完成对src的操作,实现文件夹存放ROS软件包的源代码的目标: catkin_init_workspace 然后进入catkin_ws,在此根目录下进行编译: cd .. catkin_make 注意:工作空间catkin_ws是ROS系统默认的名字,你也可以更改命令实现创建你喜欢的工作空间的名字。例如:mkdir -p ~/my_workspace/src 二、建立ROS软件包完成工作空间的创建,接下来在src文件夹中创建属于你的ROS软件包: 输入下面的指令进入src文件夹: cd catkin_ws/src 输入以下指令,创建ROS软件包: catkin_create_pkg robot_laser_navigation rospy roscpp std_msgs sensor_msgs nav_msgs 注意:这里的创建了一个名为“robot_laser_navigation”的软件包,名字可以按照你想实现的功能的名字,使用了python语言编写的ROS节点和c++语言编写的ROS节点,以及ROS的消息类型。ROS系统支持多语言的编写,你可以在你的软件包中使用你喜欢的语言进行编写节点,以此来实现你想要实现的功能。在这里,我使用了两种编程语言一是python,二是c++,但是,一个软件包既可以使用一种语言,也可以使用多种语言编写,并不影响你的开发。 三、编写功能程序接下进入你创建的ROS软件包的src文件夹: cd ~/catkin_ws/src/robot_laser_navigation/src 然后创建你实现功能的源代码: touch laser_navigation.py 或者 touch laser_navigation.cpp 然后赋予权限完成各项工作就可以启动了: chmod +x laser_navigation.py 或者 chmod +x laser_navigation.cpp 最后利用以下指令进入文件编写程序: sudo vim laser_navigation 或者在windows系统下完成相应程序编写,通过winscp完成文件的传输。 注意:文件需要放入src文件夹下,然后在windows下写的python程序,有可能出现报错,可以得知,windows下的python程序在linux下有些符号不相通,文件就不能正常启动,需要输入以下转换: dos2unix laser_navigation.py 也可以在你的程序文件中添加这条程序: # -*- coding: utf-8 -*- 完成工作空间和软件包的编写,现在就开始对整个工作空间进行编译: cd catkin_ws catkin_make 这里有你编写的python文件和c++文件,利用c++编写的节点很轻松的输出相应节点,而python没有,这里不要慌张,其实已经编译完成了。 四、添加环境启动节点注意:出现报错,有可能编写的文件有错,请检查文件,没有问题,请检查CMakeLists.txt中依赖项添加是否正确。报错应当根据出现的报文检查。 然后将工作空间加入到环境中: echo "source /opt/ros//setup.bash" >> ~/.bashrc echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc 注意:这样就可以将source添加到~/.bashrc文件当中,每次打开终端都会自动将catkin_ws/src添加到系统环境中。这里的是你的ROS系统的版本,你可以利用以下指令检查你的ROS系统版本: rosversion -d 完成之后,就可以利用指令启动你编写的节点或者文件了: rosrun robot_laser_navigation laser_navigation.py 或者 rosrun robot_laser_navigation laser_navigation 注意:启动节点之前,请利用roscore启动ROS。 |
CopyRight 2018-2019 实验室设备网 版权所有 |