之前切换VMware都是用鼠标点
现在发现 可以先按 ctrl+alt就相当于把鼠标离开了虚拟机
等再切换回虚拟机再按 ctrl+G就可以继续输入了
Catkin工作原理
catkin编译的工作流程如下:
首先在工作空间catkin_ws/src/下递归的查找其中每一个ROS的package。
package中会有package.xml和CMakeLists.txt文件,Catkin(CMake)编译系统依据CMakeLists.txt文件,从而生成makefiles(放在catkin_ws/build/)。
然后make刚刚生成的makefiles等文件,编译链接生成可执行文件(放在catkin_ws/devel)。
也就是说,Catkin就是将cmake与make指令做了一个封装从而完成整个编译过程的工具。catkin有比较突出的优点,主要是:
操作更加简单
一次配置,多次使用
跨依赖项目编译
转载自 https:
利用catkin创建package
cd ~/catkin_ws/src
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
创建程序包的一般格式是catkin_create_pkg ,此命令的格式包括功能包名称和依赖项,
在上面示例中,依赖项包括std_msg、rospy和roscpp。
运行上面命令之后,在src文件夹下会生成一个与功能包名同名的文件夹,在该文件夹下有如下文件(夹)
workspace_folder/
src/
package_name/
include --文件夹
src --文件夹
CMakeLists.txt
package.xml
最后的catkin_make 看有人推荐catkin tools 回头可以研究一下
catkin_make 相当于进行了如下操作
$ mkdir build
$ cd build
$ cmake ../src -DCATKIN_DEVEL_SPACE=../devel -DCMAKE_INSTALL_PREFIX=../install
$ make -j<number of cores> -l<number of cores> [optional target, e.g. install]
利用catkin编译
首先修改创建功能包时生成的CMakeLists.test文件
⑴添加以下语句来查找添加的依赖包
find_package(catkin REQUIRED COMPONENTS
sensor_msgs
cv_bridge
image_transport)
find_package(OpenCV 2 REQUIRED)
find_package(PLC REQUIRED)
⑵添加以下语句来添加参与编译的节点程序
add_executable(node name src/node program)#添加可执行节点
target_link_libraries(node name ${catkin_LIBRARIES})#链接库
add_dependencies(node name package name_generator_messages_cpp)
#为可执行文件添加对生成的消息文件的依赖,因为catkin把所有的package并行的编译,
所以如果你要使用其他catkin工作空间中其他package的消息,你同样也需要添加对他们各自生成的消息文件的依赖,
感觉就是一个先导入头文件的过程。
除了可以在创建功能包时添加系统提供的依赖
(catkin_create_pkg beginner_tutorials std_msgs rospy roscpp),
也可以修改创建功能包时生成的package.xml文件,以图像处理中所需用到的包为例,
加入了以下指令来说明后面增加的依赖包
<run_depend>sensor_msgs</run_depend>
<run_depend>image_transport</run_depend>
<run_depend>cv_bridge</run_depend>
利用catkin编译的方法是:
#under workspace
catkin_make [make_targets] [-DCMAKE_VARIABLES=...]
两个注意事项
1)创建功能包是在src目录下,而编译功能包是在workspace目录下。
2)编译之前要先确保添加了当前工作空间的path,查看方法是:
echo $ROS_PACKAGE_PATH
添加方法是source setup.bash文件
source ./devel/setup.bash
catkin 使用教程
cmake_minimum_required() #CMake的版本号
project() #项目名称
find_package() #找到编译需要的其他CMake/Catkin package
catkin_python_setup() #catkin新加宏,打开catkin的Python Module的支持
add_message_files() #catkin新加宏,添加自定义Message/Service/Action文件
add_service_files()
add_action_files()
generate_message() #catkin新加宏,生成不同语言版本的msg/srv/action接口
catkin_package() #catkin新加宏,生成当前package的cmake配置,供依赖本包的其他软件包调用
add_library() #生成库
add_executable() #生成可执行二进制文件
add_dependencies() #定义目标文件依赖于其他目标文件,确保其他目标已被构建
target_link_libraries() #链接
catkin_add_gtest() #catkin新加宏,生成测试
install() #安装至本机
CMake 实践
https: