PageSourceSearch

https://behaviortree.dev/assets/js/45e2065a.0c5d14f8.js

js behaviortree.dev collected 2026-10-03 22:08:29 UTC 7,156 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkbehaviortree_docusaurus=globalThis.webpackChunkbehaviortree_docusaurus||[]).push([[3507],{2675(e,t,n){n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>r,metadata:()=>i,toc:()=>h});var i=n(4523),s=n(4848),o=n(8453);const r={slug:"BT.CPP in robotics",title:"The increasing adoption of BT.CPP in robotics",authors:["davide"],tags:["updates"],hide_table_of_contents:!0},a=void 0,l={authorsImageUrls:[void 0]},h=[{value:"Adoption in recent years,",id:"adoption-in-recent-years",level:2},{value:"Documentation is a super power",id:"documentation-is-a-super-power",level:2}];function c(e){const t={a:"a",blockquote:"blockquote",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["Sometimes people ask me if, when I started this project 4 years ago,\nI expected ",(0,s.jsx)(t.strong,{children:"BehaviorTree.CPP"}),' to gain so much adoption in the robotic community.\nEven if that is generally meant as a rhetorical question that expects and humble answer,\nI usually answer "yes".']}),"\n",(0,s.jsx)(t.p,{children:"There are a few reasons why I was optimistic about the fact that this\nlibrary might be well received:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"It helps implement a crucial component of a robotic software system,\nTask Planning; this part is often neglected until the end of the project."}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"I spent an unusual amount of time (maybe 30% of my whole development time)\nwriting documentation."}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:['I wanted to build an inclusive project, where people\'s needs and opinions are heard.\nI am the "benevolent dictator" of the project, but I ',(0,s.jsx)(t.strong,{children:"do"})," listen and I ",(0,s.jsx)(t.strong,{children:"do"})," learn from others!"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"adoption-in-recent-years",children:"Adoption in recent years,"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"BT.CPP"})," is gaining traction in robotics, as shown in the image\nbelow (note as the Y-axis is logarithmic):"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"adoption",src:n(9297).A+"",width:"996",height:"632"})}),"\n",(0,s.jsx)(t.p,{children:"This data was obtained from the paper:"}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.a,{href:"https://arxiv.org/abs/2208.04211",children:"Behavior Trees and State Machines in Robotics Applications"})}),"\n",(0,s.jsxs)(t.p,{children:["SMACH is still the strongest contender,\nbut you can also note as ",(0,s.jsx)(t.strong,{children:"BT.CPP"})," and ",(0,s.jsx)(t.strong,{children:"PyTrees"}),"\nhave gained more and more popularity in our community."]}),"\n",(0,s.jsx)(t.p,{children:"If you want to learn more about the\nmethodology used to obtain these numbers,\nplease refer to the publication mentioned above."}),"\n",(0,s.jsx)(t.h2,{id:"documentation-is-a-super-power",children:"Documentation is a super power"}),"\n",(0,s.jsx)(t.p,{children:"You might be familiar with the phrase:"}),"\n",(0,s.jsxs)(t.blockquote,{children:["\n",(0,s.jsxs)(t.p,{children:['"',(0,s.jsx)(t.a,{href:"https://en.wikipedia.org/wiki/If_a_tree_falls_in_a_forest",children:"If a tree falls in a forest"}),'\nand no one is around to hear it, does it make a sound?"']}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"My personal version of it is:"}),"\n",(0,s.jsxs)(t.blockquote,{children:["\n",(0,s.jsx)(t.p,{children:"If an open source software is not used by anyone else but the author, is it still useful?"}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["In both cases, we know that the answer is (or might be) ",(0,s.jsx)(t.strong,{children:'"yes"'}),", but hopefully you see what I mean."]}),"\n",(0,s.jsx)(t.p,{children:'Very often, open source is about "scratching your own itch" and sharing what you did with others. That is fine!'}),"\n",(0,s.jsxs)(t.p,{children:["But in my case, This project was created ",(0,s.jsx)(t.strong,{children:"specifically to help others"}),"; the more it is adopted and used, the more\nI feel that my initial goal has been achieved."]}),"\n",(0,s.jsx)(t.p,{children:"In my career, I have learned that the best way to drive adoption is:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"built something that people need."}),"\n",(0,s.jsx)(t.li,{children:"build trust with your users."}),"\n",(0,s.jsx)(t.li,{children:"lower as much as possible the entry barrier."}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"The latter point is particularly important and it is often underestimated.\nFor me, lowering the entry barrier involved three key steps:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"writing good documentation (this website)."}),"\n",(0,s.jsx)(t.li,{children:"adding tutorials that give the new users a sense of progression."}),"\n",(0,s.jsx)(t.li,{children:"providing a tool that helps people learn visually (Groot)."}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["The documentation of ",(0,s.jsx)(t.strong,{children:"BT.CPP"})," is not perfect, but probably a little above the average,\nconsidering the average open source project: this cost a lot of time, but paid off enormously."]}),"\n",(0,s.jsxs)(t.p,{children:["If you have any suggestions about how to improve this site,\n",(0,s.jsx)(t.a,{href:"https://github.com/BehaviorTree/btcpp_website/issues",children:"let me know"}),"."]})]})}function d(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},9297(e,t,n){n.d(t,{A:()=>i});const i=n.p+"assets/images/adoption-f4a0669cfab3f2129a3186b537f91f59.png"},8453(e,t,n){n.d(t,{R:()=>r,x:()=>a});var i=n(6540);const s={},o=i.createContext(s);function r(e){const t=i.useContext(o);return i.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),i.createElement(o.Provider,{value:t},e.children)}},4523(e){e.exports=JSON.parse('{"permalink":"/blog/BT.CPP in robotics","editUrl":"https://github.com/BehaviorTree/btcpp_website/tree/master/blog/2022-10-09-welcome.md","source":"@site/blog/2022-10-09-welcome.md","title":"The increasing adoption of BT.CPP in robotics","description":"Sometimes people ask me if, when I started this project 4 years ago,","date":"2022-10-09T00:00:00.000Z","tags":[{"inline":true,"label":"updates","permalink":"/blog/tags/updates"}],"readingTime":2.42,"hasTruncateMarker":false,"authors":[{"name":"Davide Faconti","title":"Maintainer of BehaviorTree.CPP","url":"https://github.com/facontidavide","imageURL":"https://avatars.githubusercontent.com/u/2822888","key":"davide","page":null}],"frontMatter":{"slug":"BT.CPP in robotics","title":"The increasing adoption of BT.CPP in robotics","authors":["davide"],"tags":["updates"],"hide_table_of_contents":true},"unlisted":false,"prevItem":{"title":"Beta 4 released","permalink":"/blog/beta4"}}')}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.