用catkin创建及编译ROS的Package指南

灵活运行ROS,其中最关键的一部分是,怎样创建和编译ROS的Package,这里对其做一些整理,便于查阅。我工作的环境为:win10 + virtualBox + Ubuntu1604 + ROS Kinetic Kame

步骤一:创建一个工作空间

参考脚本:mkdir -p /opt/catkin_ws/src

步骤二:使用catkin_create_pkg脚本创建一个beginner_tutorials包

进入目录:cd /opt/catkin_ws/src  之后执行如下脚本

参考脚本:catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

注解:该包的树形结构如下所示:

步骤三:使用catkin_make命令编译整个空间

进入目录/opt/catkin_ws,运行脚本 catkin_make

执行完脚本之后的,结构如下图所示:

root@spark1:/opt/catkin_ws# tree

├── build

│   ├── beginner_tutorials

│   │   ├── catkin_generated

│   │   │   ├── installspace

│   │   │   │   ├── beginner_tutorialsConfig.cmake

│   │   │   │   ├── beginner_tutorialsConfig-version.cmake

│   │   │   │   └── beginner_tutorials.pc

│   │   │   ├── ordered_paths.cmake

│   │   │   ├── package.cmake

│   │   │   ├── pkg.develspace.context.pc.py

│   │   │   ├── pkg.installspace.context.pc.py

│   │   │   └── stamps

│   │   │       └── beginner_tutorials

│   │   │           ├── package.xml.stamp

│   │   │           └── pkg.pc.em.stamp

│   │   ├── CMakeFiles

│   │   │   ├── CMakeDirectoryInformation.cmake

│   │   │   ├── progress.marks

│   │   │   ├── roscpp_generate_messages_cpp.dir

│   │   │   │   ├── build.make

│   │   │   │   ├── cmake_clean.cmake

│   │   │   │   ├── DependInfo.cmake

│   │   │   │   └── progress.make

│   │   │   ├── roscpp_generate_messages_eus.dir

│   │   │   │   ├── build.make

│   │   │   │   ├── cmake_clean.cmake

│   │   │   │   ├── DependInfo.cmake

│   │   │   │   └── progress.make

│   │   │   ├── roscpp_generate_messages_lisp.dir

│   │   │   │   ├── build.make

│   │   │   │   ├── cmake_clean.cmake

│   │   │   │   ├── DependInfo.cmake

│   │   │   │   └── progress.make

│   │   │   ├── roscpp_generate_messages_nodejs.dir

│   │   │   │   ├── build.make

│   │   │   │   ├── cmake_clean.cmake

│   │   │   │   ├── DependInfo.cmake

│   │   │   │   └── progress.make

│   │   │   ├── roscpp_generate_messages_py.dir

│   │   │   │   ├── build.make

│   │   │   │   ├── cmake_clean.cmake

│   │   │   │   ├── DependInfo.cmake

│   │   │   │   └── progress.make

│   │   │   ├── rosgraph_msgs_generate_messages_cpp.dir

│   │   │   │   ├── build.make

│   │   │   │   ├── cmake_clean.cmake

│   │   │   │   ├── DependInfo.cmake

│   │   │   │   └── progress.make

│   │   │   ├── rosgraph_msgs_generate_messages_eus.dir

│   │   │   │   ├── build.make

│   │   │   │   ├── cmake_clean.cmake

│   │   │   │   ├── DependInfo.cmake

│   │   │   │   └── progress.make

│   │   │   ├── rosgraph_msgs_generate_messages_lisp.dir

│   │   │   │   ├── build.make

│   │   │   │   ├── cmake_clean.cmake

│   │   │   │   ├── DependInfo.cmake

│   │   │   │   └── progress.make

│   │   │   ├── rosgraph_msgs_generate_messages_nodejs.dir

│   │   │   │   ├── build.make

│   │   │   │   ├── cmake_clean.cmake

│   │   │   │   ├── DependInfo.cmake

│   │   │   │   └── progress.make

│   │   │   ├── rosgraph_msgs_generate_messages_py.dir

│   │   │   │   ├── build.make

│   │   │   │   ├── cmake_clean.cmake

│   │   │   │   ├── DependInfo.cmake

│   │   │   │   └── progress.make

│   │   │   ├── std_msgs_generate_messages_cpp.dir

│   │   │   │   ├── build.make

│   │   │   │   ├── cmake_clean.cmake

│   │   │   │   ├── DependInfo.cmake

│   │   │   │   └── progress.make

│   │   │   ├── std_msgs_generate_messages_eus.dir

│   │   │   │   ├── build.make

│   │   │   │   ├── cmake_clean.cmake

│   │   │   │   ├── DependInfo.cmake

│   │   │   │   └── progress.make

│   │   │   ├── std_msgs_generate_messages_lisp.dir

│   │   │   │   ├── build.make

│   │   │   │   ├── cmake_clean.cmake

│   │   │   │   ├── DependInfo.cmake

│   │   │   │   └── progress.make

│   │   │   ├── std_msgs_generate_messages_nodejs.dir

│   │   │   │   ├── build.make

│   │   │   │   ├── cmake_clean.cmake

│   │   │   │   ├── DependInfo.cmake

│   │   │   │   └── progress.make

│   │   │   └── std_msgs_generate_messages_py.dir

│   │   │       ├── build.make

│   │   │       ├── cmake_clean.cmake

│   │   │       ├── DependInfo.cmake

│   │   │       └── progress.make

│   │   ├── cmake_install.cmake

│   │   ├── CTestTestfile.cmake

│   │   └── Makefile

│   ├── catkin

│   │   └── catkin_generated

│   │       └── version

│   │           └── package.cmake

│   ├── catkin_generated

│   │   ├── env_cached.sh

│   │   ├── generate_cached_setup.py

│   │   ├── installspace

│   │   │   ├── env.sh

│   │   │   ├── setup.bash

│   │   │   ├── setup.sh

│   │   │   ├── _setup_util.py

│   │   │   └── setup.zsh

│   │   ├── order_packages.cmake

│   │   ├── order_packages.py

│   │   ├── setup_cached.sh

│   │   └── stamps

│   │       └── Project

│   │           ├── interrogate_setup_dot_py.py.stamp

│   │           ├── order_packages.cmake.em.stamp

│   │           ├── package.xml.stamp

│   │           └── _setup_util.py.stamp

│   ├── CATKIN_IGNORE

│   ├── catkin_make.cache

│   ├── CMakeCache.txt

│   ├── CMakeFiles

│   │   ├── 3.5.1

│   │   │   ├── CMakeCCompiler.cmake

│   │   │   ├── CMakeCXXCompiler.cmake

│   │   │   ├── CMakeDetermineCompilerABI_C.bin

│   │   │   ├── CMakeDetermineCompilerABI_CXX.bin

│   │   │   ├── CMakeSystem.cmake

│   │   │   ├── CompilerIdC

│   │   │   │   ├── a.out

│   │   │   │   └── CMakeCCompilerId.c

│   │   │   └── CompilerIdCXX

│   │   │       ├── a.out

│   │   │       └── CMakeCXXCompilerId.cpp

│   │   ├── clean_test_results.dir

│   │   │   ├── build.make

│   │   │   ├── cmake_clean.cmake

│   │   │   ├── DependInfo.cmake

│   │   │   └── progress.make

│   │   ├── cmake.check_cache

│   │   ├── CMakeDirectoryInformation.cmake

│   │   ├── CMakeError.log

│   │   ├── CMakeOutput.log

│   │   ├── CMakeRuleHashes.txt

│   │   ├── CMakeTmp

│   │   ├── download_extra_data.dir

│   │   │   ├── build.make

│   │   │   ├── cmake_clean.cmake

│   │   │   ├── DependInfo.cmake

│   │   │   └── progress.make

│   │   ├── doxygen.dir

│   │   │   ├── build.make

│   │   │   ├── cmake_clean.cmake

│   │   │   ├── DependInfo.cmake

│   │   │   └── progress.make

│   │   ├── feature_tests.bin

│   │   ├── feature_tests.c

│   │   ├── feature_tests.cxx

│   │   ├── Makefile2

│   │   ├── Makefile.cmake

│   │   ├── progress.marks

│   │   ├── run_tests.dir

│   │   │   ├── build.make

│   │   │   ├── cmake_clean.cmake

│   │   │   ├── DependInfo.cmake

│   │   │   └── progress.make

│   │   ├── TargetDirectories.txt

│   │   └── tests.dir

│   │       ├── build.make

│   │       ├── cmake_clean.cmake

│   │       ├── DependInfo.cmake

│   │       └── progress.make

│   ├── cmake_install.cmake

│   ├── CTestTestfile.cmake

│   ├── gtest

│   │   ├── CMakeFiles

│   │   │   ├── CMakeDirectoryInformation.cmake

│   │   │   ├── gtest.dir

│   │   │   │   ├── build.make

│   │   │   │   ├── cmake_clean.cmake

│   │   │   │   ├── DependInfo.cmake

│   │   │   │   ├── depend.make

│   │   │   │   ├── flags.make

│   │   │   │   ├── link.txt

│   │   │   │   ├── progress.make

│   │   │   │   └── src

│   │   │   ├── gtest_main.dir

│   │   │   │   ├── build.make

│   │   │   │   ├── cmake_clean.cmake

│   │   │   │   ├── DependInfo.cmake

│   │   │   │   ├── depend.make

│   │   │   │   ├── flags.make

│   │   │   │   ├── link.txt

│   │   │   │   ├── progress.make

│   │   │   │   └── src

│   │   │   └── progress.marks

│   │   ├── cmake_install.cmake

│   │   ├── CTestTestfile.cmake

│   │   └── Makefile

│   ├── Makefile

│   └── test_results

├── devel

│   ├── env.sh

│   ├── lib

│   │   └── pkgconfig

│   │       └── beginner_tutorials.pc

│   ├── setup.bash

│   ├── setup.sh

│   ├── _setup_util.py

│   ├── setup.zsh

│   └── share

│       └── beginner_tutorials

│           └── cmake

│               ├── beginner_tutorialsConfig.cmake

│               └── beginner_tutorialsConfig-version.cmake

└── src

├── beginner_tutorials

│   ├── CMakeLists.txt

│   ├── include

│   │   └── beginner_tutorials

│   ├── package.xml

│   └── src

└── CMakeLists.txt -> /opt/ros/kinetic/share/catkin/cmake/toplevel.cmake

57 directories, 166 files

这样关于ROS创建及编译Package的方式全部操作完毕,用户之后就可以在src中编写自己的逻辑代码,之后再进行步骤三的操作即可。

步骤四:依赖包信息查看

配置好source就可以通过rospack查看相关的信息了

直接依赖库命令:rospack depends1 beginner_tutorials

和实际的文件一致:/opt/catkin_ws/src/beginner_tutorials/package.xml

 

间接依赖命令:rospack depends1 rospy

所有依赖命令:rospack depends beginner_tutorials

参考网址:http://wiki.ros.org/ROS/Tutorials/CreatingPackage

注解:由于在使用ROS,相关初始化参数配置非常重要,不然相关的命令运行不了,比如所,要使用ROS安装包中的相关命令,的要运行如下命令:source /opt/ros/kinetic/setup.bash, 来确保初始化相关环境变量,如果自己创建包的时候,也要自己通过上面的方式指定开始变量,比如上面的Package。

进入目录:/opt/catkin_ws

运行脚本:source /opt/catkin_ws/setup.bash

这样上面的命令运行才有效。

参考资料:

PR2/pr2_simulator:

https://github.com/PR2/pr2_simulator/tree/kinetic-devel/pr2_gazebo_plugins

Robai Cyton Gamma 7DOF Arm:

http://robots.ros.org/cyton-gamma/

http://wiki.ros.org/ROS/Tutorials/

Gazebo Tutorials(仿真库):

http://gazebosim.org/tutorials

OpenSourceRoboticsFoundation/Untitled project/gazebo_models(模型库):

https://bitbucket.org/osrf/gazebo_models

Arduino Software :

https://www.arduino.cc/en/Main/Donate

ADAS Development Vehicle Kit:

http://robots.ros.org/adas-development-vehicle-kit/

Catkin configuration overview:

http://docs.ros.org/api/catkin/html/howto/format2/catkin_overview.html

rosbuild:

http://wiki.ros.org/action/show/rosbuild?action=show&redirect=ROS%2FBuildSystem

rviz:

http://wiki.ros.org/rviz

rviz/UserGuide:

http://wiki.ros.org/rviz/UserGuide

urdf/Tutorials:

http://wiki.ros.org/urdf/Tutorials

MoveIt! Tutorials:

http://docs.ros.org/kinetic/api/moveit_tutorials/html/

navigation:

http://wiki.ros.org/navigation

actionlib/Tutorials:

http://wiki.ros.org/actionlib/Tutorials

fairlight1337/ros_service_examples

https://github.com/fairlight1337/ros_service_examples/

Classification datasets results:

http://rodrigob.github.io/are_we_there_yet/build/classification_datasets_results.html

 

 

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: