Isaac Sim 跑Slam学习过程2024.9.20
# 本文随着时间逐渐增加内容,是学习笔记
# 诶怎么今天Isaac Sim 4.2.0 突然出现了,这哪来的时间再去试试新的....
没有大佬带...自己学吧
希望使用仿真环境跑定位Slam,现在IMU在Isaac Sim中有现成的传感器模块,GPS则没有,Odom坐标系也不对,噪声也都没添加,模拟不了现实场景,只能用来做验证。
Slam也没系统学过,就只是简单翻阅过视觉Slam十四讲,菜的要命啥也不会....尖锐爆鸣。
现在已知Slam需要或可能需要用到的传感器有:IMU、Odom、LiDAR、GPS、RGB、Depth
- 首先先将sensor层部署出来,这个不能出错。
- 发布仿真环境的sensor ros topic
- 调整帧率,适配现有算法
- 现在是“真值环境”,需要添加噪声
- 仿真环境初始位置要改为地球坐标系,或大地坐标系,根据需求来
跟着这篇论文进行学习:
Pegasus Simulator: An Isaac Sim Framework for Multiple Aerial
Vehicles Simulation
Marcelo Jacinto 1 , João Pinto 1 , Jay Patrikar 2 , John Keller 2 , Rita Cunha 1 , Sebastian Scherer 2 and António Pascoal 1
1.IMU
IMU主要有加速度计和陀螺仪两部分组成。用于估计姿态和运动姿态。
陀螺仪:测量角速度,提供方向信息。
加速度计:测量线性加速度,用于计算速度和位置。
-
陀螺仪(gyroscope):
noise_density
: 陀螺仪的噪声密度,通常以度每小时每根弧度(rad/h)表示。random_walk
: 陀螺仪的随机游走噪声,反映了陀螺仪长期稳定性的特性。bias_correlation_time
: 偏置相关时间,表示偏置变化的时间常数。turn_on_bias_sigma
: 开机时偏置的标准差,反映初始状态下的偏置不确定性。
-
加速度计(accelerometer):
noise_density
: 加速度计的噪声密度,通常以米每秒平方(m/s²)表示。random_walk
: 加速度计的随机游走噪声,表示测量的不确定性。bias_correlation_time
: 偏置相关时间,与陀螺仪类似。turn_on_bias_sigma
: 开机时加速度计偏置的标准差,反映初始状态下的偏置不确定性。
-
更新频率(update_rate): IMU数据更新的频率,单位为赫兹(Hz),表示每秒钟更新的次数。
- 生成陀螺仪的随机游走值。
- 将该值添加到车辆的实际角速度中(相对于ENU惯性框架的FLU,表示为FLU机体框架)。
- 对于加速度计和加速度也遵循相同的逻辑。
- 角速度被旋转,以便相对于NED惯性框架表示为FRD机体框架。
- 此加速度也被旋转,使其表示为车辆的FRD机体框架。该传感器输出遵循PX4采用的标准的数据
[18]J. Rehder, J. Nikolic, T. Schneider, T. Hinzmann, and R. Siegwart,
“Extending kalibr: Calibrating the extrinsics of multiple IMUs and of
individual axes,” in 2016 IEEE International Conference on Robotics
and Automation (ICRA), 2016, pp. 4304–4311.
实际操作试一下IMU的噪声添加
在论文中,Pegasus适配的是Isaac Sim 4.1.0 ,ubuntu22.04,Driver Version: 550.90.07
我的:Isaac Sim2023.1.1,ubuntu20.04,Driver Version: 535.171.04,显存8188MiB.....咦惹
没事,全是精华,糟粕是我,就学习一下是如何将代码添加进isaacsim中并使用的,学习一下环境集成和扩展包的使用。
官方使用IMU进行SLAM的教程:(这里有给IMU加噪声!好耶)
(This tutorial walks you through setting up Isaac ROS Visual SLAM with a Realsense camera.)
Tutorial for Visual SLAM Using a RealSense Camera with Integrated IMU — isaac_ros_docs documentation
简单梳理一下 Pegasus Simulator 的 Extension 使用流程
1. 在~/.bashrc 中先设置好环境变量
# Isaac Sim root directory export ISAACSIM_PATH="${HOME}/.local/share/ov/pkg/isaac_sim-2023.1.1" # Isaac Sim python executable alias ISAACSIM_PYTHON="${ISAACSIM_PATH}/python.sh" # Isaac Sim app alias ISAACSIM="${ISAACSIM_PATH}/isaac-sim.sh"
尝试用这种方式打开下Isaac Sim App ,看看能不能行
# Run the simulator with the --help argument to see all available options ISAACSIM --help# Run the simulator. A new window should open ISAACSIM
检查是否可以从 Python 脚本启动Isaac Sim
# Run the bundled python interpreter and see if it prints on the terminal "Hello World." ISAACSIM_PYTHON -c "print('Hello World.')"# Run the python interpreter and check if we can run a script that starts the simulator and adds cubes to the world ISAACSIM_PYTHON ${ISAACSIM_PATH}/standalone_examples/api/omni.isaac.core/add_cubes.py
2. 可以开始尝试使用扩展
论文中使用的是无人机PX4(Pegasus Simulator),Clone Pegasus Simulator:
# Option 1: With HTTPS git clone https://github.com/PegasusSimulator/PegasusSimulator.git # Option 2: With SSH (you need to setup a github account with ssh keys) git clone git@github.com:PegasusSimulator/PegasusSimulator.git
虽然我并不使用这个,但想下载下来看看大佬是怎么写的
下载好后,Launch ISAACSIM application
打开Extensions,指定路径添加扩展
在添加后,就可以在third-party tab 中使用Pegasus Simulator extension了
第一次启用扩展时,Python 依赖项应该会自动为内置的 ISAACSIM_PYTHON 安装,几秒钟后,Pegasus 小部件 GUI 应该会弹出。呈现在左下角。
在 Pegasus 模拟器的扩展模式中,提供的 GUI 小部件仅在打算使用 PX4-Autopilot 时才有用。要安装 PX4-Autopilot。(=需要下载一个无人机飞行控制软件PX4)
这里我控制小车不需要这么复杂,因为可以直接在Isaac Sim 中进行小车控制。
3. 接下来学习如何创建一个控制后端
使用非线性控制器,使车辆按照预定的轨迹进行移动(或使用ROS),接收车辆及其传感器的当前状态,并充当控制输入。==通过Python代码直接在3D仿真环境中实现和测试算法。