2020-03-31 11:29:00
想看cartographer 的源码,但是发现如果我想做一些改变然后重复测试,没有rosbag是不行的。
carto和ros耦合在一起了。
(过了几天之后我发现了下面的东西:
https://github.com/cartographer-project/cartographer/issues/1229
可以脱离ros运行 carto, rosbag 依赖了 roslz4 依赖了 lz4 ,然后这家伙就把这部分
单独拿出来了,牛皮 )
于是想看ros源码,从头看起,发现最好先看看 catkin,想看到 catkin_pkg 之类的宏的定义,搞清构建过程等。
读源码是一项巨大的工作,只能挑着读一些有趣的部分了。
Catkin is a collection of cmake macros and associated python code used to build some parts of ROS
https://www.cnblogs.com/shepherd2015/p/11257356.html 自己写的 ros源码安装
http://wiki.ros.org/catkin/conceptual_overview
doc:
http://docs.ros.org/kinetic/api/catkin/html/
可以自己进上级目录查看相关文档
代码里引用了
https://github.com/ros-infrastructure/catkin_pkg
http://docs.ros.org/independent/api/catkin_pkg/catkin_pkg.html#
2020-04-01 10:37:12
一定要建一个 python 的虚拟环境,不然的话 会和系统自带的 python环境、以及已经装好的 catkin 弄混
2020-04-01 14:04:39
下面开始分析 ros 中的依赖顺序
只关心 c++ 接口的功能, 只关心 跟 opencv、pcl、imu 相关的部分
不关心 rviz、rqt 等, roslaunch我也不想要,直接命令行启动
只关心和slam相关的最小需要的组件
会包含ros最基本的设施,不然的话怎么搞slam
2020-04-06 13:57
自己编译了一个魔改版的ros,已经可以成功跑起来 roscore
然后简单的 topic_demo 也能跑
roslaunch还是不能省的,因为roscore在roslaunch包里面
底层是 xmlrpcpp、paramiko 之类的东西
下面是大致要编译的包:
1 -- ~~ traversing 30 packages in topological order: 2 -- ~~ - genmsg 3 -- ~~ - gencpp 4 -- ~~ - genpy 5 -- ~~ - beginner_tutorials 6 -- ~~ - cmake_modules 7 -- ~~ - cpp_common 8 -- ~~ - message_generation 9 -- ~~ - message_runtime 10 -- ~~ - rosbuild 11 -- ~~ - rosclean 12 -- ~~ - roscpp_core (metapackage) 13 -- ~~ - roscpp_traits 14 -- ~~ - rosgraph 15 -- ~~ - roslang 16 -- ~~ - rosmake 17 -- ~~ - rosmaster 18 -- ~~ - rospack 19 -- ~~ - roslib 20 -- ~~ - rosparam 21 -- ~~ - rostime 22 -- ~~ - roscpp_serialization 23 -- ~~ - roslaunch 24 -- ~~ - rosunit 25 -- ~~ - rosconsole 26 -- ~~ - std_msgs 27 -- ~~ - rosgraph_msgs 28 -- ~~ - xmlrpcpp 29 -- ~~ - roscpp 30 -- ~~ - rosout 31 -- ~~ - topic_demo
ros不同的进程间通信似乎有两种方式:
一是 走网络远程调用,序列化的方式
二是 nodelet、bond_core这种方式
我说ros的源码怎么这么大,扔了个opencv3进去两百多兆。
2020-05.09-13:55
1 hpyg@hpygComputer:~$ env | grep ROS 2 ROS_ETC_DIR=/opt/ros/melodic/etc/ros 3 ROS_ROOT=/opt/ros/melodic/share/ros 4 ROS_MASTER_URI=http://localhost:11311 5 ROS_VERSION=1 6 ROS_PYTHON_VERSION=2 7 ROS_PACKAGE_PATH=/home/hpyg/catkin_ws/src:/opt/ros/melodic/share 8 ROSLISP_PACKAGE_DIRECTORIES=/home/hpyg/catkin_ws/devel/share/common-lisp 9 ROS_DISTRO=melodic 10 11 hpyg@hpygComputer:~$ env | grep ros 12 LD_LIBRARY_PATH=/home/hpyg/catkin_ws/devel/lib:/opt/ros/melodic/lib:/usr/local/cuda-10.0/lib64 13 ROS_ETC_DIR=/opt/ros/melodic/etc/ros 14 CMAKE_PREFIX_PATH=/home/hpyg/catkin_ws/devel:/opt/ros/melodic 15 ROS_ROOT=/opt/ros/melodic/share/ros 16 PYTHONPATH=/home/hpyg/catkin_ws/devel/lib/python2.7/dist-packages:/opt/ros/melodic/lib/python2.7/dist-packages 17 ROS_PACKAGE_PATH=/home/hpyg/catkin_ws/src:/opt/ros/melodic/share 18 PATH=/opt/ros/melodic/bin:/home/hpyg/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/cuda/bin 19 PKG_CONFIG_PATH=/home/hpyg/catkin_ws/devel/lib/pkgconfig:/opt/ros/melodic/lib/pkgconfig