ros学习笔记      目录结构            CMakeLists.txt     package.xml     catkin工作空间                  catkin_make       包管理指令       Metapackage               通信架构(计算图层级)            master                  roscore 命令            node 节点                  rosrun命令       rosnode命令       roslaunch命令            通信方式                  Topic       Service       异同       后续       Action            Parameter Server                  命令行       launch文件       node(API)               常用工具            Gazebo     RViz The Robot Visualization tool     rqt     rosbag     Moveit        Client Library            roscpp C++的接口                  ros::init()       ros::NodeHandle       ros::master       ros::this_node       ros::service       ros::param       ros::names            rospy python的接口                  Node       Topic       Service       Param       Time               TF & URDF            TF树     urdf Unified Robot Description Format        出错处理            依赖安装                  rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y               参考资料        目录结构    |--src 源代码| |--package 是编译的基本单位|  |--CMakeLists.txt  编译规则、依赖等|   |--package.xml 属性信息|  |--scripts 脚本文件夹|  | |--python脚本|  | |--shell脚本|  |--include 头文件.h|  |--src C++源文件|  |--srv 服务|  | |--*.srv |  |--msg 消息|  | |--*.msg|  |--action 动作|  | |--*.action|  |--launch launch配置文件|  | |--*.launch|  |--config 参数配置文件|  | |--*.yaml|--build cmake和catkin缓存中间文件|--devel 编译生成的目标文件  CMakeLists.txt    package.xml    catkin工作空间  命名规则为 workspace_name/src 创建命令为  mkdir -p ~/catkin_ws/srccd ~/catkin_wscatkin_make   catkin_make  作用为编译,同时可以起到初始化工作空间的目的 在编译完之后要用source命令刷新当前环境 source ~/catkin_ws/devel/setup.bash,刷新完之后才能运行编译生成的ros可执行环境。但是每个终端都需要运行才行,可以直接更新到.bashrc文件中echo "source ~/catkin_ws/devel/setup.bash " >> ~/.bashrc,直接更新环境变量。     rosbuild是早期的编译命令,现在已经被catkin_make淘汰    包管理指令    rospack 查找某个包的地址rospack find package_name 列出本地所有包rospack list  roscd 跳转到某个包路径下 roscd package_name  rosls 列出包文件信息 rosls package_name  rosed 编辑包中文件 rosed package_name file_name  catkin_create_pkg 创建包 catkin_create_pkg pkg_name [deps]deps是依赖名,可以有多个  rosdep 安装依赖rosdep install package_name   Metapackage  功能相似的包的集合,主要用于安装的时候使用。sudo apt-get install ros-kinetic-[Metapackage_name]   通信架构(计算图层级)  master  节点管理器,每个node启动时都需要在master进行注册,类似与微服务架构中的服务管理***能。  roscore 命令  roscore 该命令功能: 启动master节点 启动rosout节点 负责日志输出 启动parameter server 参数服务器  node 节点  一个node实际上就是一个进程,master实际上也是一个node,但是它的功能是对其他node进行管理。 由于机器人一般都有非常多的零部件,所以每个部分一般都需要一个进程对其进行管理,例如摄像头模块、雷达模块等都需要单独的进程才能完成任务,这里的每个进程在ros中被称为节点node。  rosrun命令  该命令的功能是启动一个node rosrun [pkg_name] [node_name]  rosnode命令  管理和查看某个node信息 rosnode list列出在运行的node信息 rosnode info [node_name]显示某个node的详细信息 rosnode kill [node_name]结束运行某个node  roslaunch命令  roslaunch [pkg_name] [file_name.launch]启动master节点以及多个node 其中的.launch文件就配置了需要启动的node有关信息【启动规则】   通信方式  Topic  异步通信方式 publish-subscribe通信机制 nodeA向这个Topic发送(publish)消息,然后nodeB订阅(subscribe)这个Topic,然后nodeB就能收到nodeA发送的消息。所以可以进行一对多的消息发送,也可以多对一。     Message topic通信方式定义的数据类型 定义在.msg文件中 每个msg文件定义一种通信格式,相当于面向对象中的类,然后node在发送的时候是发送一个msg格式的数据。 基本格式包括:bool,int8,int16,int32,uint,float32,float64,string,time,duration,header,不定长数组array[],定长数组array[n]      sensor_msgs/Image(sensor_msgs/msg/Image.msg) 定义了传输一幅图的数据格式        rostopic list列出当前所有topic  rostopic info /topic_name显示某个topic的属性信息  rostopic echo /topic_name显示某个topic的内容  rostopic pub /topic_name ...向某个topic发布内容  rosmsg list列出系统上所有msg  rosmsg show /msg_name显示某个msg内容 (这里显示的是msg的格式内容)   Service  同步通信方式 request-reply方式通信      srv Service通信格式,定义在.srv文件中      rosservice 与 rostopic对应 rosservice list列出当前所有活跃的service rosservice info service_name显示某个service的属性信息 rosservice call service_name args调用某个service  rossrv 与 rosmsg对应 rossrv list列出系统上所有srv rossrv show srv_name显示某个srv内容   异同    后续  在定义了msg和srv后需要对package.xml和CMakeList.txt进行修改,添加相关依赖才能运行。  Action  类似Service,在通信过程中有执行状态的反馈,更常用于那些执行时间较长,并且可能需要中断和被抢占的任务节点中。      action通信的数据格式 定义在.action文件中    Parameter Server  参数服务器,存储各种参数的一种字典格式。可以使用命令行,launch文件和node节点的api进行读写。 感觉像是一种全局变量的维护方式。  命令行           命令    含义              rosparam list    列出当前所有参数的值          rosparam get param_key    显示某个参数的值          rosparam set param_key param_value    设置某个参数的值          rosparam dump file_name    保存参数到文件(文件格式为YAML文件)          rosparam load file_name    从文件读取参数          rosparam delete param_key    删除参数        launch文件    node(API)  略  常用工具  Gazebo  仿真工具,模拟器,ODE物理引擎  RViz The Robot Visualization tool  可视化调试工具  rqt  可视化工具,基于qt开发 rqt_graph:显示通信架构 rqt_plot:绘制曲线 rqt_console:查看日志  rosbag  命令行工具,记录和回放数据流(top数据流)           命令    含义              rosbag record <topic_names>    记录某些topic的数据到bag文件中          rosbag record -a    记录所有topic到bag文件中          rosbag play <bag-files>    回放bag文件中记录的数据        Moveit  机械臂常用的专用工具  Client Library  ROS编程的库 对API进行了进一步的封装,一些标准接口。 编程的具体方法与细节。 http://docs.ros.org/api/  roscpp C++的接口  官方文档:http://docs.ros.org/en/api/roscpp/html/ 具体见该https://www.bilibili.com/video/BV1mJ411R7Ni?p=22&spm_id_from=pageDriver 视频中有一系列例子及讲解。  #include<ros/ros.h>//导入自定义的一些msg之类的头文件...  ros::init()         ros::NodeHandle         ros::master         ros::this_node         ros::service         ros::param  ros::names         rospy python的接口  http://wiki.ros.org/rospy  import rospyimport mathfrom topic_demo.msg import gps #自己定义的各种msg等等都需要import  Node         Topic      其中queue_size(队列长度)如果传入为None会变成同步方式,只有是一个整数才是异步方式。    Service         Param         Time      Time是表示时刻的类 Duration是表示时间(持续时间)的类    TF & URDF  TF: TranForm 坐标系变换 URDF:机器人描述规范  TF树  机器人每个frame(以每个部件为中心的坐标系)之间的连接关系,每个连接关系都有一个node来进行维护,这些节点将消息发布到tf的topic中,然后从这些消息中就可以恢复得到一棵完整的tf树,这些消息可以反映每个部件之间的相对位移关系。 tf的具体消息格式以及消息发送和接收方法略【详情见视频】           命令    含义              rosrun tf view_frames    根据当前的tf树(最近5s内的tf消息)创建一个tf图          rosrun rqt_tf_tree rqt_tf_tree    查看当前的tf树(动态变化)          rosrun tf tf_echo [reference_frame] [target_frame]    查看两个frame之间的变换关系        urdf Unified Robot Description Format  定义机器人结构    link 核心部件  joint 两个link之间的连接部件(连接关系)   出错处理  依赖安装  rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y  报错信息如下     ERROR: the following packages/stacks could not have their rosdep keys resolved to system dependencies: robot_sim_demo: Cannot locate rosdep definition for [yocs_cmd_vel_mux] navigation_sim_demo: Cannot locate rosdep definition for [dwa_local_planner] slam_sim_demo: Cannot locate rosdep definition for [hector_mapping]ERROR: the following packages/stacks could not have their rosdep keys resolvedto system dependencies    使用sudo apt-get install ros-kinetic-[] 命令将缺失的包都进行安装再次运行即可。  参考资料  视频教程ros入门:https://www.bilibili.com/video/BV1mJ411R7Ni?p=1
点赞 1
评论 0
全部评论

相关推荐

牛客66512506...:那个百度acg是不是个小哥啊,老是问些底层问题狠狠为难,然后kpi
哪些公司在招寒假实习?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务