嵌入式方向实践 小车实验报告
嵌入式方向实践 小车实验报告
实验任务
背景
主要学习和考核以ROS为主的机器人相关知识、非常符合目前机器人产业界的人才需求,同时其更高的技术门槛,以及更激烈的对抗性。
为保证线上比赛的公平性,智能车室外光电组线上仿真比赛平台统一用「Gazebo」。赛道模型和无人车三维模型统一提供。线上比赛需要先把赛道模型导入Gazebo,采用ROS中建地图的方式构建赛道地图,通过自主导航算法实现无人车完成从起到到终点的运动。仿真平台的传感器可以使用IMU,激光雷达或摄像头,仿真平台自主导航算法不限。
赛道模型不允许修改。赛道示意图如下
统一使用提供的仿真车模型。仿真车模型的示意图如下:
仿真车模型自带传感器如下:
IMU ;激光雷达; 深度摄像头
仿真车模型如下方面禁止修改:
尺寸大小;自带传感器参数;无人车质量;无人车中各部位的转动惯量矩阵;碰撞系数
关于碰撞,线上仿真比赛赛道中会有锥桶等障碍物,车模运行时要避开障碍物,否则会有相应处罚,障碍物位置是随机的,会在赛前公布。赛道中的锥桶采用的是Gazebo models中的标准锥桶模型。
比赛时,仿真车根据提供的统一地图自主导航,避开障碍物,从赛道起点跑到终点,记录比赛完成时间,作为线上仿真比赛的成绩。
比赛违规说明
1、车模碰触到锥桶,加罚5s
2、车模碰触到赛道围栏,加罚5s
3、车模碰触到锥桶或赛道围栏后停止运行,计比赛失败
4、车模在赛道中停止运行,计比赛失败
5、为了考查参赛队员在传感器数据融合方面的能力,在Gazebo仿真比赛中,禁止使用Gazebo直接发布无人车的精准位置消息(odometry)。
https://blog.csdn.net/Lovely_him/article/details/107948765。
综合实践说明
采用ROS中建地图的方式构建赛道地图,通过自主导航算法实现无人车完成从起点到终点的运动。仿真平台的传感器可以使用IMU,激光雷达或摄像头,仿真平台自主导航算法不限。
统一提供已经构建好的竞赛地图和车模。车模参数和地图参数不得私自修改。车模根据构建好的地图自主导航,避开锥桶障碍物,从赛道起点跑到终点,记录完成时间,根据完成时间进行成绩排名。
实验报告
一 创建虚拟机
使用Orcale VM VirtualBox创建一个新的虚拟机,基本配置如下:
2. 虚拟机系统为ubuntu-18.04.06
二 安装ROS-melodic
以下内容参考了:
ros-racecar.pdf
melodic/Installation/Ubuntu - ROS Wiki
Ubuntu18.04安装ROS Melodic(详细,亲测安装完成,有清晰的截图步骤)_ubuntu 18 ros melodic-CSDN博客
ROS Melodic 安装必成功流程+避坑指南(超详细)-CSDN博客
更换源服务器为南京大学镜像,在“软件和更新”中可以找到:
输入以下指令,将ROS软件仓库的信息添加到Ubuntu系统的APT源列表中:
1
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
添加两个密钥(来自ros-racecar.pdf):
1
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
1
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net --recv-key F42ED6FBAB17C654
结果遇到了报错(可能是公钥服务器的问题,也可能是密钥有问题):
上网查询后,改为使用以下命令:
1
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
成功,显示如下:
更新软件列表
1
sudo apt-get update
安装ros-melodic桌面完整版, 包含 ROS、rqt、rviz、机器人通用库、2D/3D 模拟器、导航以及 2D/3D 感知包:
1
sudo apt install ros-melodic-desktop-full
添加环境变量
1
2echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc安装依赖
1
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
初始化rosdep
1
sudo rosdep init
看到以下内容说明成功:
然后输入:
1
rosdep update
结果报错了:
大概是网络问题,多次执行rosdep update命令可能可以解决(本人执行了快二十遍才成功)。
像下面这样说明成功了:
测试:
1
roscore
结果是以下内容,想执行install python-roslaunch也失败:
参考ROS安装问题: “Command ‘roscore‘ not found, but can be installed with: sudo apt install python-roslaunch“-CSDN博客解决了,但是这个解决办法总感觉有点奇怪。
三 运行racecar
使用虚拟文件夹将准备好的代码放进虚拟机里,并移动至/~目录下。
初始化工作空间,给的代码好像是ros kinetic版本的,因此先将src/CMakeLists.txt中的kinetic改成melodic。
1
2cd ~/racecar_ws/src
catkin_init_workspace然后它显示 File “/home/jinqq/racecar_ws/src/CMakeLists.txt” already exists,这个指令就跳过了。
编译源代码,先回到racecar_ws中
1
catkin_make
结果遇到以下问题:
执行权限的问题,输入以下添加权限:
1
sudo chmod -R a+rwx *
结果又报错:
好像是符号格式的问题,太麻烦了,直接把CMakeLists里指向的/opt/ros/melodic/share/catkin/cmake/toplevel.cmake复制进CMakeLists算了…也就是把CMakeLists里的内容变为toplevel.cmake的内容。
重新执行catkin_make后,会发现报错找不到包,例如:
这是缺少包导致的,首先输入以下命令安装这些包(来自ros-racecar.pdf):
1
2
3
4
5
6
7
8
9
10
11sudo apt-get install ros-melodic-driver-base
sudo apt-get install ros-melodic-ackermann-msgs
sudo apt-get install ros-melodic-controller-manager
sudo apt-get install ros-melodic-gazebo-ros-control
sudo apt-get install ros-melodic-effort-controllers
sudo apt-get install ros-melodic-joint-state-controller
sudo apt-get install ros-melodic-rtabmap-ros
sudo apt-get install ros-melodic-move-base
sudo apt-get install ros-melodic-map-server
sudo apt-get install ros-melodic-teb-local-planner
sudo apt-get install ros-melodic-global-planner再次尝试catkin_make后,发现还报错找不到OpenCV这个包,处理方法比较特殊,参考了OpenCV找不到config.cmake(简单直接的解决方法):Could not find a package configuration file provided by “OpenCV“_opencvconfig.cmake-CSDN博客,如下:
首先进入根目录中,然后搜索opencvconfig,如下:
找到位置后,再看报错的是哪个CMakeLists,发现是racecar_ws/src/racecar_gazebo下的CMakeLists.txt ,打开该文件,在find_package(….)前面加入(或修改)set(OpenCV_DIR xxx) ,其中xxx为搜索找到的位置,例如改成下面这样:
这时候再catkin_make,应该成功了。
添加环境变量:
1
2
3echo "source ~/racecar_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc打开一个新的终端,启动ros环境:
1
roscore
再打开一个新的终端,启动gazebo地图:
1
2cd ~/racecar_ws/
roslaunch racecar_gazebo racecar_runway_navigation.launchgazebo 启动可能需要一小会,此时不要进行其他操作,不然 gazebo 容易崩溃。
启动成功后会如下显示:(给我卡闷了)
再打开一个新的终端,启动rviz
1
2cd ~/racecar_ws/
roslaunch racecar_gazebo racecar_rviz.launch启动成功后会如下显示: