Isaac_learning

Isaac

机器人上安装依赖项

在isaac中文件夹中执行以下命令:

engine/build/scripts/install_dependencies_jetson.sh -u <jetson_username> -h <jetson_ip>
./engine/build/scripts/install_dependencies_jetson.sh -u nvidia -h 192.168.1.191

Run 一个程序

  1. 编译程序 在isaac的根目录去编译

bazel build //apps/samples/stereo_dummy

  1. 运行程序,执行如下命令

bazel run //apps/samples/stereo_dummy

run命令会先检查一下是否编译过了,如果没有编译先编译一下,然后再run.

  1. 打开浏览器 http://localhost:3000

执行程序添加配置参数,如下所示

bazel run //apps/samples/stereo_dummy – --config more_config.json

注意有一个–,用于分隔参数和程序

  1. 调试程序

    bazel build -c dbg //apps/samples/pose_tensorrt_inference
    gdb --args bazel-bin/engine/alice/tools/main --app apps/samples/pose_tensorrt_inference/pose_tensorrt_inference.app.json

编译所有的程序

bazel build …

编译一个目标平台的程序

bazel build //engine/gems/filters/examples:ekf_sin_exp

运行所有的测试:

bazel test … --jobs=1

  • 运行一个测试

bazel test //engine/gems/optimization/tests:pso_ackley

  • 运行连接检测:

    bazel test --python_path=/usr/bin/python2.7 --config=lint …

导航包


熟悉导航包最好的方式是先通过模拟环境,建议使用 “flatsim”,flatsim使用一个range scan 使用了整个导航包。通过以下命令执行导航:

bazel run //apps/flatsim

默认情况下,机器人会四处漫游,从一个随机点行驶到下一个随机点。
打开浏览器查看http://localhost:3000 ,查看机器人的运行情况。

Isaac Sight 可视化

下面来看一下如何监测导航包,查看机器人的当前状态。Sight其实是一个Isaac的结点,它能够提供一个web服务,并且连接到设备。建议使用Chrome浏览器。
界面如下图所示
在这里插入图片描述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qYvo6dGR-1571883865645)(images/IsaacSight.png “Sight”)]

Map视图

Map视图展示了机器人的状态信息,使用它来查看机器人当前要去哪里。在仿真中使用flatsim或carter-sim应用程序运行导航堆栈时的可视化与使用carter应用程序的真实机器人基本相同。使用carter_sim或者carter application,将会展示3D点云

  • Background: 是一个整个的全局地图,黑色,白色,灰色,黑色是机器人不能通过的区域,白色是已知区域,灰色区域是机器人不知道的区域。
  • Robot pose estimate : 机器人的估计姿态显示为带有一个小凹口的蓝色圆圈。定位器使用多模态假设估计器,因此可以显示在姿态上稍有不同的多个机器人姿态指示器。
  • Target and path:全局规划器计算的当前目标点和路径显示为红色和蓝色。最后一个计算全局计划的位置也会显示出来。
  • Current measurement:当前测量的激光束显示为浅绿色。激光束击中障碍物的端点被视为红色圆圈。从机器人当前最佳姿态估计的角度对其显示的距离进行扫描。如果机器人定位良好,则光束端点与地图中被阻塞的单元匹配。
本地视图(Local View)

这个视图显示了机器人周围的障碍物。它可以用来分析为什么机器人可能不移动,或无法达到所需的目标。
在这里插入图片描述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yRu2S8uT-1571883865646)(images/localView.png “LocalView”)]

  • Background : 显示机器人的当前环境状态信息。
  • Robot pose: 由于栅格地图始终围绕机器人居中,因此机器人将显示在上半部分视图中的固定位置。在这个视图中,机器人的前进方向是向下的。
  • Current plans:显示轨迹规划器的本地计划和基于图形的规划器的全局计划。机器人试图按照轨迹生成器的计划行走。

Isaac Navigation

结点和消息

一个Isaac应用程序包含多个结点,导航包里包含以下结点:

  • 全局定位结点:仅使用当前激光测量估计机器人的pose在地图中的位置,不使用任何先验信息。

  • 粒子滤波局部化(ParticleFilterLocalization):使用距离扫描测量连续跟踪机器人的姿态。

  • 全局规划器 :使用当前已知的地图和其他障碍物(如限制区域、附近障碍物和其他障碍物)计算到目标的路径。全局规划器使用Visibility Graph Algorithm算法。为了获得更好的性能,建议通过增加随机样本的数量来构建一个大(密集)图。如果生成图形太慢,则可以从文件加载预生成图形。

  • GlobalPlannerSmoother :使用捷径和其他策略改进全局规划器路径。

  • LqrPlanner:计算机器人在所需路径上平滑驱动的最佳轨迹。

  • DifferentialBaseControl:基本控制器,使用基本轨迹计划输出当前基本命令消息。

  • LocalMap :使用范围扫描测量创建机器人周围障碍物的表示。

  • DifferentialBaseOdometry:利用微分基的里程估计来估计机器人的自我运动

  • LocalizeBehavior:在全局和本地定位之间切换以保持机器人的本地化。

  • obstacleworld:提供一个到所有障碍物列表的接口,包括全局地图、本地地图、限制区域和其他障碍物。

  • robotmodel:提供范围扫描模型和差分基模型,以支持其他各种节点的计算。机器人的形状可以用圆的列表来描述。

  • websight:发布各种可视化并将数据从所有节点打印到web前端。
    节点相互发送消息,如下图中的箭头所示。使用消息传递将应用程序分离为模块化实体。节点可以并行执行并定期运行,也可以在收到新消息时运行。一些节点,如map或range scan模型,不发布消息,而是充当服务提供者,其他节点直接链接到它们。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hkhYZdm5-1571883865647)(images/navFrame.png “navigation frame”)]

导航包中有以下的输入和输出消息类型:

  • RangeScanProto:包含单线激光数据,
  • GoalProto: 包含目标位置
  • DifferentialBaseControl:由控制器产生的差分基座所需的运动。它平滑、安全,可直接用于驱动机器人。

Carter机器人平台

Carter是一个双轮差速的机器人模型,使用一个16线激光传感器,Zed深度相机,一个IMU和一个TX2板卡。与定制的安装支架一起,它为isaac导航堆栈提供了一个强大而健壮的演示平台。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SrlQg3fw-1571883865647)(images/Carter.png “Carter frame”)]

运行Carter应用程序

  1. 确保已经安装好依赖项,环境已经搭好了
  2. 编译arm版本程序,并布置到机器人上(TX2):

./engine/build/deploy.sh --remote_user nvidia -p //apps/carter:carter-pkg -d jetpack42 -h 192.168.1.191
经过下载和编译,然后会布置到Tx2上

  1. ssh登录到tx2

ssh nvidia@192.168.1.191

  1. 执行如下命令执行(on TX2)

./app/carter/carter -m

  1. 连接PS4 ,可以进行控制

Carter 应用结点

下面说一下Carter的应用结点,Carter使用的所有的Navigation包,增加一些特别的结点:

  • LidarDriver: 多线激光的采集结点,发布LidarScan消息
  • RangeScanFlattening:将激光雷达信息展平为平面二维范围扫描,由导航堆栈使用。
  • SegwayRMPDriver:与Segway硬件通信,用于向Segway发送控制命令并从Segway接收车轮里程表数据。
  • Joystick:一种通用的操纵杆驱动程序,它从连接的游戏板发布用户输入。
  • SegwayJoystick:Consumes joystick data, checks for the deadman switch and decides between automatic or manual control mode based on the user input.
    在这里插入图片描述
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1QBsttJW-1571883865648)(images/carterNodes.png “CarterNodes”)]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值