设置车辆
使用库存 F1Tenth 车辆
如果您还没有可以使用的 F1Tenth 车辆,请前往 F1Tenth 构建说明 获取材料清单和详细的构建程序。 您需要完成构建说明中的以下部分:
- 建造 F1TENTH 赛车
- 配置 F1TENTH 系统
- 安装 F1TENTH 软件(配置 VESC 和 Hokuyo 设置),跳过 ROS 工作区设置
建立你自己的
可以使用自定义部件,例如:
- RC底盘,带伺服和BLDC电机,兼容VESC;
- VESC,任何配置正确以控制电机和伺服的版本;
- 激光雷达,只要有ROS2驱动即可;
- 板载计算机(ARM64 或 X64 Linux with Docker),最好比 Jetson Nano 板更强大; 推荐使用 Jetson Xavier NX 和 AGX。
远程桌面
由于演示中使用了 Rviz,因此您需要在 Jetson 上使用远程桌面解决方案。 此演示使用 No Machine 进行了测试。 您需要在驾驶时将虚拟 HDMI 插入 Jetson 的 HDMI 端口。 如果您还没有,请将您的 Jetson 连接到显示器,继续进行其余的设置。
- 在 Jetson (ARM64) 和您的主机上下载并安装 MoMachine。
- 确保两台机器在同一个本地网络下。 通过输入 Jetson 的主机名或 IP,从您的主机创建一个新的远程桌面连接。
F1Tenth RecordReplay 轨迹演示
在 Jetson 上准备 Autoware 使用自定义激光雷达
如果您有定制的 LiDAR:
- 检查的内容 AutowareAuto/.aderc-jetson-f1tenth 。 如果使用 ADE,您很可能需要在启动容器时修改一些设备安装选项;
- 检查的内容 AutowareAuto/autoware.auto.foxy.repos 。 将 URL 添加到您的 LiDAR 的 ROS2 驱动程序(将分支名称放在 下 version );
- 将您的激光雷达包作为依赖项添加到 AutowareAuto/src/launch/f1tenth_launch/package.xml ;
- 添加您的激光雷达节点 AutowareAuto/src/launch/f1tenth_launch/launch/f1tenth_vehicle_vesc.launch.py ; LaserScan 主题名称应该是 scan , frame_id 应该是 lidar ,节点命名空间应该是 lidar 。
选项 1:使用 ADE 容器安装
使用 ADE 容器将为您提供快速启动和清洁系统。 预计性能会下降,尤其是使用 RVIZ。
- 使用 ADE遵循标准 Autoware 安装, 但在执行之前停止 ade start --update --enter 。
- 下载 ADE 时请注意:您需要检查 ADE 的 GitLab 发布页面以及 wget AArch64 的正确二进制文件,而不是 ADE 网站上列出的 X86_64 的二进制文件。
- 启动 ADE 容器: cd adehome/AutowareAuto && ade --rc .aderc-jetson-f1tenth start --update --enter
ADE 容器带有预构建的所有内容。 如果您更喜欢在 ADE 容器中使用自己的构建,请遵循以下步骤:
# 导入外部依赖
ade$ cd AutowareAuto
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 --packages-up-to f1tenth_launch |
选项 2:使用本机构建安装
为了获得最佳性能,请在本地构建 Autoware。 遵循 没有 ADE 的构建说明 。 执行时 colcon build ,使用 --packages-up-to f1tenth_launch 和 --symlink-install 跳过不必要的包并轻松更改参数。 在 Jetson Xavier NX 上构建时间约为 15-30 分钟。
创建地图
# (1号航站楼)
$ ade 输入
ade$ source ~/AutowareAuto/install/setup.bash
ade$ ros2 启动 f1tenth_launch f1tenth_mapping_demo.launch.py with_joy:=True vehicle_interface:=vesc |
按下右肩按钮开始驾驶。 在 Rviz 中可视化地图构建过程。
运行以下命令为 AMCL 保存地图:
#(2号航站楼)
$ ade 输入
ade$ mkdir ${HOME}/map
ade$ ros2 运行 nav2_map_server map_saver_cli -f $HOME/map/mymap |
或者,通过运行以下命令为 SLAM 保存地图:
#(2号航站楼)
ade$ mkdir ${HOME}/map
ade$ ros2 服务调用 /slam_toolbox/serialize_map slam_toolbox/srv/SerializePoseGraph "{filename: "$HOME/map/mymap"}" |
这将为 slam_toolbox 的定位保存一个位姿图。
保存地图后,按 Ctrl+C 终端 1 停止映射节点。
记录和回放轨迹 记录轨迹
# (1号航站楼)
$ ade 输入
ade$ 源 AutowareAuto/install/setup.bash
# 添加 'map:=/path/to/map.yaml' 以选择您的原始地图
ade$ ros2 启动 f1tenth_launch f1tenth_recordreplay_demo.launch.py with_joy:=True vehicle_interface:=vesc map:=$HOME/map/mymap |
按下右肩按钮开始驾驶。 在 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 |
在车辆周围行驶并在终端 2 中使用 Ctrl + C 停止录制。 回放轨迹
# (1号航站楼)
$ ade 输入
ade$ 源 AutowareAuto/install/setup.bash
# 添加 '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 with_joy:=True vehicle_interface:=vesc map:=$HOME/map/mymap |
按下右肩按钮开始驾驶。
使用 . 在 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 |
要停车,再次按下右肩按钮可切换回手动模式。 循环运行
为了让车辆在循环中连续运行,首先记录一个轨迹,该轨迹在开始位置后面的停止位置结束。 修改 Autoware/src/launch / f1tenth_launch / param/recordreplay_planner.param.yaml 设置 loop_trajectory 为 True . 构建并运行回放。
已知的问题
回放的速度可能与录制的速度不完全相同。 这是由于 Pure Pursuit 算法的限制。 该实现不考虑延迟和外力,这意味着即使没有按下break,在释放加速时它也假定恒定速度。 这导致车辆的速度是错误的。 将来会进行改进。
疑难解答
Rviz中没有地图;激光雷达信息丢失
在构建地图或记录/回放轨迹时,需要按一次 X 按钮才能在 Rviz 中显示地图。
如果您有带有自己的 ROS2 驱动程序的自定义 LiDAR,请确保 LaserScan 's frame_id 是 lidar ,主题名称是 scan ,并且节点命名空间是 lidar 。 如果驱动程序输出 PointCloud2 ,请使用转换节点将其重新发布为 LaserScan .
Terrible Map;Odometry Drifting
请确保轨道周围有足够的障碍物供 LiDAR 使用。 例如,带有几个圆锥体的室外游乐场通常不起作用,而靠近墙壁的室内空间则更可取。
由于未校准的里程计,地图通常很糟糕,尽管轻微的差异是可以接受的。 您可以通过在 Rviz 中为 /vehicle/odom . 检查车辆的轨迹,并寻找翻转的行驶方向和/或翻转的转向方向。 在以下两个文件中更正它们。
您的车辆里程表可能需要重新校准,并将值输入 AutowareAuto/src /launch /f1tenth_launch/param /vesc_to_odom_node.param.yaml 和 AutowareAuto/ src /launch /f1tenth_launch/param /vesc_config.param.yaml 。 有关校准里程计的信息,请参阅 F1Tenth 文档(驾驶 F1TENTH 赛车 -> 校准里程计)。
回放时车辆不移动
按右肩按钮停止手动操纵杆输出。 否则车辆将无法移动。
如果汽车的起始位置离最终轨迹点太近,并且循环功能关闭,则会立即达到重放目标,汽车将无法行驶。
|