type
status
date
slug
summary
tags
category
icon
password

功能包文件/文件夹结构

对于自定义消息和服务文件/文件夹结构

Node Handles

节点句柄主要有四种类型:
  1. 默认(公共)节点句柄: nh_ = ros::NodeHandle();
  1. 专用节点句柄: nh_private_ = ros::NodeHandle(“~”);
  1. 命名空间节点句柄: nh_aslam_ = ros::NodeHandle(“aslam”);
  1. 全局节点句柄: nh_global_ = ros::NodeHandle(“/“); (您可能永远都不应该使用它。永远不要使用全局名称。这是因为当您将节点推入名称空间时,它们无法正确解析,并且不允许您一次正确运行多个节点。或者在同一个主机上使用多个机器人。)
通常,您将只使用前两个——您也可以使用命名空间节点句柄来为有许多发布者的节点分离发布者。
为了解释它们的作用以及应该如何使用它们,让我们假设您的ROS节点在名称空间 blah 中被命名为 ros_node ,并且您正在尝试查找名称 topic 。以下是他们将使用所有4个节点句柄解决的问题:
  1. /blah/topic
  1. /blah/ros_node/topic
  1. /blah/aslam/topic
  1. /topic
相反,如果您尝试解析 /topic ,这将跳过节点的命名空间并解析为 /topic 。

ROS参数

  • 如果节点只有一个或两个参数,可以在启动文件中使用 <param> 标记设置它们
  • 通常(首选),在YAML文件中组织参数,并通过 rosparam -标记加载它们

ROS调试

通过VSCode调试ROS调试器。安装ROS扩展
在VSCode工作区中,有一个名为 .vscode 的目录。您需要在那里创建一个文件 launch.json ,其中包含以下内容:
构建工作区 catkin build --cmake-args -DCMAKE_BUILD_TYPE=Debug
您可以使用 rosrun 或 roslaunch 从PC的任何位置启动ROS节点。
ROS节点运行后,导航到VSCode上的debug选项卡。点击 ROS: Attach 按钮,选择是否需要C++或Python节点进行调试,并键入ROS节点名称进行选择。
您将被要求输入密码。

时间

使用 ros::Time 、 ros::Duration 和 ros::Rate 代替系统时间。

ROS Messages与其他数据类型之间的转换

Eigen

使用eigen_conversions(或kindr-或minkindr-conversions)来将Eigen数据转换成消息类型,或将订阅的消息数据转换成Eigen类型,例如
使用tf_conversions (或 kindr- 或minkindr-conversions)将将Eigen数据转换成TF,或将TF转换成Eigen数据,例如

OpenCV

Catkin Build

 
 

单位和坐标约定

单位

使用SI单位进行标准化

基本单位

名称
单位
长度
米(m)/meter
质量
千克(kg)/kilometer
时间
秒(s)/second
电流
安培(A)/ampere

扩展单位

名称
单位
角度
弧度(rad)/radian
频率
赫兹(hz)/hertz
牛顿(N)/newton
功率
瓦(w)/watt
电压
伏(v)/volt
温度
摄氏度(°)/celsius
磁性
特斯拉(T)/tesla

坐标系惯例

所有系统的坐标系都是右手系,满足右手定则

轴朝向

  • 相对于机体,x轴正方向指向前方,y轴正方向指向左侧,z轴正方向向上
  • 对于地理位置的短程坐标系,使用east north up (ENU)表示,X轴指向东方,Y轴指向北方,Z轴向上

坐标后缀

  • 对于相机,通常会有一个以”_optical”后缀的第二坐标系,该坐标系与坐标系约定惯例些许不同,z轴指向正前方,x轴指向右侧,y轴指向下
  • 对于希望在north east down(NED)公约下工作的室外系统,用“_NED”后缀定义适当转换的二级坐标系:X指向北方,Y指向东方,Z指向下

旋转表示

有许多方法来表示旋转,下面列出了首选顺序及其基本原理。
  • 四元数——表示紧凑,没有奇点
  • 旋转矩阵——没有奇点
  • 相对于固定XYZ轴的横滚、俯仰、偏航——按顺序定义没有奇点,用于角速度
  • 相对ZYX的偏航、俯仰、横滚欧拉角——欧拉角通常是不鼓励的,因为默认情况下,不同域有24个“有效”约定,使用不同的约定。
根据右手法则,方向的偏航分量随着子坐标系逆时针旋转而增加,对于地理姿态,当指向东方时偏航为零。
这需要特别提及,只是因为它不同于传统的指南针方位,传统的指南针方位在指向北方时为零,顺时针递增。硬件驱动程序应该在发布标准ROS消息之前进行适当的转换。

协方差表示

  • 线速度协方差矩阵
    • 角速度协方差矩阵
      • 六维协方差矩阵
        •  
      CMakeLists.txt讲解ROS中移动平台坐标系