万恶的ardent版本
0. 内容介绍
因为要转到ros2 上,又不想用bridge 和ros1 共存,所以只能去改代码了
本人菜,加上这个ardent 版本实在是有点老了,好多东西都没有,有点缺,可能是搞搞就去搞新版本了
1.前期准备
- ros2 安装,这个参考ubuntu16.04 安装ros2.0 并测试talker listener
- ide 工欲善其事,必先利其器,受尽了折磨,决定用个CLION这个ide,因为用pycharm顺手了,下面会讲一点配置,好人码
- 官方指导地址 https://index.ros.org/doc/ros2/
- 官方rclcpp api官网 http://docs.ros2.org/ardent/api/rclcpp/
- 官方rclpy api 官网 http://docs.ros2.org/latest/api/rclpy/index.html
- ament cmake 官网 https://index.ros.org/doc/ros2/Tutorials/Ament-CMake-Documentation/
- 查包指南 https://index.ros.org/p/vision_msgs/#ardent
- ros2 的demo https://github.com/ros2/demos.git 用那个版本,切到哪个分支就行
- https://github.com/ros2/examples
- https://github.com/ros2/example_interfaces
2. 安装 ,配置, 使用CLION
2.1 安装
下载地址:https://download.jetbrains.8686c.com/cpp/CLion-2019.3.4.tar.gz
下载完了,解压到bin路径下 执行 ./clion.sh
active by code
打开自己的workspace
这个样子,很熟悉
2.2配置
用ide 主要就写的快,编译的方便,还给错误提示,有自动补全,不用费脑子,啊哈哈啊哈
打开 file -》setting -》build -》 toolchains
照着这个配置就行
cmake 配置
这个是debug的配置,生成一个新的文件下放debug ,可以debug的
可以再加个release,配置的时候要自己设置下,最好不要设置到已经存在的路径下,有点乱。。。
2.3 使用
点击小锤子,就开始编译了,也能运行
debug 使用 这个变量检测,断点,开心不
文件的和头文件的查找主要靠cmakelists来搞,所以还是要学习下3.5的cmake
不会就百度
3.迁移代码
主要是从catkin 转到 ament cmakelist 有变化
具体的到我的github 上看,可以下载html 查看更清晰https://github.com/jinmenglei/aoa_ros
我下面放对比文件,cmakelist 和 pakage的
头文件
源文件
4.处理各种问题
4.1 依赖问题
安装在 PATH包含的路径下的包,缺啥装啥就行
我本地环境
/home/utry/catkin_ws/install/bin:/opt/ros/ardent/bin:/home/utry/bin:/home/utry/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
需要用到ros的包的话,舍不得改的话,需要在cmakelist 里增加依赖 和头文件路径,不然编译的时候找不到
4.2 运行问题
使用ros1的库的话,需要把ros1的so cp到 aedent的路径下
比如我们使用的serial包
sudo cp /opt/ros/kinetic/lib/libserial.so /opt/ros/ardent/lib/
可以解决运行问题
或者 改环境变量LD_LIBRARY_PATH
我自己的
/home/utry/catkin_ws/install/lib:/opt/ros/ardent/opt/rviz_yaml_cpp_vendor/lib:/opt/ros/ardent/opt/rviz_ogre_vendor/lib:/opt/ros/ardent/opt/rviz_assimp_vendor/lib:/opt/ros/ardent/lib/x86_64-linux-gnu:/usr/lib:/opt/ros/ardent/lib
不复制,执行
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/ros/kinetic/lib
或者加到 .bashrc
里面也行
方法很多,自己选择个方便的
4.3 package 和cmakelist 的语法
参考最前面的各种文档和demos 加油
5.日志格式设置
参考这个地方:https://index.ros.org/doc/ros2/Concepts/Logging/#logging-console-output-configuration
export RCUTILS_CONSOLE_OUTPUT_FORMAT="[{severity} {time}] [{name}]: {message} ({function_name}() at {file_name}:{line_number})"
这个time 这个参数在ardent 里面不支持,我以为写错了参数,看了下ardent的logging的源码,果然灭有!!
logging 的源码在这https://github.com/ros2/rcutils/blob/ardent/src/logging.c
总共只有一个time
默认格式是这个
看看dashing分支,有时间戳输出去
实操:
6 结束
16.04 太老了,转18.04了