本人在操作ros时,首先创建了一个catkin_ws/src的文件夹,本来是要在catkin_ws下执行catkin init命令的。 不小心在HOME/[NAME]/下执行了catkin init命令。 导致再到catkin_ws下执行catkin init命令时报错如下: dennisou@dennisou-virtual-machine:~/catkin_ws$ catkin init Catkin workspace `/home/dennisou` is already initialized. libpython3.7m.so -DCMAKE_BUILD_TYPE=Release-DSETUPTOOLS_DEB_LAYO Additional Make Args: None Additional catkin
前言在使用 ROS(Robot Operating System)进行开发时,catkin_make 是我们最常使用的编译命令之一。 然而,在 Ubuntu 20.04 的虚拟机环境中,一些用户可能会遇到 catkin_make 编译过程中出现卡死、卡顿或内存不足的问题。这类问题往往与系统的交换空间(Swap)配置不当有关。 第一章:问题现象|为何 catkin_make 总是卡住? ROS 编译过程中,catkin_make 会同时运行多个编译任务,占用大量内存。如果没有足够的 Swap 支撑,轻则卡顿,重则崩溃。“磨刀不误砍柴工。” 若 Swap 不足或配置异常,就会导致 catkin_make 编译过程频繁卡顿甚至失败。“知己知彼,百战不殆。”undefined掌握系统的资源调度机制,才能真正掌控你的开发节奏。
然后,是catkin_make和catkin tools如build等。参考下面的视频: 蓝桥ROS密钥更新和使用catkin build ----
进入到通过终端进入到catkin_ws/src目录下 使用GIT下载: git clone https://github.com/lagadic/vrep_ros_bridge.git 2. /catkin_ws/src source /opt/ros/indigo/setup.bash source /path_to_catkin_ws/catkin_ws/devel/setup.bash 其中:/ChangeWithyourPathToVrep/以及/path_to_catkin_ws/分别为代指,请根据实际安装目录调整。 回到catkin_workspace并且运行: catkin_make catkin_make --pkg vrep_ros_bridge --cmake-args -DCMAKE_BUILD_TYPE 使用终端到V-Rep安装目录下,并输入: ln -s /YOUR_CATKIN_WS_PATH/devel/lib/libv_repExtRosBridge.so 其中: /YOUR_CATKIN_WS_PATH
使用catkin_create_qt_pkg快速创建qt-ros功能包 参考网址: qt_create:http://wiki.ros.org/qt_create qt_ros:https:// ~/catkin_ws/src$ catkin_create_qt_pkg hiqtros ? ~/catkin_ws/src$ qtcreator ? 编译后,运行: ? -End-
若要新建此文件夹,使用下面命令: $ mkdir –p ~/dev/catkin_ws/src $ cd ~/dev/catkin_ws/src $ catkin_init_workspace 当创建工作空间文件夹后 下一步是编译工作空间,使用下面命令: $ cd ~/dev/catkin_ws $ catkin_make 现在,如果你输入ls命令,可以看到上面命令创建的新文件夹,分别是build和devel文件夹。 为了编译功能包,可以使用catkin_make工具: $ cd ~/dev/catkin_ws/ $ catkin_make 在几秒之后,会看到: 如果没有看到错误提示信息,说明功能包编译成功。 $ roscd base_tutorials/ $ catkin_make 当在base_tutorials文件夹试图用catkin_make编译功能包,会看到如下错误: 当在catkin_ws文件夹执行 catkin_make命令,则会编译成功。
1.在工作区间建立一个package cd ~/catkin_ws/src catkin_create_pkg my_pkg message_generation rospy 2.建立你的Python包 cd ~/catkin_ws/src/my_pkg mkdir bin mkdir src mkdir src/tutorial_package touch src/tutorial_package/ DO NOT MANUALLY INVOKE THIS setup.py, USE CATKIN INSTEAD from distutils.core import setup from catkin_pkg.python_setup () 的注释去掉,保证在catkin_make时install Python包 3.2 install(PROGRAMS bin/hello DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION 4.编译 cd ~/catkin_ws catkin_make -DCATKIN_WHITELIST_PACKAGES="my_pkg" source ~/.bashrc #或者运行下面一行 #source
打开终端,输入 $ roscore 打开新的终端并转到catkin工作区: $ catkin_make $ source . , also find other catkin packages find_package(catkin REQUIRED COMPONENTS roscpp std_msgs visualization_msgs projects also need catkin_package( INCLUDE_DIRS include LIBRARIES path_planning CATKIN_DEPENDS } # LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} # RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION -- <buildtool_depend>catkin</buildtool_depend> --> <!
catkin工作空间 Catkin是ROS定制的编译构建系统,对Cmake的扩展 而Catkin工作空间是组织和管理功能包的文件夹,以Catkin工具编译 建立工作空间 mkdir -p ~/catkin_ws /src 编译 cd ~/catkin_ws/ #回到工作空间 catkin_make source ~/catkin_ws/devel/setup.bash #编译完后要source刷新环境 ? catkin workspace catkin编译的工作流程如下: 1 首先在工作空间catkin_ws/src/下递归的查找其中每一个ROS的package。 最低版本 project() #指定软件包的名称 find_package() #指定编译时需要的依赖项 catkin_python_setup() #catkin新加宏,打开catkin的Python mkdir -p catkin_practice/src 初始化工作空间 cd catkin_practice catkin_make 创建功能包 cd src catkin_create_pkg test1
然后修改CMakeLists.txt;加入下列代码: ## Build talker and listener include_directories(include ${catkin_INCLUDE_DIRS }) add_executable(kinetic_talker src/talker.cpp) target_link_libraries(kinetic_talker ${catkin_LIBRARIES }) add_dependencies(kinetic_talker ${catkin_EXPORTED_TARGETS}) add_executable(kinetic_listener src/listener.cpp ) target_link_libraries(kinetic_listener ${catkin_LIBRARIES}) add_dependencies(kinetic_listener ${catkin_EXPORTED_TARGETS
Go in the src folder of your catkin workspace in catkin_ws/src via terminal Clone the repository typing : $ git clone https://github.com/jokla/didi_challenge_ros.git Go in your catkin_ws and do catkin_make : $ cd ~/catkin_ws $ catkin_make Now source the setup.bash; $ source ~/catkin_ws/devel/setup.bash Check
/Rob_Soft/V-REP_PRO_EDU_V3_3_1_64_Linux/ export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/relaybot/catkin_ws 2 catkin_make 编译quadrotor_tk_handler会出错,需要: ~/catkin_ws/src/vrep_ros_bridge/quadrotor_tk_handler$ touch CATKIN_IGNORE 然后,就可以用catkin_make,尽情玩耍了。 ~/catkin_ws$ catkin_make ~/catkin_ws$ catkin_make --pkg vrep_ros_bridge --cmake-args -DCMAKE_BUILD_TYPE =RelWithDebInfo 3 libraries ~/Rob_Soft/V-REP_PRO_EDU_V3_3_1_64_Linux$ ln -s /home/relaybot/catkin_ws/
构建catkin工作空间 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace cd ~/catkin_ws/ catkin_make 配置环境变量 echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc 检查环境变量 base path “/home/ubuntu/catkin_ws” contains a CMakeLists.txt but “catkin_make” must be invoked in the 做了链接 解决方法: unlink /home/youpath/catkin_ws/CMakeLists.txt 发布一个话题案例: 创建功能包 cd ~/catkin_ws/src catkin_create_pkg }) 回到工作空间下并使用catkin_make编译整个工作空间 cd ~/catkin_ws catkin_make 打开一个新终端,使用如下命令即可运行刚编译生成的可执行文件 rosrun package1
mkdir -p ~/catkin_ws2/src cd ~/catkin_ws2/src catkin_init_workspace 123 mkdir -p ~/catkin_ws2/srccd ~ 进入到catkin_ws2目录下,使用catkin_make对工作空间进行编译。 cd ~/catkin_ws2 catkin_make 12 cd ~/catkin_ws2catkin_make 终端结果: ? 3 总结 初始化ROS的catkin工作空间:catkin_init_workspace 编译ROS的catkin工作空间:catkin_make 读取当前catkin工作空间的环境变量:source 然后在terminal中继续输入如下命令进行编译: cd ~/catkin_ws2/ catkin_make 12 cd ~/catkin_ws2/catkin_make 一切顺利的话就会编译成功,接下来就可以让小乌龟来画矩形了
catkin_package(CATKIN_DEPENDS roscpp)声明依赖本包同时需要的其他ros包 find_package(catkin REQUIRED COMPONENTS)声明编译本包所需要其他 , also find other catkin packages find_package(catkin REQUIRED COMPONENTS roscpp std_msgs ) ## System projects also need catkin_package( # INCLUDE_DIRS include # LIBRARIES july_say CATKIN_DEPENDS roscpp , also find other catkin packages find_package(catkin REQUIRED COMPONENTS roscpp std_msgs ) ## System projects also need catkin_package( # INCLUDE_DIRS include # LIBRARIES july_listen CATKIN_DEPENDS
() include_directories(${catkin_INCLUDE_DIRS}) add_executable(testing main.cpp) target_link_libraries (testing ${catkin_LIBRARIES}) 3.1.2 package.xml配置 <? static_pub.cpp) target_link_libraries(testing ${catkin_LIBRARIES}) target_link_libraries(static_pub ${catkin_LIBRARIES}) 我们的流程如下: 静态坐标变换发布方: 发布关于 laser 坐标系的位置信息 // // Created by liuhongwei on }) target_link_libraries(static_pub ${catkin_LIBRARIES}) target_link_libraries(static_sub ${catkin_LIBRARIES
创建ROS工作空间(catkin) 输入下面命令创建一个新的catkin工作空间: ~$ mkdir -p ~/catkin_ws/src ~$ cd catkin_ws/ ~/catkin_ws$ catkin_make 完成后,输入下面命令: ~/catkin_ws$ source devel/setup.bash 使用下面命令查看环境变量: ~/catkin_ws$ echo $ROS_PACKAGE_PATH ? / ~/catkin_ws/src$ catkin_create_pkg hello_kinetic std_msgs rospy roscpp ? catkin_ws$ catkin_make install 如果源代码不再src文件夹使用下面命令: ~/catkin_ws$ catkin_make --source xxxx 当功能包编译完成, ~/catkin_ws$ catkin_make ? ~/catkin_ws$ rosstack profile & rospack profile ?
辅助工具 介绍:catkin是ROS的构建系统:ROS用于可执行程序、库、脚本和其他代码可以用的接口的一系列工具。 技巧:使用rqt_graph可以清晰看到当前启动节点的ROS图。 cd到工作区下的src文件夹 初始化工作区 执行工作区初始化命令:$catkin_init_workspace 新建包 执行新建包命令:$catkin_create_pkg <新包名称> rospy end subgraph 修改 msg_edit["编辑<类名>.msg文件"]--> catkin_make2[catkin_make] 自定义消息<类名>.msg文件结构 一个<类型> <名称>的列表 定义以后使用catkin_make进行编译/处理,生成一系列文件。 而且因为消息是有一个MD5验证的,为了确保消息是正确版本,所以你需要对每一个使用了这个类型的包重新使用catkin_make来保证校验成功。 综上所述,尽量不要去改类型。
macros and libraries ## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) ## is used , also find other catkin packages find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs sensor_msgs pcl_ros ) find_package(PCL REQUIRED) catkin_package( CATKIN_DEPENDS roscpp } ${PCL_LIBRARIES} ) install(TARGETS pcd_pub RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION # 运行节点 catkin_make # 编译 source devel/setup.bash rosrun pcd_pub pcd_pub # 发布 rosrun pcd_sub pcd_sub #
) ## Compile as C++11, supported in ROS Kinetic and newer add_compile_options(-std=c++11) ## Find catkin macros and libraries ## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) ## is used , also find other catkin packages find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs sensor_msgs image_transport cv_bridge ) catkin_package( CATKIN_DEPENDS roscpp rospy Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 --> <license>TODO</license> <buildtool_depend>catkin