cartographer实车测试修改launch文件和lua文件

针对网上安装的cartographer算法,能够跑bag包的前提下,如何实车上测试的问题。

首先是安装cartographer,如果不确定自己有没有安装成功,尝试下一个官方的bag包,跑成功了就是安装成功了。

我这里使用的是单线激光雷达,每个人的雷达都不一样,启动就行。

1.按照雷达教程,安装驱动,并启动雷达扫描。

2.修改launch文件,我这里参考古月居的launch文件修改。

3.对照launch文件修改lua文件。

原launch文件以demo_revo_lds.launch为副本,源文件如下:

<launch>
  <param name="/use_sim_time" value="true" />

  <node name="cartographer_node" pkg="cartographer_ros"
      type="cartographer_node" args="
          -configuration_directory $(find cartographer_ros)/configuration_files
          -configuration_basename revo_lds.lua"
      output="screen">
    <remap from="scan" to="horizontal_laser_2d" />
  </node>

  <node name="cartographer_occupancy_grid_node" pkg="cartographer_ros"
      type="cartographer_occupancy_grid_node" args="-resolution 0.05" />

  <node name="rviz" pkg="rviz" type="rviz" required="true"
      args="-d $(find cartographer_ros)/configuration_files/demo_2d.rviz" />
  <node name="playbag" pkg="rosbag" type="play"
      args="--clock $(arg bag_filename)" />
</launch>

复制该文件,修改为:

<launch>
  <param name="/use_sim_time" value="true" />

  <node name="cartographer_node" pkg="cartographer_ros"
      type="cartographer_node" args="
          -configuration_directory $(find cartographer_ros)/configuration_files
          -configuration_basename my_revo_lds.lua"
      output="screen">
    <remap from="scan" to="scan" />
  </node>

  <node name="rviz" pkg="rviz" type="rviz" required="true"
      args="-d $(find cartographer_ros)/configuration_files/demo_2d.rviz" />

</launch>

主要修改内容:

1.修改你后面要改的lua文件名,这里也是用源文件为副本,我的修改为my_revo_lds.lua

2.    <remap from="scan" to="scan" />   这里不改没数据读取,暂时不知道干啥用的。

3. args="-d $(find cartographer_ros)/configuration_files/demo_2d.rviz" />

这里demo_2d.rviz也可以修改为自己想要的rviz页面格式。

4.删除了源文件中bag包的调用,毕竟现在是不需要bag文件了,否则会报错。

关于lua文件:

这里也是基于源文件revo_lds.lua的修改

主要修改下两行,我只用了单雷达,雷达在rviz上的fixed frame 为laser,一开始修改别的,各种base_link,或别的都没用,改成laser后成功出结果,了解的大佬可以评论一下原理。

  tracking_frame = "laser",
  published_frame = "laser",

重新编译后,运行launch文件

$ catkin_make_isolated --install --use-ninja

$ roslaunch cartographer_ros my_demo_revo_lds.launch 

 再粘贴一些相关lua文件的解释:

以下为机器视觉的课件:

tracking_frame 有imu的link就设置成imu的link, 没有就设置成base_link
published_frame cartographer发布的tf的最下边一个坐标系, 就是bag文件中tf树的最上边的一个坐标系
provide_odom_frame 是否提供里程计, 如果bag中有里程计的坐标系, 这个就是false, 如果没有, 就根据需要决定是否提供里程计的坐标系
use_pose_extrapolator = false 这个一定要设置成false
use_odometry 是否使用里程计的传感器数据, 如果为true, tf树中一定要存在odom这个坐标系
use_nav_sat/use_landmarks 是否订阅里程计话题的数据, 以及landmark话题的数据
num_laser_scans/num_point_clouds 单线点云与多线点云的话题的数量, 可以同时为1, 不可以同时为0
num_subdivisions_per_laser_scan 一帧点云数据会被分成几次处理, 设置成1就行了
MAP_BUILDER.use_trajectory_builder_2d = true 建二维图时一定要有这句话, 建三维图就把2d改成3d
TRAJECTORY_BUILDER_2D.use_imu_data 是否使用imu, 如果用imu, tracking_frame一定要设置成imu的link
TRAJECTORY_BUILDER_2D.min_z 点云的最小z的范围, 单线点云不能设置大于0的值(不设置), 多线点云的这个值要大于0

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Cartographer 是一个开源的地图制图工具,主要用于构建和绘制室内和室外环境的三维地图。它是以Lua语言作为脚本编写和扩展的。 首先,Lua是一种轻量级高级编程语言,被广泛应用于嵌入式系统、游戏开发、脚本编写等领域。Cartographer选择使用Lua作为其脚本编写语言,是因为Lua拥有简洁的语法和高度可扩展性,使得用户可以轻松地编写和修改Cartographer的功能。 使用Lua作为Cartographer的脚本语言,使得开发人员可以根据特定需求自定义各种功能和算法。他们可以通过编写Lua脚本来改变地图的生成方式、路径规划算法、环境感知等内容。这种灵活性使得Cartographer能够适应各种特定的应用场景和需求。 同时,Lua也是一个功能强大的脚本语言,拥有很多有用的函数库和模块,例如字符串处理、JSON解析、网络通信等。这些功能可以被利用来扩展Cartographer的能力,使得它具备更多的功能。例如,用户可以使用内置的JSON库来处理来自传感器的数据,然后将其集成到Cartographer的地图生成过程中。 总之,Cartographer中使用Lua作为脚本编写语言,给开发人员提供了一种灵活且可扩展的方式来定制和扩展地图生成和绘制的功能。通过编写Lua脚本,用户可以根据自己的需求来改变Cartographer的行为和输出,使其更好地适应各种应用场景。 ### 回答2: 在游戏开发中,cartographer(制图师)是一个很重要的角色,而Lua则是常用于游戏制作的脚本语言。Lua提供了简单、高效和可嵌入的特性,使得在游戏中实现制图功能变得更加容易。 制图师的工作是创建和设计游戏中的地图。他们使用图形工具来绘制地图的外貌,并使用Lua脚本来定义地图的行为、布局和特性。 使用Lua的主要好处之一是它的灵活性。制图师可以根据需要编写自定义脚本来控制地图元素的交互逻辑。例如,他们可以编写脚本来定义角色在地图上的移动、碰撞检测和触发事件等。这样可以为游戏增加更多的互动性和挑战性。 此外,Lua还提供了强大的扩展性。制图师可以利用Lua的扩展功能来添加自定义的地图特性,如随机生成地形、动态添加/移除地图元素等。这样可以使游戏的地图更加多样化和有趣。 另一个使用Lua的好处是它的易学性。相对于其他编程语言,Lua语法简洁明了,并且具有良好的文档和丰富的教程资源。制图师即使没有深厚的编程知识,也可以迅速上手并编写简单的脚本来完成地图设计。 总的来说,cartographer中的Lua在游戏开发中扮演着非常重要的角色。它为制图师提供了强大和灵活的工具,使他们能够轻松创建和定制游戏的地图。无论是添加互动性、扩展地图特性,还是实现复杂的游戏逻辑,Lua都是一个理想的选择。 ### 回答3: cartographer是一个用于构建并绘制地图的开源库,而lua是一种脚本语言,常用于嵌入式系统和游戏开发中。在cartographer中,可以使用lua来编写自定义的功能和逻辑。 使用lua可以为cartographer添加一些自定义的功能。比如,可以利用lua脚本来编写一些特定的算法,从而优化地图的构建和绘制过程。也可以通过lua脚本来实现特定的地图渲染效果,如灯光效果、阴影等。 此外,使用lua还可以在运行时动态加载和修改地图配置。通过编写lua脚本,可以实现在地图运行时根据特定条件对地图进行修改,例如动态生成障碍物、修改地图尺寸、添加额外的特征等。这使得cartographer在适应不同应用领域和需求时更加灵活。 同时,cartographer还提供了一些接口和函数来与lua进行交互。这些接口和函数可以让lua脚本获取和修改地图、传递数据给其他系统、控制执行流程等。通过这些交互方式,我们可以实现cartographer与其他部分的集成,或者将cartographer作为其他系统的一部分,以满足更具体的需求。 综上所述,cartographer中的lua提供了一种扩展和定制地图构建和绘制功能的方法,能够使cartographer更加灵活和适应不同的应用场景和需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值