这里使用主要介绍如下:
- Ignition的版本为:Citadel,LTS版本支持时间2020-2025;
- ROS2的版本为:Foxy,LTS版本支持时间2020-2023。
什么是Ignition Robotics?
Ignition Robotics基于开发库和云服务等丰富全面的工具箱,提供了一种全新的仿真方式,进一步简化仿真。高度逼真的传感器可在接近真实的环境中快速迭代更新机器人物理设计。在安全上可测试控制策略,并在持续的集成化侧重中利用仿真的诸多优势。
核心仿真器为Gazebo,已经有16年悠久历史。个人最早接触Gazebo是在Player/Stage/Gazebo中,大概2009年,使用其做多人机器人编队和任务仿真研究。从最初作为研究工具到工业和政府机构的广泛应用,Gazebo在各种虚拟竞赛,城市和车辆模拟以及航空器模拟中不断证明自己的高效和实用。
如何安装Ignition Robotics?
在Ubuntu 20.04版本中:
- sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable
lsb_release -cs
main" > /etc/apt/sources.list.d/gazebo-stable.list' - wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
- sudo apt-get update
- sudo apt-get install ignition-citadel
这样就可以完成基本功能的安装。这组建可以依据需要自定义安装。
ROS2 Foxy
这部分内容之前已经介绍非常全面了,请参考如下链接:
- ROS 2 Foxy Fitzroy遇见Ubuntu 20.04
2020年7月15日,官方功能包有694个。
使用如下命令查看ros-foxy-desktop详细信息如下:
为何将教程更新为Citadel和Foxy?
要点如下:
- Gazebo 11为最终版将于2025年停止维护;
- Ignition为Gazebo新一代版本;
- Gazebo和Ignition都是独立于ROS或ROS 2的项目;
- 保证教程面向未来的更新,采用最新版ROS2 Foxy和Ignition Citadel。
ros_ign使用说明
1. ign
在终端输入如下命令测试 ign gazebo:
- ign gazebo shapes.sdf
如果出现如上图所示,蓝,红,绿三个物体,说明安装正常。
2. ROS2
在终端选择foxy,如下可以看到ros2的cli:
3. 使用colcon build
ros_ign包含提供ROS和Ignition之间集成的软件包 :
- ros_ign:提供所有其他软件包的Metapackage;
- ros_ign_image: 使用image_transport将图像从Ignition传输到ROS的单向传输桥接;
- ros_ign_bridge:Ignition和ROS之间的双向传输桥接;
- ros_ign_gazebo:方便使用Ignition Gazebo和ROS的启动文件和可执行文件;
- ros_ign_gazebo_demos:使用ROS-Ignition集成的演示;
- ros_ign_point_cloud:用于从Ignition Gazebo模拟将点云发布到ROS的插件。
4. 使用ros_ign
更新环境:
- source install/setup.bash
- ros2 launch ros_ign_gazebo_demos imu.launch.py
import os
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument
from launch.actions import IncludeLaunchDescription
from launch.launch_description_sources import PythonLaunchDescriptionSource
from launch_ros.actions import Node
def generate_launch_description():
pkg_ros_ign_gazebo = get_package_share_directory('ros_ign_gazebo')
ign_gazebo = IncludeLaunchDescription(
PythonLaunchDescriptionSource(
os.path.join(pkg_ros_ign_gazebo, 'launch', 'ign_gazebo.launch.py')),
launch_arguments={
'ign_args': '-r sensors.sdf'
}.items(),
)
# RViz
# FIXME: Add once there's an IMU display for RViz2
# pkg_ros_ign_gazebo_demos = get_package_share_directory('ros_ign_gazebo_demos')
# rviz = Node(
# package='rviz2',
# executable='rviz2',
# # arguments=['-d', os.path.join(pkg_ros_ign_gazebo_demos, 'rviz', 'imu.rviz')],
# condition=IfCondition(LaunchConfiguration('rviz'))
# )
# Bridge
bridge = Node(
package='ros_ign_bridge',
executable='parameter_bridge',
arguments=['/imu@sensor_msgs/msg/Imu@ignition.msgs.IMU'],
output='screen'
)
return LaunchDescription([
ign_gazebo,
DeclareLaunchArgument('rviz', default_value='true',
description='Open RViz.'),
bridge,
# rviz
])
博客更新说明2020-07-15:
- 只针对Foxy及以后版本ROS2设计和开发课程;
- 只针对2020年之后最新机器人学工具进行可从整合;
- 只针对仿真开发免费课程(硬件需要购买成本*,不符合零成本学习)
- 只针对开源开发对应教程(杜绝盗版,不采用任何商业平台)
- *需购买硬件的教程,不属于免费课程,自愿购买,不提供免费的机器人硬件