ros1 代码 切换至 ros2.0 ardent版本
万恶的ardent版本
- 0. 内容介绍
- 1.前期准备
- 2. 安装 ,配置, 使用CLION
- 2.1 安装
- 2.2配置
- 2.3 使用
- 3.迁移代码
- 4.处理各种问题
- 4.1 依赖问题
- 4.2 运行问题
- 4.3 package 和cmakelist 的语法
- 5.日志格式设置
- 6 结束
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了
ros1 代码 切换至 ros2.0 ardent版本相关推荐
- Android Gallery画廊 兼容4.0以上版本
最近在做Gallery画廊效果时,搜索大量资料,发现很多博主都是2012年写的文章.对于现在的sdk版本,发现拿过来都没有用,效果变形: 非常遗憾,中间的图变形了,或者说没有把转角恢复. 查阅了大量资 ...
- 看这一篇就够了!ROS2入门学习:安装、测试、多机通信以及与ROS1的切换、通信
ROS2入门学习:安装.测试.多机通信以及与ros1的切换.通信 为什么要写这篇blog 1 ROS2优势 2 安装ROS2 Ardent 版本 2.1 UTF-8支持 2.2 安装依赖 2.3 密钥 ...
- CSLA.Net 3.0.5 版本 教学程序,代码附教学注释
离开原来的公司后,就没有用过CSLA,这几天整理文档,发现了当时我给同事做培训时候的代码,代码中附有注释,附加数据库即可运行.是学习CSLA的好工具. 现在已经是3.8了,没有研究过,3.0.5这个版 ...
- 基于mysql 模版代码生成器 快速DIY你的代码 2.0稳定版本发布
在许多工程中甚至拿hashmap作为入参请求,信不信我上去给你个大嘴巴子, 好的工程就是有统一的结构,有标准的模版,但是无奈每个工程师都有自己的习惯,有了这款神器,相信团队的代码质量绝对会有质的提升 ...
- 直播 | RT-Thread 4.0.4 版本代码 Release啦!一起来参与新特性解读会吧~
时光如梭,离RT-Thread 4.0.3 版本的发布已有一段时间了. 今天,我们RT-Thread 4.0.4 版本代码终于Release啦! 细数这一年的变化,真的很多! 内核方面,我们对 IPC ...
- ROS和ROS2.0到底该用哪个呢?
很多朋友经常问ROS1.0(下文简称ROS)和ROS2.0我到底该学习/使用哪个呢? 欢迎拍砖讨论,但若是因此对您的项目或产品造成了损失,本人不负任何责任! 我先给出个人的观点,再说明其中原因. 对于 ...
- 开源企业级数字化服务平台——Choerodon猪齿鱼发布0.8版本
Choerodon猪齿鱼是一个开源企业服务平台,是基于Kubernetes的容器编排和管理能力,整合DevOps工具链.微服务和移动应用框架,来帮助企业实现敏捷化的应用交付和自动化的运营管理的开源平台 ...
- 时速云发布微服务产品 TMF V5.6.0 全新版本,支持独立部署,简化企业微服务架构
互联网应用海量用户.快速迭代.不间断服务以及流量突增等业务特征促进技术架构由传统集中式向分布式和微服务架构逐步演进. 考虑到越来越多企业将微服务搬到云上,由于框架异构导致微服务治理成本指数级增加.多云 ...
- Android5.0-10.0各版本行为变更
Android Q 行为变更 非 SDK 接口限制 为了帮助确保应用稳定性和兼容性,Android 平台开始限制您的应用可在 Android 9(API 级别 28)中使用哪些非 SDK 接口.And ...
最新文章
- 高情商女神是怎样炼成的?直播EMUI9.0制胜法宝“陪伴实测”
- “低代码”开发管理应用,这家大型连锁企业也说好
- 学习STM32很简单?
- 基于E18-2G4U04B的ZigBee3.0无线数据抓包安装方法
- Javascript获取类名方法
- cmder 基本配置和使用
- 《Java并发编程实战》第十章 避免活跃性危急 读书笔记
- 初始jquery事件-动态添加的新元素没有绑定上旧元素的事件
- 新手降NAT网络第十步曲,小编提供思路。
- 大电流dcdc降压芯片20a_基于MC34063芯片DC-DC(20-5)降压型变换电路
- laas和saas_什么是IaaS,PaaS和SaaS及其区别
- python计算单词长度_python – 返回字符串中的单词长度
- 人工智能--启发性信息和估价函数
- Android 腾讯优图开发问题总结
- python下载图片插入excel_Python向Excel中插入图片的简单实现方法
- PPP协议和PPPoE协议
- 函数内部的this指向/call()方法
- 华南理工网络教育计算机平时作业,2018华南理工大学网络教育计算机应用基础平时作业...
- 物联网与大数据(四)大数据技术 物联网操作系统
- SAP 创建可选BOM的配置