2025睿抗机器人大赛智能侦查赛道省赛全流程
2025睿抗机器人大赛智能侦查赛道省赛全流程——基础入门
安装好Ubuntu系统和ROS
- 安装Ubuntu
首先需选择与目标 ROS 版本匹配的 Ubuntu 系统镜像(如 ROS Noetic 对应 Ubuntu 20.04、ROS Humble 对应 Ubuntu 22.04),从 Ubuntu 官网下载正版镜像文件;接着使用 U 盘启动盘制作工具(如 Rufus),将镜像写入空白 U 盘并设置为可引导模式;随后将制作好的 U 盘插入待安装设备(一般选择自己的笔记本电脑),重启设备并通过快捷键(不同的电脑按键不同,大家自行搜索)进入 BIOS 设置 U 盘为第一启动项;进入 Ubuntu 安装界面后,按需选择 “试用” 或 “安装 Ubuntu”,依次完成语言设置、磁盘分区(推荐新手选择 “清除磁盘并安装 Ubuntu”)、地区与时区设置、用户名及密码创建,等待系统文件复制与配置完成后重启设备,即可完成 Ubuntu 系统安装。ZEEKLOG有很多现成的好的方案,我在这就不班门弄斧了。 - 实操建议
(1)对笔记本电脑的要求:处于Free状态的空间100G以上(我一般是用diskgenius分配空间),预留这么大主要是考虑到后续大家由于不熟悉使用,在前期入门的时候会安装不少东西,给大家实操留下足够的容错空间。
(2)准备一个64G或者32G的U盘用于作启动盘,Ubuntu镜像下载可以去Ubuntu官网,但想要快点一般去中科大镜像源官网下载(清华源这些也可以),注意下载的版本一般是要对应,且一般是桌面版。
(3)安装好之后相当于又是一个新的系统,接下来要做的是熟悉这个系统怎么使用(你当时怎么了解使用Windows的就可以怎么学习使用Ubuntu,只是要记住一点,Ubuntu系统整个底层是python构建起来的,你没看错,就是用你学的Python搭建起来的整个系统,因此在主环境下(即终端默认打开进去的环境)更新一些Python库的时候要注意不要无脑更新,尤其是在后续部署yolo的时候容易出现因为更新了某些库导致系统底层代码兼容性出问题) - 安装ROS
十分十分推荐鱼香ROS一键安装,按照终端输出提示安装就行
wget http://fishros.com/install -O fishros && . fishros 
依次完成①更换系统源,更换系统源并删除旧源②ROS安装,系统版本是Ubuntu20.04–安装noetic,Ubuntu18.04–安装melodic,继续选择完整安装③rosdep更新,安装rosdepc④更新ROS环境设置⑤运行小乌龟检测是否安装成功,即
// 第一个终端输入下面的指令 roscore // 第二个终端输入下面的指令 rosrun turtlesim turtlesim_node // 第三个终端输入下面的指令 rosrun turtlesim turtle_teleop_key (光标要在这个终端闪动时,键盘控制小乌龟才是有效的,按键盘的向上等四个方向按键就可以控制乌龟运动,小乌龟的轨迹也会被记录出来。
新建工作空间和功能包
完成功能包gazebo_pkg配置
第一阶段:框架搭建
打开终端依次输入以下指令:

出现了下图所示的情况说明工作空间编译完成。

然后继续依次输入下面的指令:

出现了编译成功的结果(如下图)

之后可以添加环境变量设置,先打开文件夹到主目录下,勾选显示隐藏文件。

然后找到.bashrc文件,双击打开,在文件最后一行输入下面的指令之后保存退出即可
source ~/test_ws/devel/setup.bash 
最后在终端验证是否添加成功,注意这里需要新开一个终端,因为.bashrc文件相当于启动文件,可以理解为只要开终端就会自动执行的内容。

至此第一阶段配置算是完成了。下面进行第二阶段的配置,主要是编写机器人模型。
第二阶段:搭建机器人模型
继续在终端输入下面的指令:

在打开的waking_robot_new.xacro输入以下内容之后保存退出即可
<?xml version="1.0"?> <robot name="robot" xmlns:xacro="http://www.ros.org/wiki/xacro"> <xacro:property name="length_wheel" value="0.05" /> <xacro:property name="radius_wheel" value="0.06" /> <xacro:property name="camera_link" value="0.05" /> <xacro:property name="PI" value="3.1415926"/> <xacro:macro name="default_inertial" params="mass"> <inertial> <mass value="${mass}" /> <inertia ixx="0.1" ixy="0.0" ixz="0.0" iyy="0.1" iyz="0.0" izz="0.1" /> </inertial> </xacro:macro> <link name="dummy"> </link> <link name="base_footprint"> <visual> <geometry> <box size="0.001 0.001 0.001"/> </geometry> <origin rpy="0 0 0" xyz="0 0 0"/> </visual> <xacro:default_inertial mass="0.0001"/> </link> <joint name="dummy_joint" type="fixed"> <parent link="dummy"/> <child link="base_footprint"/> </joint> <!-- <xacro:include filename="$(find nav_sim)/urdf/robot.gazebo" /> --> <gazebo reference="base_footprint"> <material>Gazebo/Green</material> <turnGravityOff>false</turnGravityOff> </gazebo> <joint name="base_footprint_joint" type="fixed"> <origin xyz="0 0 0" /> <parent link="base_footprint" /> <child link="base_link" /> </joint> <link name="base_link"> <visual> <geometry> <box size="0.2 .3 .1"/> </geometry> <origin rpy="0 0 ${PI/2}" xyz="0 0 0.05"/> <material name="white"> <color rgba="1 1 1 1"/> </material> </visual> <collision> <geometry> <box size="0.2 .3 0.1"/> </geometry> </collision> <xacro:default_inertial mass="8.2"/> </link> <link name="wheel_1"> <visual> <geometry> <cylinder length="${length_wheel}" radius="${radius_wheel}"/> </geometry> <!-- <origin rpy="0 1.5 0" xyz="0.1 0.1 0"/> --> <origin rpy="0 0 0" xyz="0 0 0"/> <material name="black"> <color rgba="0 0 0 1"/> </material> </visual> <collision> <geometry> <cylinder length="${length_wheel}" radius="${radius_wheel}"/> </geometry> </collision> <mu1>0.5</mu1> <mu2>0.5</mu2> <!-- <mu1>0.5</mu1> <mu2>0.5</mu2> --> <xacro:default_inertial mass="0.5"/> </link> <link name="wheel_2"> <visual> <geometry> <cylinder length="${length_wheel}" radius="${radius_wheel}"/> </geometry> <!-- <origin rpy="0 1.5 0" xyz="-0.1 0.1 0"/> --> <origin rpy="0 0 0" xyz="0 0 0"/> <material name="black"/> </visual> <collision> <geometry> <cylinder length="${length_wheel}" radius="${radius_wheel}"/> </geometry> </collision> <mu1>0.5</mu1> <mu2>0.5</mu2> <!-- <mu1>0.5</mu1> <mu2>0.5</mu2> --> <xacro:default_inertial mass="0.5"/> </link> <link name="wheel_3"> <visual> <geometry> <cylinder length="${length_wheel}" radius="${radius_wheel}"/> </geometry> <!-- <origin rpy="0 1.5 0" xyz="0.1 -0.1 0"/> --> <origin rpy="0 0 0" xyz="0 0 0"/> <material name="black"/> </visual> <collision> <geometry> <cylinder length="${length_wheel}" radius="${radius_wheel}"/> </geometry> </collision> <mu1>0.5</mu1> <mu2>0.5</mu2> <!-- <mu1>0.5</mu1> <mu2>0.5</mu2> --> <xacro:default_inertial mass="0.5"/> </link> <link name="wheel_4"> <visual> <geometry> <cylinder length="${length_wheel}" radius="${radius_wheel}"/> </geometry> <!-- <origin rpy="0 1.5 0" xyz="-0.1 -0.1 0"/> --> <origin rpy="0 0 0" xyz="0 0 0" /> <material name="black"/> </visual> <collision> <geometry> <cylinder length="${length_wheel}" radius="${radius_wheel}"/> </geometry> </collision> <mu1>0.5</mu1> <mu2>0.5</mu2> <!-- <mu1>0.5</mu1> <mu2>0.5</mu2> --> <xacro:default_inertial mass="0.5"/> </link> <joint name="base_to_wheel1" type="continuous"> <parent link="base_link"/> <child link="wheel_1"/> <origin rpy="${-PI/2} 0 0" xyz="0.1 0.13 0"/> <axis xyz="0 0 1" /> </joint> <joint name="base_to_wheel2" type="continuous"> <axis xyz="0 0 1" /> <anchor xyz="0 0 0" /> <limit effort="100" velocity="100" /> <parent link="base_link"/> <child link="wheel_2"/> <origin rpy="${-PI/2} 0 0" xyz="-0.1 0.13 0"/> </joint> <joint name="base_to_wheel3" type="continuous"> <parent link="base_link"/> <axis xyz="0 0 1" /> <child link="wheel_3"/> <origin rpy="${-PI/2} 0 0" xyz="0.1 -0.13 0"/> </joint> <joint name="base_to_wheel4" type="continuous"> <parent link="base_link"/> <axis xyz="0 0 1" /> <child link="wheel_4"/> <origin rpy="${-PI/2} 0 0" xyz="-0.1 -0.13 0"/> </joint> <!-- IMU joint --> <joint name="imu_joint" type="fixed"> <axis xyz="0 1 0" /> <origin xyz="0.125 0 0.125" rpy="0 0 0"/> <parent link="base_link"/> <child link="imu_link"/> </joint> <!-- IMU --> <link name="imu_link"> <collision> <origin xyz="0 0 0" rpy="0 0 0"/> <geometry> <box size="0.05 0.05 0.05"/> </geometry> </collision> <visual> <origin xyz="0 0 0" rpy="0 0 0"/> <geometry> <box size="0.05 0.05 0.05"/> </geometry> <material name="green"> <color rgba="0 1 0 1"/> </material> </visual> <inertial> <mass value="1e-2" /> <origin xyz="0 0 0" rpy="0 0 0"/> <inertia ixx="1e-6" ixy="0" ixz="0" iyy="1e-6" iyz="0" izz="1e-6" /> </inertial> </link> <!-- IMU --> <!-- Camera joint --> <joint name="camera_joint" type="fixed"> <axis xyz="0 1 0" /> <origin xyz="0.125 0 0.175" rpy="0 0 0"/> <parent link="base_link"/> <child link="camera_link"/> </joint> <!-- Camera --> <link name="camera_link"> <collision> <origin xyz="0 0 0" rpy="0 0 0"/> <geometry> <box size="0.05 0.05 0.05"/> </geometry> </collision> <visual> <origin xyz="0 0 0" rpy="0 0 0"/> <geometry> <box size="0.05 0.05 0.05"/> </geometry> <material name="red"> <color rgba="1 0 0 1"/> </material> </visual> <inertial> <mass value="1e-2" /> <origin xyz="0 0 0" rpy="0 0 0"/> <inertia ixx="1e-6" ixy="0" ixz="0" iyy="1e-6" iyz="0" izz="1e-6" /> </inertial> </link> <!-- camera --> <!-- Hokuyo joint --> <joint name="hokuyo_joint" type="fixed"> <origin xyz="0.125 0.0 0.225" rpy="0 0 0"/> <parent link="base_link"/> <axis xyz="0 1 0" /> <child link="laser_frame"/> </joint> <!-- Hokuyo Laser --> <link name="laser_frame"> <collision> <origin xyz="0 0 0" rpy="0 0 0"/> <geometry> <box size="0.05 0.05 0.05"/> </geometry> </collision> <visual> <origin xyz="0 0 0" rpy="0 0 0"/> <geometry> <mesh filename="package://gazebo_pkg/meshes/hokuyo.dae"/> </geometry> </visual> <inertial> <mass value="1e-2" /> <origin xyz="0 0 0" rpy="0 0 0"/> <inertia ixx="1e-6" ixy="0" ixz="0" iyy="1e-6" iyz="0" izz="1e-6" /> </inertial> </link> <!-- hokuyo --> <!-- gazebo插件设置相关 --> <gazebo reference="base_link"> <material>Gazebo/Orange</material> </gazebo> <gazebo reference="wheel_1"> <material>Gazebo/Red</material> </gazebo> <gazebo reference="wheel_2"> <material>Gazebo/Black</material> </gazebo> <gazebo reference="wheel_3"> <material>Gazebo/Red</material> </gazebo> <gazebo reference="wheel_4"> <material>Gazebo/Black</material> </gazebo> <!-- ros_control plugin --> <!-- <gazebo> <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so"> <robotNamespace>/robot</robotNamespace> <legacyModeNS> true </legacyModeNS> </plugin> </gazebo> --> <!-- camera_link --> <gazebo reference="camera_link"> <material>Gazebo/Red</material> </gazebo> <!-- hokuyo --> <gazebo reference="laser_frame"> <sensor type="ray" name="head_hokuyo_sensor"> <!-- <sensor type="gpu_ray" name="head_hokuyo_sensor"> --> <!-- GPU rate:15 30改为30可以有效避免地图更新不及时造成小车短暂迷路的情况--> <pose>0 0 0 0 0 0</pose> <visualize>false</visualize> <update_rate>30</update_rate> <ray> <scan> <horizontal> <samples>720</samples> <resolution>1</resolution> <min_angle>-3.1415926</min_angle> <max_angle>3.1415926</max_angle> </horizontal> </scan> <range> <min>0.05</min> <max>30.0</max> <resolution>0.01</resolution> </range> <noise> <type>gaussian</type> <!-- Noise parameters based on published spec for Hokuyo laser achieving "+-30mm" accuracy at range < 10m. A mean of 0.0m and stddev of 0.01m will put 99.7% of samples within 0.03m of the true reading. --> <mean>0.0</mean> <stddev>0.01</stddev> </noise> </ray> <!-- GPU版本 --> <!-- <plugin name="gazebo_ros_head_hokuyo_controller" filename="libgazebo_ros_gpu_laser.so"> --> <plugin name="gazebo_ros_head_hokuyo_controller" filename="libgazebo_ros_laser.so"> <topicName>/scan</topicName> <frameName>laser_frame</frameName> </plugin> </sensor> </gazebo> <!-- camera --> <gazebo reference="camera_link"> <sensor type="camera" name="camera1"> <update_rate>30.0</update_rate> <camera name="head"> <horizontal_fov>1.3962634</horizontal_fov> <image> <width>1920</width> <height>1080</height> <format>R8G8B8</format> </image> <clip> <near>0.02</near> <far>300</far> </clip> <noise> <type>gaussian</type> <!-- Noise is sampled independently per pixel on each frame. That pixel's noise value is added to each of its color channels, which at that point lie in the range [0,1]. --> <mean>0.0</mean> <stddev>0.007</stddev> </noise> </camera> <plugin name="camera_controller" filename="libgazebo_ros_camera.so"> <alwaysOn>true</alwaysOn> <updateRate>0.0</updateRate> <cameraName>/</cameraName> <imageTopicName>/cam</imageTopicName> <cameraInfoTopicName>camera_info</cameraInfoTopicName> <frameName>camera_link</frameName> <hackBaseline>0.07</hackBaseline> <distortionK1>0.0</distortionK1> <distortionK2>0.0</distortionK2> <distortionK3>0.0</distortionK3> <distortionT1>0.0</distortionT1> <distortionT2>0.0</distortionT2> </plugin> </sensor> </gazebo> <!-- Drive controller --> <gazebo> <plugin name="planar_controller" filename="libgazebo_ros_planar_move.so"> <enableYAxis>true</enableYAxis> <commandTopic>/cmd_vel</commandTopic> <odometryTopic>/odom</odometryTopic> <odometryFrame>odom</odometryFrame> <odometryRate>30</odometryRate> <robotBaseFrame>base_footprint</robotBaseFrame> </plugin> </gazebo> <!-- imu控制 --> <gazebo reference="imu_link"> <material>Gazebo/Orange</material> <gravity>true</gravity> <sensor name="imu_sensor" type="imu"> <always_on>true</always_on> <update_rate>100</update_rate> <visualize>true</visualize> <topic>__default_topic__</topic> <plugin filename="libgazebo_ros_imu_sensor.so" name="imu_plugin"> <topicName>/imu</topicName> <bodyName>imu_link</bodyName> <updateRateHZ>100.0</updateRateHZ> <gaussianNoise>0.0</gaussianNoise> <xyzOffset>0 0 0</xyzOffset> <rpyOffset>0 0 0</rpyOffset> <frameName>imu_link</frameName> </plugin> <pose>0 0 0 0 0 0</pose> </sensor> </gazebo> <!-- gazebo插件设置相关结束 --> </robot> 之后去编写launch文件对机器人在rviz里面可视化,先新建launch文件夹,然后新建名为view_waking_robot.launch的launch文件(新建文件夹除了前面的mkdir指令也可以和Windows系统一样右击新建即可,这里不做演示,因为和Windows完全一样),并在launch文件里添加以下内容,之后保存退出
<launch> <!-- 1. 声明xacro文件路径(核心:替换为你的功能包名和实际文件路径) --> <param name="robot_description" command="$(find xacro)/xacro '$(find gazebo_pkg)/urdf/waking_robot_new.xacro'" /> <!-- 说明: - your_package_name:替换为你的ROS功能包名称(存放xacro文件的功能包) - urdf:若xacro文件存放在xacro文件夹,改为xacro即可 --> <!-- 2. 启动关节状态发布节点(静态模型可保留,动态模型必需,确保关节正常显示) --> <node name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" /> <!-- 3. 启动机器人状态发布节点(将机器人描述和关节状态整合发布,RViz需依赖此节点) --> <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" /> <!-- 4. 启动RViz可视化工具(可选:指定默认配置文件,无需手动重复配置) --> <node name="rviz" pkg="rviz" type="rviz" args="-d $(find gazebo_pkg)/rviz/test.rviz" output="screen" /> <!-- 说明: - 若没有自定义rviz配置文件,可删除 args="-d ..." 这部分,启动后手动配置 - 若要创建自定义rviz配置,先手动配置好后保存到功能包的rviz文件夹即可 - RVIZ是我提前新建好的,大家没有新建的话需要新建一下,至于里面的RVIZ文件是在运行没有配置RVIZ的launch时手动配置好保存在功能包的,具体流程如下,这里给出来的是配置好的launch --> </launch> 这里要注意的是,Rviz已经配置好了,具体配置流程如下:
①启动 launch 文件后,RViz 界面打开,首先在左侧「Displays」面板中,设置 Fixed Frame 为机器人基坐标系(通常为 base_link 或 base_footprint,坐标系随便选择都可以,影响的只是机器人位置);
②点击左侧「Displays」面板下方的「Add」按钮,在弹出的窗口中选择 RobotModel 组件,点击「OK」添加。
③添加完成后,无需额外修改参数(Robot Description 默认识别 /robot_description 话题,与 launch 文件配置对应),此时即可在 RViz 中看到 waking_robot_new.xacro 对应的机器人 3D 可视化模型。(RobotModel会冒红,是因为缺失//gazebo_pkg/meshes/hokuyo.dae,这个下一步就会解决)。
出现下面的结果说明一切正常。

继续新建文件夹meshes,注意仍旧是在工作包gazebo_pkg里面。

进入gazebo_pkg下的meshes文件夹下,右击打开终端,使用touch命令进行下面两个文件:

在bot.dae文件里面添加一下内容:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1"> <asset> <contributor> <authoring_tool>Google SketchUp 8.0.3161</authoring_tool> </contributor> <created>2013-03-12T18:37:32Z</created> <modified>2013-03-12T18:37:32Z</modified> <unit meter="0.0254000" name="inch" /> <up_axis>Z_UP</up_axis> </asset> <library_visual_scenes> <visual_scene> <node name="SketchUp"> <instance_geometry url="#ID2"> <bind_material> <technique_common> <instance_material symbol="Material2" target="#ID4"> <bind_vertex_input semantic="UVSET0" input_semantic="TEXCOORD" input_set="0" /> </instance_material> </technique_common> </bind_material> </instance_geometry> <instance_geometry url="#ID10"> <bind_material> <technique_common> <instance_material symbol="Material2" target="#ID4"> <bind_vertex_input semantic="UVSET0" input_semantic="TEXCOORD" input_set="0" /> </instance_material> </technique_common> </bind_material> </instance_geometry> </node> </visual_scene> </library_visual_scenes> <library_geometries> <geometry> <mesh> <source> <float_array count="1380">0.0000000 -45.7519685 7.1023622 9.2094319 -27.6589793 7.1023622 0.0000000 0.0000000 7.1023622 27.3385827 -45.7519685 7.1023622 19.5952586 -27.6589793 7.1023622 19.5952586 -15.2455935 7.1023622 9.2094319 -15.2455935 7.1023622 27.3385827 0.0000000 7.1023622 0.0000000 -45.7519685 7.1023622 0.0000000 -42.4667573 3.5912116 0.0000000 -45.7519685 0.0000000 0.0000000 -41.4149158 4.3983180 0.0000000 -40.1900204 4.9056863 0.0000000 -38.8755457 5.0787402 0.0000000 0.0000000 7.1023622 0.0000000 -43.2738637 2.5393701 0.0000000 -43.7812320 1.3144747 0.0000000 -43.9542859 0.0000000 0.0000000 -37.5610710 4.9056863 0.0000000 -36.3361756 4.3983180 0.0000000 -35.2843341 3.5912116 0.0000000 -34.4772277 2.5393701 0.0000000 -33.9698594 1.3144747 0.0000000 -33.7968056 -0.0000000 0.0000000 -7.4224696 4.8068120 0.0000000 -8.6226772 4.3096697 0.0000000 -9.6533188 3.5188306 0.0000000 -10.4441579 2.4881890 0.0000000 -10.9413002 1.2879814 0.0000000 -11.1108661 0.0000000 0.0000000 -6.1344882 4.9763780 0.0000000 -4.8465068 4.8068120 0.0000000 -3.6462992 4.3096697 0.0000000 -2.6156576 3.5188306 0.0000000 -1.8248185 2.4881890 0.0000000 -1.3276762 1.2879814 0.0000000 -1.1581102 -0.0000000 0.0000000 0.0000000 0.0000000 27.3385827 -45.7519685 7.1023622 0.0000000 -45.7519685 0.0000000 27.3385827 -45.7519685 0.0000000 0.0000000 -45.7519685 7.1023622 27.3385827 -43.9542859 -0.0000000 27.3385827 -45.7519685 7.1023622 27.3385827 -45.7519685 0.0000000 27.3385827 -43.7812320 1.3144747 27.3385827 -43.2738637 2.5393701 27.3385827 -42.4667573 3.5912116 27.3385827 -41.4149158 4.3983180 27.3385827 -40.1900204 4.9056863 27.3385827 -38.8755457 5.0787402 27.3385827 0.0000000 7.1023622 27.3385827 -37.5610710 4.9056863 27.3385827 -36.3361756 4.3983180 27.3385827 -35.2843341 3.5912116 27.3385827 -34.4772277 2.5393701 27.3385827 -33.9698594 1.3144747 27.3385827 -33.7968056 0.0000000 27.3385827 -7.4224696 4.8068120 27.3385827 -8.6226772 4.3096697 27.3385827 -9.6533188 3.5188306 27.3385827 -10.4441579 2.4881890 27.3385827 -10.9413002 1.2879814 27.3385827 -11.1108661 -0.0000000 27.3385827 -6.1344882 4.9763780 27.3385827 -4.8465068 4.8068120 27.3385827 -3.6462992 4.3096697 27.3385827 -2.6156576 3.5188306 27.3385827 -1.8248185 2.4881890 27.3385827 -1.3276762 1.2879814 27.3385827 -1.1581102 0.0000000 27.3385827 0.0000000 0.0000000 0.0000000 0.0000000 7.1023622 27.3385827 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 27.3385827 0.0000000 7.1023622 30.0078740 -1.1581102 0.0000000 27.3385827 -11.1108661 -0.0000000 27.3385827 -1.1581102 0.0000000 30.0078740 -11.1108661 -0.0000000 27.3385827 0.0000000 0.0000000 0.0000000 -1.1581102 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -11.1108661 0.0000000 0.0000000 -33.7968056 -0.0000000 0.0000000 -43.9542859 0.0000000 0.0000000 -45.7519685 0.0000000 27.3385827 -45.7519685 0.0000000 27.3385827 -33.7968056 0.0000000 27.3385827 -43.9542859 -0.0000000 -3.6456693 -1.3276762 1.2879814 0.0000000 -1.1581102 -0.0000000 -3.6456693 -1.1581102 -0.0000000 0.0000000 -1.3276762 1.2879814 -3.6456693 -1.8248185 2.4881890 0.0000000 -1.8248185 2.4881890 -3.6456693 -2.6156576 3.5188306 0.0000000 -2.6156576 3.5188306 0.0000000 -3.6462992 4.3096697 -3.6456693 -3.6462992 4.3096697 0.0000000 -4.8465068 4.8068120 -3.6456693 -4.8465068 4.8068120 0.0000000 -6.1344882 4.9763780 -3.6456693 -6.1344882 4.9763780 0.0000000 -7.4224696 4.8068120 -3.6456693 -7.4224696 4.8068120 0.0000000 -8.6226772 4.3096697 -3.6456693 -8.6226772 4.3096697 0.0000000 -9.6533188 3.5188306 -3.6456693 -9.6533188 3.5188306 -3.6456693 -10.4441579 2.4881890 0.0000000 -10.4441579 2.4881890 -3.6456693 -10.9413002 1.2879814 0.0000000 -10.9413002 1.2879814 -3.6456693 -11.1108661 0.0000000 0.0000000 -11.1108661 0.0000000 -3.6456693 -33.9698594 1.3144747 0.0000000 -33.7968056 -0.0000000 -3.6456693 -33.7968056 -0.0000000 0.0000000 -33.9698594 1.3144747 -3.6456693 -34.4772277 2.5393701 0.0000000 -34.4772277 2.5393701 -3.6456693 -35.2843341 3.5912116 0.0000000 -35.2843341 3.5912116 0.0000000 -36.3361756 4.3983180 -3.6456693 -36.3361756 4.3983180 0.0000000 -37.5610710 4.9056863 -3.6456693 -37.5610710 4.9056863 0.0000000 -38.8755457 5.0787402 -3.6456693 -38.8755457 5.0787402 0.0000000 -40.1900204 4.9056863 -3.6456693 -40.1900204 4.9056863 0.0000000 -41.4149158 4.3983180 -3.6456693 -41.4149158 4.3983180 0.0000000 -42.4667573 3.5912116 -3.6456693 -42.4667573 3.5912116 -3.6456693 -43.2738637 2.5393701 0.0000000 -43.2738637 2.5393701 -3.6456693 -43.7812320 1.3144747 0.0000000 -43.7812320 1.3144747 -3.6456693 -43.9542859 0.0000000 0.0000000 -43.9542859 0.0000000 30.0078740 -10.9413002 1.2879814 27.3385827 -11.1108661 -0.0000000 30.0078740 -11.1108661 -0.0000000 27.3385827 -10.9413002 1.2879814 30.0078740 -10.4441579 2.4881890 27.3385827 -10.4441579 2.4881890 30.0078740 -9.6533188 3.5188306 27.3385827 -9.6533188 3.5188306 27.3385827 -8.6226772 4.3096697 30.0078740 -8.6226772 4.3096697 27.3385827 -7.4224696 4.8068120 30.0078740 -7.4224696 4.8068120 27.3385827 -6.1344882 4.9763780 30.0078740 -6.1344882 4.9763780 27.3385827 -4.8465068 4.8068120 30.0078740 -4.8465068 4.8068120 27.3385827 -3.6462992 4.3096697 30.0078740 -3.6462992 4.3096697 27.3385827 -2.6156576 3.5188306 30.0078740 -2.6156576 3.5188306 30.0078740 -1.8248185 2.4881890 27.3385827 -1.8248185 2.4881890 30.0078740 -1.3276762 1.2879814 27.3385827 -1.3276762 1.2879814 30.0078740 -1.1581102 0.0000000 27.3385827 -1.1581102 0.0000000 30.0078740 -43.7812320 1.3144747 27.3385827 -43.9542859 -0.0000000 30.0078740 -43.9542859 -0.0000000 27.3385827 -43.7812320 1.3144747 30.0078740 -43.2738637 2.5393701 27.3385827 -43.2738637 2.5393701 30.0078740 -42.4667573 3.5912116 27.3385827 -42.4667573 3.5912116 27.3385827 -41.4149158 4.3983180 30.0078740 -41.4149158 4.3983180 27.3385827 -40.1900204 4.9056863 30.0078740 -40.1900204 4.9056863 27.3385827 -38.8755457 5.0787402 30.0078740 -38.8755457 5.0787402 27.3385827 -37.5610710 4.9056863 30.0078740 -37.5610710 4.9056863 27.3385827 -36.3361756 4.3983180 30.0078740 -36.3361756 4.3983180 27.3385827 -35.2843341 3.5912116 30.0078740 -35.2843341 3.5912116 30.0078740 -34.4772277 2.5393701 27.3385827 -34.4772277 2.5393701 30.0078740 -33.9698594 1.3144747 27.3385827 -33.9698594 1.3144747 30.0078740 -33.7968056 0.0000000 27.3385827 -33.7968056 0.0000000 27.3385827 -33.7968056 0.0000000 27.3385827 -43.7812320 -1.3144747 27.3385827 -43.9542859 -0.0000000 27.3385827 -43.2738637 -2.5393701 27.3385827 -42.4667573 -3.5912116 27.3385827 -41.4149158 -4.3983180 27.3385827 -40.1900204 -4.9056863 27.3385827 -38.8755457 -5.0787402 27.3385827 -37.5610710 -4.9056863 27.3385827 -36.3361756 -4.3983180 27.3385827 -35.2843341 -3.5912116 27.3385827 -34.4772277 -2.5393701 27.3385827 -33.9698594 -1.3144747 30.0078740 -33.7968056 0.0000000 27.3385827 -43.9542859 -0.0000000 27.3385827 -33.7968056 0.0000000 30.0078740 -43.9542859 -0.0000000 0.0000000 -43.7812320 -1.3144747 0.0000000 -33.7968056 -0.0000000 0.0000000 -43.9542859 0.0000000 0.0000000 -43.2738637 -2.5393701 0.0000000 -42.4667573 -3.5912116 0.0000000 -41.4149158 -4.3983180 0.0000000 -40.1900204 -4.9056863 0.0000000 -38.8755457 -5.0787402 0.0000000 -37.5610710 -4.9056863 0.0000000 -36.3361756 -4.3983180 0.0000000 -35.2843341 -3.5912116 0.0000000 -34.4772277 -2.5393701 0.0000000 -33.9698594 -1.3144747 0.0000000 -33.7968056 -0.0000000 -3.6456693 -43.9542859 0.0000000 -3.6456693 -33.7968056 -0.0000000 0.0000000 -43.9542859 0.0000000 0.0000000 -10.9413002 -1.2879814 0.0000000 -1.1581102 -0.0000000 0.0000000 -11.1108661 0.0000000 0.0000000 -10.4441579 -2.4881890 0.0000000 -9.6533188 -3.5188306 0.0000000 -8.6226772 -4.3096697 0.0000000 -7.4224696 -4.8068120 0.0000000 -6.1344882 -4.9763780 0.0000000 -4.8465068 -4.8068120 0.0000000 -3.6462992 -4.3096697 0.0000000 -2.6156576 -3.5188306 0.0000000 -1.8248185 -2.4881890 0.0000000 -1.3276762 -1.2879814 0.0000000 -11.1108661 0.0000000 -3.6456693 -1.1581102 -0.0000000 -3.6456693 -11.1108661 0.0000000 0.0000000 -1.1581102 -0.0000000 27.3385827 -1.1581102 0.0000000 30.0078740 -1.3276762 -1.2879814 27.3385827 -1.3276762 -1.2879814 30.0078740 -1.1581102 0.0000000 30.0078740 -1.1581102