Home

CPP解析YAML

Node Node 是 yaml-cpp 的核心概念,是最重要的数据结构,用于存储解析后的yaml信息 在源码中通过 Nodetype 定义了 Node的可能类型 namespace YAML { struct NodeType { enum value {Undifined, Null, Scalar, Sequence, Map}; }; } 可以通过 Type() 方法获取其类型 YAML::Node test1 = YAML::Load("[1,2,3,4]"); std::cout << "Type: " << test1.Type() << std::endl; // 3 意味着 Sequence YAML:...

Read more

源码编译安装yaml-cpp

源码编译安装yaml-cpp $ git clone https://github.com/jbeder/yaml-cpp.git $ cd yaml-cpp $ mkdir build && cd build $ cmake .. && make -j # 默认安装到 /usr/bin /usr/include $ sudo make install

Read more

Rviz远程显示

Rviz在本地显示远程的topic 确定主/从机ip、用户名、主机名 主机:ros机器人 从机:本地的电脑 # 主机ip $ ifconfig # 用户名 $ whoami # 主机名 $ hostname 修改bashrc $ vim ~/.bashrc # 在最后面加入如下两行 export ROS_MASTER_URI=http://<主机ip>:11311 export ROS_HOSTNAME=<从机ip> # 至于端口号为什么是11311,可以自行在主机运行 roscore 命令 # 可以看到输出包含 ROS_MASTER_URI=http://<ip>:<port> 字眼 # 因此可以自行在主机中定义此环境变量...

Read more

ROS读取YAML文件

让ROS知道此yaml的存在 用例使用此yaml文件 # 文件名为 test.yaml max_points: 70000 attr_num: 4 benewake: point_cloud_range: [0, -46.08, -1, 92.16, 46.08, 4.6] tanway: point_clod_range: [-46.08, 0, -1, 46.08, 92.16, 4.6] LIDAR: fov_up: 3.0 fov_down: -25.0 bev_map: voxel_size: [0.16, 0.16, 5.6] grid_size: [576, 576, 1] range_map: proj_H: 96 proj_W: ...

Read more

ROS点云和PCL点云转换

ROS点云<=>PCL点云 PCL第一代点云:sensor_msgs::PointCloud2 <=> pcl::PointCloud<T> 头文件: #include <pcl_ros/point_cloud.h> #include <sensor_msgs/PointCloud2.h> #include <pcl_ros/transforms.h> 原型: void pcl::fromROSMsg(const sensor_msgs::Pointcloud2 &, pcl::PointCloud<T> &); void pcl::toROSMsg(const pcl::...

Read more

ROS轮询机制

消息队列 发送消息过快时,来不及处理,回调函数会存放在消息队列当中 单话题 显而易见,只存在一个消息队列 多话题 默认情况下,所有的回调函数共享同一个全局消息队列 By default, all callbacks get assigned into that global queue, which is then processed by ros::spin() or one of the alternatives. ros::spin() 不断的轮询回调函数队列,有就立马处理,没有就阻塞 ros::spinOnce() 每执行一次就执行回调函数队列中所有的消息队列,然后继续向下执行,不阻塞 参考资料 ros::spin、ros::spi...

Read more

kitti2rosbag

kitti 数据转 rosbag 由于需要验证笔者写的 3D 点云数据转 range image 是否成功,由于项目组已经写好了 rosmsg 到 pcd 的内容。因此想将 kitti 的数据录成一个 bag 包,发布出去,然后在项目的代码里添加转 range image 模块,可以直接将项目已经转好的 pcd 作为 range image 模块的输入。 |——————–| |———— | |————–| velodyne/XXX.bin ——–> rosbag ——–> Ptr –> pcd ——–> range image ...

Read more

ROS自定义消息结构

定义消息结构和使用 定义消息结构 在功能包中新建 msg 目录,里面创建 后缀名为 .msg 的文件 使用之前写下这篇文档时创建的功能包 learing_topic $ cd <work_space>/src/learning_topic $ mkdir msg && cd msg $ touch Person.msg $ vim Person.msg # 写入如下内容 string name uint8 sex uint8 age uint8 unknown = 0 uint8 male = 1 uint8 female = 2 ‼️!!! update package.xml <!-- 新增编译依赖 --> <build...

Read more

使用gdb调试ROS项目

如何使用gdb 见文档 roslaunch 使用roslaunch命令运行功能包时,如何使用gdb调试? 在launch文件中的node标签添加一句话 launch-prefix="xterm -e gdb -ex run --args " 修改完后效果如下 <node pkg="waypoint_follower" type="pure_persuit" name="pure_pursuit" output="screen" launch-prefix="xterm -e gdb -ex run --args"> ……… </node> 注意这个时候会重新打开一个shell窗口来执行被调试的程序,因此如果使用远程ssh到开发板上进行开发...

Read more