设置仿真
启动仿真器
通过以下方式启动仿真器
$ cd ~/adehome/AutowareAuto
# 如果您使用的是操纵杆,请添加 '-- --device /dev/input/js0'
$ ade --rc .aderc-amd64-foxy-lgsvl 开始 --update --enter
ade$ /opt/lgsvl/模拟器 |
如果您之前从未设置过 LGSVL,请按照 SVL 仿真器 页面中的说明进行操作,直到“配置集群”部分。
创建模拟
选择地图
目标是将 Red Bull Ring Racetrack 地图添加到您的图书馆。 如果该地图已经在您的图书馆中,则无需执行任何操作。
将地图添加到您的图书馆:
- 转到 Store -> Maps 。
- 单击地图 + 旁边的按钮 Red Bull Ring Racetrack (您可以使用搜索栏按名称过滤)。
选择地图
配置车辆
目标是将 F1TenthCar 车辆添加到您的图书馆。 如果这辆车已经在您的图书馆中,则无需执行任何操作。
将车辆添加到您的图书馆:
- 转到 Store -> Vehicles 。
- 单击车辆 + 旁边的按钮 F1TenthCar (您可以使用搜索栏按名称过滤)。
添加车辆
配置车辆传感器
将车辆添加到库后:
- 转到 Library -> Vehicles 。
- 点击 F1TenthCar 头像。 您将被转至车辆编辑页面。
- 单击 Sensor Configurations 部分附近的按钮以修改传感器配置。
创建一个新的并使用最新版本的传感器配置文件:
- 点击 + Create New Configuration 页面底部的按钮。
- 设置配置名称并选择 ROS2 作为网桥。 - 确认。
在配置编辑视图中:
- 单击 {...} 可视化编辑器(预览)窗口附近的符号。
- 将f1tenth_sensors.json 文件的内容粘贴 到编辑窗口中。 Configurator 窗口现在应该填充一堆传感器。
- 单击 Save 以保存配置。
json配置文件
选择/创建仿真
SVL 仿真器允许您存储和重复使用多个仿真配置。 要使用现有模拟,请导航到 Simulations 选项卡并按所需实例的“运行模拟”按钮。 仿真器现在应该在 SVL 窗口中启动。
要创建新的模拟,请执行以下步骤:
- 切换到 Simulations 选项卡并单击 Add new 按钮。
- 输入名称、描述并选择一个集群。 单击 Next 。
- Random Traffic 从下拉菜单中 选择运行时模板。
- 使用您的传感器配置 选择 Red Bull Ring Racetrack 地图和车辆。 F1TenthCar 单击 Next 。
- 选择 Autoware.Auto 自动驾驶仪并保留 Bridge Connection 默认值。
- 单击 Next ,然后单击 Publish 。
您可以访问 SVL 文档 以获得更深入的描述。
F1Tenth RecordReplay 轨迹演示
为 F1Tenth 启动 ade 并设置 Autoware
F1Tenth 目前是在 f1tenth-devel Autoware.Auto 的分支下开发的。 问题 解决后,无需执行此步骤 。
$ cd adehome/AutowareAuto
# 开始 ade
# 如果您使用的是操纵杆,请添加 '-- --device /dev/input/js0'
$ ade --rc .aderc-amd64-foxy-lgsvl 开始 --update --enter
# 构建汽车软件
ade$ cd AutowareAuto
ade$ git checkout f1tenth-devel
ade$ vcs 导入。< autoware.auto.foxy.repos
ade$ sudo apt 更新;罗斯德更新;rosdep install --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} -yr
ade$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release |
启动仿真器
$ ade 输入
$ /opt/lgsvl/模拟器 |
在您的浏览器中,启动您在上一节中设置的模拟环境。
创建地图
如果要使用 redbull_ring_racetrack,请跳过此步骤。 地图已经提供。
# (1号航站楼)
$ ade 输入
ade$ 源 AutowareAuto/install/setup.bash
# 添加 'with_joy:=True' 以使用操纵杆驾驶车辆
# 按右肩按钮开始驾驶。
ade$ ros2 启动 f1tenth_launch f1tenth_mapping_demo.launch.py |
F1第十映射文件
在 LGSVL 中,绕着车辆行驶。 确保为映射节点驾驶超过一圈以检测环路闭合。
运行以下命令为 AMCL 保存地图:
#(2号航站楼)
$ ade 输入
ade$ mkdir ${HOME}/map
ade$ ros2 运行 nav2_map_server map_saver_cli -f $HOME/map/redbull_ring_racetrack |
这将为 AMCL 本地化保存图像样式的地图。
或者,通过运行以下命令为 SLAM 保存地图:
#(2号航站楼)
ade$ mkdir ${HOME}/map
ade$ ros2 服务调用 /slam_toolbox/serialize_map slam_toolbox/srv/SerializePoseGraph "{filename: "$HOME/map/redbull_ring_racetrack"}" |
这将为 slam_toolbox 的定位保存一个位姿图。
保存地图后,按停止映射节点 Ctrl+C
记录和回放轨迹
记录轨迹
# (1号航站楼)
$ ade 输入
ade$ 源 AutowareAuto/install/setup.bash
# 添加 'with_joy:=True' 以使用操纵杆驾驶车辆
# 按右肩按钮开始驾驶。
# 添加 'localization:='slam'' 以使用 slam_toolbox 进行本地化(默认为 amcl)
# 添加 'map:=/path/to/map.yaml' (AMCL) 或 'map:=/path/to/map.posegraph' (SLAM) 以选择您的原始地图
ade$ ros2 启动 f1tenth_launch f1tenth_recordreplay_demo.launch.py |
在 Rviz 中使用正确的方向设置初始姿势 2D pose estimate
#(2号航站楼)
ade$ source /opt/AutowareAuto/setup.bash
ade$ ros2 action send_goal /planning/recordtrajectory autoware_auto_planning_msgs/action/RecordTrajectory "{record_path: "/tmp/path"}" --feedback |
在 LGSVL 中,在车辆周围行驶并在 f1tenth_recordreplay_demo.launch.py 启动的终端中使用 Ctrl + C 停止录制。
重播轨迹
(1号航站楼)
ade$ source /opt/AutowareAuto/setup.bash
# 添加 'with_joy:=True' 以使用操纵杆驾驶车辆
# 按右肩按钮可在手动和自动模式之间切换
# 添加 'map:=/path/to/map.yaml' 以选择您的原始地图
ade$ ros2 启动 f1tenth_launch f1tenth_recordreplay_demo.launch.py |
在 Rviz 中使用正确的方向设置初始姿势 2D pose estimate
(2号航站楼)
ade$ source /opt/AutowareAuto/setup.bash
ade$ ros2 action send_goal /planning/replaytrajectory autoware_auto_planning_msgs/action/ReplayTrajectory "{replay_path: "/tmp/path"}" --feedback |
F1第十次回放轨迹文件
已知的问题
回放的速度可能与录制的速度不完全相同。 这是由于 Pure Pursuit 算法的限制。 该实现不考虑延迟和外力,这意味着即使没有按下break,在释放加速时它也假定恒定速度。 这导致车辆的速度是错误的。 将来会进行改进。
|