ros 阅读记录 1

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  

http://wiki.ros.org/catkin 

https://github.com/ros/catkin 

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
View Code

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
原文地址:https://www.cnblogs.com/shepherd2015/p/12603986.html