因为要转到ros2 上,又不想用bridge 和ros1 共存,所以只能去改代码了
本人菜,加上这个ardent 版本实在是有点老了,好多东西都没有,有点缺,可能是搞搞就去搞新版本了
下载地址:https://download.jetbrains.8686c.com/cpp/CLion-2019.3.4.tar.gz
下载完了,解压到bin路径下 执行 ./clion.sh
active by code
打开自己的workspace
这个样子,很熟悉
用ide 主要就写的快,编译的方便,还给错误提示,有自动补全,不用费脑子,啊哈哈啊哈
打开 file -》setting -》build -》 toolchains
照着这个配置就行
cmake 配置
这个是debug的配置,生成一个新的文件下放debug ,可以debug的
可以再加个release,配置的时候要自己设置下,最好不要设置到已经存在的路径下,有点乱。。。
点击小锤子,就开始编译了,也能运行
debug 使用 这个变量检测,断点,开心不
文件的和头文件的查找主要靠cmakelists来搞,所以还是要学习下3.5的cmake
不会就百度
主要是从catkin 转到 ament cmakelist 有变化
具体的到我的github 上看,可以下载html 查看更清晰https://github.com/jinmenglei/aoa_ros
我下面放对比文件,cmakelist 和 pakage的
头文件
源文件
安装在 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 里增加依赖 和头文件路径,不然编译的时候找不到
使用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
里面也行
方法很多,自己选择个方便的
参考最前面的各种文档和demos 加油
参考这个地方: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分支,有时间戳输出去
实操:
16.04 太老了,转18.04了