【磕盐随记】对两种机器人ROS代码结构的思考与总结

本帖看似短小,但是凝结了我这一个月的全部心得体会,日后打算专门出一期视频专门说说ros机器人的代码结构和类设计,今天先在这里简单记录一下

到目前我接触过两种架构,根据多节点式和单节点式(自己发明的名字)。根据功能分多个节点的好处显而易见:结构清晰、便于监听检测数据、简单易懂。然而,它也有其弊端:

  • 首先就是太麻烦,想用个什么东西都得转化成msg,通过话题来传递;
  • 然后就是内存占用和维护效率问题,如果是小数据还好,就怕那种大数据且高频的更新的,例如在线维护的map,而且需要单独开辟一份空间存储那些收听的数据,内存成本极大;当然,现在也有nodelet可以帮助我们提高数据传输的效率,但这无疑提高了写程序的门槛,到现在我也没用过这个功能。。。
  • 最后就是多个节点之间的启动顺序难以控制,启动也麻烦,多个节点我之前都是写个roslaunch 挨个启动的,然后给每个节点设置sleep时间或者triger来大致控制他们的启动时机。。。。

基于这三点,我现在写代码基本不会写一堆节点,然后用roslaunch挨个启动了,相比起来,单节点式的布局则干净清爽!我可以定义多个class来分管功能;设置合适的class嵌套和变量权限来管理内存;将默认构造置空自定义init来实现每个class功能的自定义初始化并把控做他们的时机;共享ros句柄既可以让我利用到ros的参数服务器、话题机制,又不用内部传参;另外我可以借助make_shared将自己定义的数据结构(class, struct等)typedef为Ptr(智能指针),从而可以放心使用他们而不用担心内存泄漏问题。

我爱C++!真的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值