以下demo都是出自官方教程urdf_tutorial
Link
CLI
ros2命令行,可以使用ros2 --help来查看指南
ros2 --help
# 包括ros2 pkg/topic等等,基础且常用
VScode
vscode老朋友了,但是要配置好适合ros2开发的vscode,还是有点麻烦的。
配置C++语言相关配置.vscode/c_cpp_properties.json
如果没用这个文件,按ctrl+shift+P
选C++ Edit config(UI)
{// See https://go.microsoft.com/fwlink/?LinkId=733558// for the documentation about the tasks.json format"version": "2.0.0","tasks": [{"label": "colcon build All(Debug)","type": "shell","command": ["colcon","build","--symlink-install","--cmake-args -DCMAKE_BUILD_TYPE=Debug"],},{"label": "colcon build(Debug)","type": "shell","command": ["colcon","build","--symlink-install","--packages-select <package name>","--cmake-args -DCMAKE_BUILD_TYPE=Debug"],"group": "build",},{"label": "colcon build(Release)","type": "shell","command": ["colcon","build","--symlink-install","--packages-select <package name>","--cmake-args -DCMAKE_BUILD_TYPE=Release"],"group": "build",},{"label": "colcon clean","type": "shell","command": ["cd ${workspaceFolder};","rm -rf build/ install/ log/;"],"group": "build"},{"label": "colcon test","type": "shell","command": ["colcon","test","--packages-select <package name>",],"group": "test"},]
}
Build tool
ROS的构建工具主要有:colcon
,catkin_pkg
,rosdep
,ament
,CMake
其中colcon
负责查找package,以及pacakge中的pacakge.xml
,catkin_pkg
负责解析package.xml
,rosdep
负责根据package.xml
解决依赖问题,CMake
负责实际的package编译,ament
系列包可以看作是cmake扩展里面包含了很多cmake函数和宏,辅助CMake
和colcon
实现一些功能。
不用专门安装,安装ros2时附带就安装上了,使用也很简单,主要是在cmake中插入语句,比葫芦画瓢就行。
DDS分布式消息系统
ROS中负责端到端分布式通信的中间件,具体可以看这篇artical,讲解了DDS的由来以及为什么ROS2选择使用DDS技术。DDS是一种技术标准,涉及接口定义,端到端支持,具体各家实现不同,所以又涉及到不同实现的适配问题。因为这个事情,ROS的架构中又分为static type support和dynamic type support。
当然,这不是我们目前应该关注的事情。
TF2
ROS2坐标系相关库 ,还包括一个tf2_tools的ROS2包,提供了读取坐标系关系等工具。
安装:
sudo apt install ros-jazzy-tf2-tools
用于管理不同坐标系间关系,例如机器人坐标系与世界坐标系,传感器坐标系间的关系。
上图是机器人坐标系关系图,
Rqt
调试使用的可视化插件框架,可以用于查看节点关系图,通信关系等
安装后直接命令行输入rqt
运行即可
URDF
机器人定义文件格式,
同类型的还有:
- xacro
- sdf
基本都是大白话,一般我们也不需要手写这个,都是用solidworks生成urdf文件,visual.urdf
样例如下:
<?xml version="1.0"?>
<robot name="materials"><material name="blue"><color rgba="0 0 0.8 1"/></material><material name="white"><color rgba="1 1 1 1"/></material><link name="base_link"><visual><geometry><cylinder length="0.6" radius="0.2"/></geometry><material name="blue"/></visual></link><link name="right_leg"><visual><geometry><box size="0.6 0.1 0.2"/></geometry><origin rpy="0 1.57075 0" xyz="0 0 -0.3"/><material name="white"/></visual></link><joint name="base_to_right_leg" type="fixed"><parent link="base_link"/><child link="right_leg"/><origin xyz="0 -0.22 0.25"/></joint><link name="left_leg"><visual><geometry><box size="0.6 0.1 0.2"/></geometry><origin rpy="0 1.57075 0" xyz="0 0 -0.3"/><material name="white"/></visual></link><joint name="base_to_left_leg" type="fixed"><parent link="base_link"/><child link="left_leg"/><origin xyz="0 0.22 0.25"/></joint></robot>
Rviz
也是可视化平台,可以用于可视化坐标系间关系,机器人结构等。
ROS2附带安装。
运行:
ros2 run rviz2 rviz2
Gazoo
仿真平台
ROS中其他常见的仿真器有:
- Webots:开源机器人仿真器,应用也挺多。
- ISAAC:nvidia做的一个仿真平台,再底层是nvidia的元宇宙平台Ominiverse
以上就是一些常用的ROS工具,其实ROS中还有很多其他工具,例如对交叉编译的支持,Qos通信质量配置,通信安全加密等等若干,而且每个工具深入的话都很复杂,也没必要全都记,知道有,用到来再仔细学就可以了。
了解了这些,基本上已经可以开始做项目了,在项目中继续学习