总结自己和同事遇到的各种问题,mark之
autowarefoundation成立后,release 不在继续github上发布,而是和亲密伙伴ros走得更近,发布在discourse.ros.org,如
https://discourse.ros.org/t/autoware-1-12-released/9817
https://discourse.ros.org/t/autoware-ai-1-13-released/11785
下个版本1.14据悉仍然使用ros1,autoware 2.0也许会转到ros2
1. autoware国内秒下的mirror仓库,有更新会在15分钟内同步过来 :)
https://gitee.com/autowarefoundation/repo
2. auoware从1.12版本开始使用了vcs 进行代码管理,colcon进行代码编译
colcon 是ROS编译工具的新一代产品
http://colcon.readthedocs.io/en/latest/index.html
build目录是存储中间文件的位置。对于每个包,将创建一个子文件夹,例如调用CMake。
install目录是每个软件包的安装目录。默认情况下,每个包都将安装到单独的子目录中。
log目录包含有关每个colcon调用的各种日志记录信息。
和catkin比,devel目录已经被替换为install 目录
3. catkin colcon 黑名单编译差异举例:
catkin_make -DCATKIN_BLACKLIST_PACKAGES="qpoases_vendor;mpc_follower;autoreg_msgs;front_detect;model_helper""
colcon build --packages-ignore autoreg_msgs front_detect model_helper
colcon经常编译不报错,但是实际上出错的日志没打印,我们需要打开对应编译开关
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON
4. 基本参照官方说明编译都不会有错,有错的话大多和版本安装的冲突有关,如需要cmake 版本>3.5.1
同事遇到pcl编译报错
step1,查看各种系统版本,pcl版本
step2, 查看build/*/link.txt,查看具体的so使用的链接位置对应版本号
定位出查找的版本太高,一些方法在更高版本不被支持
5. 同事colcon build 遇到的错误,比较有共性:
pkg_resources.DistributionNotFound: The 'catkin-pkg' distribution was not found and is required by the application.....
原因是找不到安装的包,使用apt reinstall 也不行. 解决方法,使用pip3重新安装一下catkin-pkg.
sudo apt install python3-pip
sudo pip3 install catkin-pkg
6.同事编译问题:
autoware 中机器学习相关的模块lidar_point_pillars,没有编译出对应的包,但是colcon编译也不报错.单编模块发现CUDNN, TensorRT没有安装,导致模块没有编译成功
这也是colcon一个诟病,提示错误信息很不明显甚至没有
7. 引申出 find_package 的流程解析
Autoware Docker目录给了docker file,具体仓库都存放在https://hub.docker.com/u/autoware
,可以根据需要下载,除了下载慢一些之外,还是很方便的,不需要为配置环境而烦神.
但是nvidia的docker需要注意,需要和本机匹配才能正常在docker中使用rviz rviz2等工具,如我的机器安装了nvidia的384,对应需要cuda的版本的docker: autoware/autoware:latest-melodic-cuda,否则会提示
[ERROR] [1584671030.209413606]: Unable to create the rendering window after 100 tries.
[ INFO] [1584671030.209432039]: Stereo is NOT SUPPORTED
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_M_construct null not valid
Aborted (core dumped)
另外,16.04上要求cuda版本<10
总结一下经常出现的问题
1. 使用rosbag播放的时候:
rosparm set /use_sim_time true 这步在runtimemanager中被集成了,如果跳过runtimemanager,自己需要手动设置
rosbag play 参数需要 --clock
2.NDT定位的时候
只有定位才会pub /ndt_stat,显示exec time
多块设备之间需要同步时间,否则TF会有问题
3.引申出TF 解析