欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ROS之自动驾驶相关模块安装

程序员文章站 2022-07-12 10:06:32
...

(此文章为自动驾驶软件环境安装备份,便于查找记录!)
安装流程:

依赖环境安装

  • 1 ROS安装
  • 2 OpenCV安装
  • 3 Qt安装
  • 4 编译bug解决方法

1 ROS安装

安装的是kinetic(Ubuntu16.04),可以参考官方教程
网上也有不错的中文安装版,比官网讲的更详细一点——ROS不能再详细的安装教程

1.1. 安装grid_map,sudo apt-get install ros-kinetic-grid-map
1.2. 安装catkin build: sudo apt-get install python-catkin-tools

1.3. install boost 1.58.0

sudo ./bootstrap.sh
sudo ./b2 install
#卸载
cd /usr/local/inlcude
sudo rm -r boost/
cd /usr/local/lib
sudo rm *boost*

1.4. install dlib

wget http://dlib.net/files/dlib-19.6.tar.bz2
tar xvf dlib-19.6.tar.bz2
cd dlib-19.6/
mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=ON ..
cmake --build . --config Release
sudo make install
sudo ldconfig
cd ..

2 OpenCV安装

我安装的是OpenCV3.4版本,Ubuntu中OpenCV的安装教程很多,推荐直接下载源码编译安装,一般都没啥问题。

  • 下载源码, OpenCV源码,解压源码后,在解压后的目录中创建build文件夹并进去:
    mkdir build
    cd build

  • 安装依赖包

    apt-get install build-essential
    sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
    sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
    
  • 编译安装

    cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
    sudo make
    sudo make install
    
  • 环境配置

    sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
    sudo ldconfig
    
    

3 Qt的安装

Qt的安装比较简单,AutoWare要求Qt5.2以上,我安装的Qt5.10。
直接去官网下载你想使用的版本,下载页面
下载完成后,进入下载目录,先更改权限:
sudo chmod a+x qt-opensource-linux-x64-5.10.0.run
然后直接运行安装:
./qt-opensource-linux-x64-5.10.0.run
照着弹出的界面安装就好。

发现网上的方法还需要去单独配置Qt的环境变量,我在使用过程中发现直接照着界面安装完成后可以直接使用。


至此,已经完成了OpenCV和Qt的安装,可以用Qt建立一个新的使用OpenCV的C++小demo测试一下是否真的可以使用。
记得,在新建工程的.pro文件中配置OpenCV:

INCLUDEPATH += /usr/local/include \
               /usr/local/include/opencv \
               /usr/local/include/opencv2
 
LIBS += /usr/local/lib/libopencv_*.so 

4 编译bug解决方法

  1. /usr/lib/aarch64-linux-gnu/libGL.so: undefined reference to `drmCloseOnce’
cd /usr/lib/aarch64-linux-gnu
sudo rm libEGL.so
sudo ln -s /usr/lib/aarch64-linux-gnu/tegra-egl/libEGL.so libEGL.so
 
sudo rm libGL.so
sudo ln -s /usr/lib/aarch64-linux-gnu/tegra/libGL.so libGL.so

参考:https://blog.csdn.net/zhenguo26/article/details/82756063

  1. undefined reference to dgesvd_

原因:dlib库的问题

解决:

project(hello)
cmake_minimum_required(VERSION 2.8)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(dlib REQUIRED)
include_directories(${dlib_INCLUDE_DIRS})

aux_source_directory(. SRC_LIST)
add_executable(${PROJECT_NAME} ${SRC_LIST})
target_link_libraries(${PROJECT_NAME} ${dlib_LIBRARIES})

静态库编译:

project(hello)
cmake_minimum_required(VERSION 2.8)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

aux_source_directory(. SRC_LIST)
add_executable(${PROJECT_NAME} ${SRC_LIST})
target_link_libraries(${PROJECT_NAME} libdlib.a X11 pthread)

参考:https://blog.csdn.net/qq_29573053/article/details/77773012

ros多机通讯

  1. 主机:启动master节点
  2. 从机:点击网络连接按钮(右上角)-> Edit Connections -> add -> IPv4 setting
    把地址改为主机的网段,比如主机地址为192.168.2.12,则把从机ip设置为192.168.2.XX,mask设置为24,gateway设置为192.168.2.1
  3. 这个时候应该可以ping通主机了。ping 192.168.2.12
  4. ROS如果想要进行通信,则需要在修改 export ROS_MASTER_URI=“http://192.168.2.12:11311”,可以将其写入.bashrc中
  5. 但是这个应该仍然无法收到数据,在终端键入rostopic info /minibus/points_concatenated
  6. 主机: export ROS_IP=192.168.2.12,可以将其写入.bashrc
  7. 从机: export ROS_IP=192.168.2.20, 可以将其写入.bashrc
  8. 这个时候应该就可以收到消息了

参考:https://www.jianshu.com/p/69815d79d37f

相关标签: ROS学习笔记