用于无人驾驶FSAE车辆的ROS / Gazebo仿真软件包。
内容
1.安装先决条件
- 安装Ubuntu 18.04 LTS
- 完整安装ros-melodic-desktop
- 安装 catkin tools
- 将EUFS Sim放入工作空间中
- 下载eufs_msgs并将其放在与以下文件夹
eufs_sim里
- 通过导航到catkin工作区并执行操作来安装ROS依赖项
rosdep install -i --from-path src/
注意:eufs_sim可能会与其他版本的ROS一起使用,但是作者不维护它们
2.编译
导航到您的工作区并构建仿真:
cd [工作空间名称]
catkin build 或者 catkin_make
为了使ROS能够找到EUFS软件包,您还需要运行
环境变量配置需要在工作空间目录下配置
source ./devel/setup.bash
echo "source /WORKSPACE/devel/setup.bash">>~/.bashrc
echo $ROS_PACKAGE_PATH
注意:源代码需要在您打开的每个新终端上运行。您也可以将其包括在.bashrc
文件中。
3.RUN
现在您终于可以运行我们的kickass模拟了!!
roslaunch eufs_launcher eufs_launcher.launch
您持有这样的东西:
仿真的基本用法位于启动器窗口的左侧。在这里,您可以选择要用来启动模拟的选项。这些选项将在下面更详细地描述。
使用默认选项,这将启动带有转向GUI和我们的ros_can_sim GUI以及默认RViz窗口的RQT。
在ros_can_sim GUI中,您可以从下拉菜单中选择一个任务,然后点击“设置任务”。这将向CanState
该/ros_can/set_mission
主题发布消息。
在汽车开车之前,您需要告诉它可以。这是通过发布Bool
消息并将数据设置true
为该/ros_can/set_mission
主题来完成的。这可以使用ROS节点中的发布者来完成,也可以使用以下命令来完成: rostopic pub -1 /ros_can/mission_flag std_msgs/Bool "data: true"
5秒后,您应该会看到状态从 OFF
变为DRIVING
。这辆车现在可以在赛道上行驶了!
可以将命令发送到汽车,发布AckermannDriveStamped
有关该/cmd_vel_out
主题的消息。
注意: 如果您选择了Manual
任务,并且想使用EUFS机械手导航GUI,而没有任何其他节点来转换命令,则需要在GUI顶部的文本字段中将主题更改为 /cmd_vel_out
4.启动选项
使用“轨道”下拉菜单,您可以在以下位置选择要启动模拟的轨道:
- small_track-用于快速原型制作和一致性的小型固定轨道驱动器轨道
- Skidpad-根据Formula Formula规则预先配置的曲目
- 加速-根据学生方程式规则预先配置的轨道
- rand-随机生成的autocross / trackdrive轨道。默认情况下,sim卡提供一个,但您可以使用GUI生成更多。有关更多信息,请阅读Wiki
下面的其他选项:
- 车辆模型-确定仿真中的汽车动力学。使用gazebo_race_car_model可以完成此操作,该模型允许您创建自定义的车辆模型。
- RViz-启动默认的RViz窗口
- 使用模拟感知-如果启用,则插件会模拟我们的感知堆栈,包括来自拟合到真实数据的系统的噪声。如果禁用此选项,则将在仿真中完全模拟相机和激光雷达。
- 凉亭GUI-启动凉亭GUI。警告:这可能会导致计算机性能下降。
- 地面真相TF-发布地面真相状态转换。如果没有运行本地化系统,则应使用。但是,请注意,基本事实状态始终会发布。
有关如何使用GUI的完整手册, 请参见此处。
5.附加传感器
汽车的传感器套装默认情况下:
- Velodyne VLP16激光雷达
- ZED立体相机
- IMU
- 全球定位系统
- 车轮里程计
通过ros-melodic-robotnik-sensor
包装可提供其他用于测试的传感器 。其中一些已经在中定义eufs_description/robots/eufs.urdf.xarco
。您可以简单地对其进行注释,然后将其适当地连接到汽车上。
6.已知问题
- 有时您可能会同时完成2 numpy个安装。要解决此问题,只需
pip uninstall numpy
多次卸载numpy 。然后重新安装它,pip install numpy
一切都将照常工作! - 如果您需要快速重新启动 gui,请务必等待几秒钟(5个就足够了),这一点很重要。如果您尝试快速执行此操作,则可能导致gui在凉亭仍处于关闭状态时启动凉亭。这将使程序崩溃,并且不会给出令人满意的错误消息(它将说它在日志文件中放置了错误,但日志文件不存在)。可以在eufs_launcher的自述文件中找到更多信息。
- 当使用RViz且汽车快速行驶时,您可能会注意到车轮被拖到汽车底盘后面。这是ROS的robot_state_publisher节点的限制,除了视觉效果差之外,不会引起任何问题。
- 随机轨道的产生有时易于造成几乎重叠的不良轨道。承诺生成跟踪之前,请仔细检查图像是否存在问题。