当前位置: 首页 > Linux

【笔记】MOOC机器人操作系统ROS简介--(二)职场

时间:2023-04-06 21:30:14 Linux

catkinworkspace及编译系统carkinworkplacecatkin是为ros定制的编译构建系统,cmake的扩展,catkinworkplace组织管理功能包文件夹,以catkin为工具编译catkinworkplace需要使用指令创建catkin_make来初始化workspacemkdir-p~/catkin_ws/srccd~/catkin_ws/catkin_makecompilecd~/catkin_ws/#回到workspacecatkin_makesource~/catkin_ws/devel/setup.bash#source用于刷新环境,使之生效后执行以上步骤,我们的代码只在src文件夹下,其余两个在catkin_make中自动生成。因此,我们主要关注src中的文件——功能包package是carkin编译的基本单位Package组件包是ros的基本组织形式carkin编译的基本单位一个package可以包含多个可执行文件(节点)最简单的包CMakeList。txtCMakeList.txt指定catkin编译规则如:源文件、依赖、目标文件cmake_minimum_required()指定catkin最低版本project()指定包名find_package()指定编译需要的依赖add_message_files()/add_service_files()/add_action_files()添加消息文件/服务文件/动作文件generate_messages()生成消息服务动作catkin_package()指定catkin信息编译系统生成Cmake文件add_library,add_executable()指定生成的库文件和可执行文件target_link_libraries()指定可执行文件Whichlibrariestolinkcatkin_add_gtest()添加测试单元install()生成可安装目标package.xml定义包属性,包名,版本号,作者,依赖等,其模板类似<名称>#可能需要我们修改#我们可能需要修改manifest.xmlrosbuild构建系统使用的包列表类似于catkin的package.xmlros中可执行程序的来源-代码文件脚本(shell,Python);c++头文件、源文件通信格式除了上面的文件外,还可以放一些自定义的通信格式,比如:消息(msg)服务(srv)动作(action)启动和配置文件启动文件(launch)配置文件(yaml)之类的多个可执行文件,不是一个一个执行,而是放到launch里面,可以一次执行多个可执行文件。全局通用包管理说明1.rospack查找某pkg地址rospackfindpackage_namelistalllocalpkgrospacklist2,roscd跳转到某pkg路径roscdpackage_name3,roslslist某pkg下文件信息roslspackage_name4,rosed(vi)editthefilerosedpackage_namefile_name5inpkg,catkin_create_pkgcreateapkgcatkin_create_pkg\[deps]#包需要的依赖6.rosdep安装某个pkg需要的依赖rosdepinstall\[plg_name]sudoapt-getinstalltr??ee可以图形化显示项目结构目录。然后,创建一个ROS工作空间,初始化catkin_make,然后查看目录。只看一级目录树-L1.先创建一个test1catkin_create_pkgtest1,然后再创建一个依赖。包test2catkin_create_pkgtest2roscpprospystd_msgsnav_msgsroscpprospy中C++编程的APIros中Python编程的APIstd_msgs涉及通信nav_msgs和导航。查看目录可以发现依赖包test2比非依赖包test1多了一个src文件夹用来放头文件的include我们来看看这两个包中CMakeList.txt和package.xml的区别>catkinnav_msgsroscpprospyrospystd_msgsnav_msgsroscpproscpp<构建_export_depend>rospyrospystd_msgsnav_msgsroscpprospygendstec_execution用于演示,记得放到workspace的src里面gitclonehttps://github.com/sychaichangkun/ROS-Academy-for-Beginners.git下面是剩下的介绍的常用package软件包的内容以上网页robot_sim_demo机器人仿真程序,大部分例子都会用到这个软件包topic_demotopic通信,自定义msg,包括C++和python两个版本实现service_demoservice通信,自定义srv,分别在C++和python中实现action_demoaction通信,自定义action,实现param_demoparamC++和python中的操作,分别在C++和python中实现msgs_demo,演示msg、srv和action文件的格式规范tf_demotf演示相关API操作,tf示例包括C++和python两个版本name_demo演示全局命名空间和参数的提取在本地命名空间tf_follower下制作mybot机器人实现mybot跟随xbot的功能urdf_demo创建机器人urdf模型并展示在RViznavigation_sim_demo导航demo工具包中,包括AMCL、OdometryNavigation等demoslam_sim_demo同步定位建图demo,包括Gmapping,Karto,Hector等SLAMdemorobot_orbslam2_demoORB_SLAM2demoros_academy_for_beginnersMetapacakge示例依赖此仓库中的所有pacakge,然后在您创建的工作区中运行它。它会安装demo中需要的依赖,也就是每个包下的xml文件中定义的东西。rosdepinstall--from-pathssrc--ignore-src--rosdistro=kinetic-y然后编译我们的工作空间catkin_make,使用source刷新source~/catkin_ws/devel/setup.bash注意上面的catkin_ws是官方定义的工作空间名称,像我的是my_catkin_ws,对应的命令是source~/mooc/my_catkin_ws/devel/setup.bash使用这个命令可以查看我们工作区已经存在的包(类似Python,每个工作区都是独立的,可以用不同的包)rospack清单|grepmy_catkin_ws但是使用source命令只在一个命令框内有效,如果命令框发生变化需要重新执行。为了解决这个问题,我们将其写入根目录下的.bashrc文件echo"source~/mooc/my_catkin_ws/devel/setup.bash">>~/.bashrc因为Linux会执行.bashrc中的内容每次打开终端时,我们都可以检查.bashrc文件的内容。最后两行是我们加的,倒数第二行是安装ros时加的,最后一行是刚加的。rospackfindtest2定位包路径查看文件roslstopic_demo/定位文件rosedtopic_demoCMakeList.txtcd进入工程包roscdrobot_sim_demo/这是仿真程序查看文件结构treeparam通常存放一些参数scriptsPython脚本urdf机器人模型参数Metapacakgesudoapt-getinstallros-kinetic-desktop-fullros-kinetic-desktop-full是Metapacakge是一个虚拟包,依赖很多组件栈包集eg.NavigationCMakeList.txtcmake_minimum_required(VERSION2.8.3)project(robot_navigation)find_package(catkinREQUIRED)catkin_metapackage()#声明当前包为元包,其依赖包在.xml文件中组合安装包等类似功能。元包名称描述连接moveitmovementPlanning相关(主要是机械臂)githubURLnavigationnavigation相关githubURLimage_pipeline图形获取、处理等。