BehaviorTree.CPP
是一个开源的C++
行为树库。在游戏领域,行为树已经比较流行了。主要用于维护游戏角色的各种动作和状态。但在机器人领域还很少使用的。Navigation2
中引入了行为树来组织机器人的工作流程和动作执行。
行为树是树状的结构,它的逻辑流程是由xml
文件描述的。我们可以用其配套的工具Groot
来可视化行为树。如下图所示:
BehaviorTree.CPP
是一个开源的C++
行为树库。在游戏领域,行为树已经比较流行了。主要用于维护游戏角色的各种动作和状态。但在机器人领域还很少使用的。Navigation2
中引入了行为树来组织机器人的工作流程和动作执行。
行为树是树状的结构,它的逻辑流程是由xml
文件描述的。我们可以用其配套的工具Groot
来可视化行为树。如下图所示:
编译完ros2
程序后,我们会发现install
目录下有两个脚本local_setup.bash
和 setup.bash
。执行程序前,通常需要source
一下install
目录下的脚本,以便环境变量准备就绪。这样ros2 run
和ros2 launch
就能找到对应的执行文件和依赖。
下面的内容是从setup.bash
中截取出来的一段。可以发现它会先source
一下/opt/ros/galactic
目录再source
一下/home/ubuntu/turtlebot3_ws/install
目录,最后再source
一下当前目录。这样就会把外部的多个工作空间囊括进来。如果多个工作空间中有相同名字的功能包可能就会互相冲突。
1 | # source chained prefixes |
注意:下面的解释说明是以Navigation2 v1.0.12
来进行的。其对应的ROS2
版本为Galactic
。
Nav2具有下列工具:
● 加载、提供和存储地图的工具(地图服务器Map Server)
● 在地图上定位机器人的工具 (AMCL)
● 避开障碍物从A点移动到B点的路径规划工具(Nav2 Planner)
● 跟随路径过程中控制机器人的工具(Nav2 Controller)
● 将传感器数据转换为机器人世界中的成本地图表达的工具(Nav2 Costmap 2D)
● 使用行为树构建复杂机器人行为的工具(Nav2 行为树和BT Navigator)
● 发生故障时计算恢复行为的工具(Nav2 Recoveries)
● 跟随顺序航点的工具(Nav2 Waypoint Follower)
● 管理服务器生命周期的工具和看门狗(Nav2 Lifecycle Manager)
● 启用用户自定义算法和行为的插件(Nav2 Core)
要使用Hexo
必须先安装Git
和Node.js
。本文是在Ubuntu20
环境下进行操作的。使用其它系统也可以将下面的操作作为参考。
1 | sudo apt-get install git-core |
推荐安装当前最新版。不同的Hexo
版本依赖不同版本的Node.js
。下面是版本对照表。
这里建议安装Node.js
最新稳定版。
Node.js
官方下载网址:
https://nodejs.org/en/download/
这里以二进制安装方式进行,也可使用源码编译安装。
按图示下载好二进制文件包。
按照下面的方式操作即可安装好。
1 | tar xvf node-v16.15.1-linux-x64.tar.xz |
新一代的turtlebot
终于来了。[撒花撒花]
turtlebot
是开源的低成本移动机器人平台,希望以低成本的方式帮助更多的开发者学习实践机器人技术。
这次发布的TurtleBot 4
共有两个版本:TurtleBot 4 Standard
和TurtleBot 4 Lite
。
它们是以iRobot Create3
作为移动底盘,配备了OAK-D
摄像头和2D
激光雷达。计算平台是Raspberry Pi 4
,并运行ROS2
。
TurtleBot 4
软件运行在Ubuntu 20.04 LTS (Focal Fossa)
上,目前只支持ROS2 Galactic
版本。它是目前第一个支持ROS2
的Turtlebot
。
开发turtlebot4
的公司叫clearpathrobotics
,下面是它在github
上的主页:
机器人的开发需要很多的测试。而测试就需要搭建场地。测试项目一多,需要的场地的形式也会更多。搭建这样的场地不仅成本高,耗费的人力和物力都相当可观。有些场景在真实环境中不容易出现,但却可以在仿真环境中制造出来。
通过对静态环境的模拟和动态环境的模拟,仿真系统可以帮助开发人员和测试人员触及到很多长尾的情况。而做到这些的代价要比在真实环境中的测试低很多,效率也更高。不管是服务机器人领域还是自动驾驶,仿真技术已经成为一项不可或缺的关键技术。这里对仿真系统做如下简单的定义以方便大家有个整体的概念。
1)仿真系统是通过计算机仿真技术对真实环境的数学建模。它需要模拟重力,碰撞,摩擦,机器人的动力学等等基础物理现象。
2)仿真技术的基本原理是在仿真场景内,将真实控制器变成算法,结合传感器仿真等技术,完成对算法的测试和验证。
目前ROS
中存在webots
、gazebo
、stage
三种仿真环境。
Webots
是一个开源的三维移动机器人模拟器,它与gazebo
类似都是ros
中仿真环境。webots
在2018年以前是一款商业软件,商业软件的好处就是安装简单,在windows
和ubuntu
上都可以实现一键安装,对用户很友好,webots
从2018年以后webots
进行了开源(自2018年12月起,Webots
作为开放源码软件在Apache 2.0
许可下发布。)。
Webots
支持C/C++
、Python
、MATLAB
、Java
、ROS
和TCP/IP
等多种方式实现模型的仿真控制。Webots
内置了接近100种机器人模型,包括轮式机器人、人形机器人、爬行移动机器人、单臂移动机器人、双臂移动机器人、无人机、大狗、飞艇等等,其中就包括大家比较熟悉的Boston Dynamics Atlas
、DJI Mavic 2 PRO
、Nao
、PR2
、YouBot
、UR
、Turtlebot3 Burger
等机器人。当然还有我们需要的自动驾驶环境,webots
还提供有火星车的模型可以让大家使用。
Webots
的一些关键功能包括:
Windows
,Linux
和Mac
)。目前Webots
是通过webots_ros2
功能包来和ROS2
集成的。
不知道阅读本篇文章的你有没有被环境配置搞的焦头烂额过?
想要验证一个功能包,但却需要安装各种依赖。装就装吧!但是安装的依赖可能更新本机中的一些配置或软件版本,导致过去可以运行的软件这么折腾一下后就不能再运行了。
这时可能又后悔又懊恼。严重的可能要重新安装电脑系统。
本文描述了一种在Docker
环境中开发和调试ROS
程序的方法。旨在解决环境配置和软件依赖给我们带来的困扰。
我们使用Docker
+Vscode
来构建开发环境。下面的操作在Ubuntu 20.04 LTS
上验证过。对于其他操作系统,操作步骤应该也是一致的。
1 | sudo apt-get install ros-galactic-turtle-tf2-py ros-galactic-tf2-tools ros-galactic-tf-transformations |
1 | pip3 install transforms3d |
在不同的命令窗口中运行下面的命令
启动小乌龟窗口
1 | ros2 launch turtle_tf2_py turtle_tf2_demo.launch.py |
启动键盘控制节点
1 | ros2 run turtlesim turtle_teleop_key |
观察坐标转换的结果
1 | ros2 run tf2_ros tf2_echo turtle2 turtle1 |
本示例中启动了两只小乌龟Turtle1
和Turtle2
。TF
发布器会将Turtle1
相对于world
坐标系的位置关系和Turtle2
相对于world
坐标系的位置关系发布出来。为了实现Turtle2
跟随Turtle1
的效果,程序中获取了Turtle1
相对于Turtle2
的位置关系并且将其折算成速度控制量。
launch
文件可以同时配置和启动多个ros
节点。ROS2
中的launch
文件可以用Python
、xml
、yaml
来写。
但ROS2
中的Python launch
文件更为灵活,功能也更加强大。可以用它执行一些其他的任务(比如新建目录,配置环境变量)。所以官方推荐的是使用python
来写。而launch
文件一般会放在功能包中的launch
文件夹下面。如果想感受一下各种方式写launch
文件的效果,可以点开下面的链接体会一下。
https://docs.ros.org/en/galactic/How-To-Guides/Launch-file-different-formats.html
launch
文件一般通过下面的命令启动:
1 | ros2 launch <package_name> <launch_file_name> |
值的注意的是,当package
编译时加了--symlink-install
选项,在包内修改了launch
文件,不用编译也是生效的。
ROS2
最新的5年长期支持版ROS 2 Humble Hawksbill
发布了。它是第一个运行在Ubuntu 22.04 (Jammy Jellyfish)
上的版本。
介绍文章:
https://discourse.ros.org/t/ros-2-humble-hawksbill-released/25729
ROS2 Humble Hawksbill
版本新特性:
ROS2 Humble Hawksbill
官方手册: