dceu
BehaviorTree.CPP
dceu | BehaviorTree.CPP | |
---|---|---|
3 | 4 | |
23 | 2,748 | |
- | 4.5% | |
9.9 | 9.3 | |
1 day ago | 9 days ago | |
Kotlin | C++ | |
- | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
dceu
-
Coroutines make robot code easy for high schoolers
The reactivity and intuitive single-threaded concurrency makes it a really nice language for low-powered devices. Or robotics, which is a lot about reacting to sensor input.
It has a dedicated Arduino repo too[1].
In practice it's more of a research language by Francisco Sant’Anna, a professor at UERJ, Brazil, than a language with a big community around it. He's currently working on a new version caleld Dynamic Ceu, or dceu[2]
In the same paradigm there is the Blech[3] language, I believe originating from Bosch. Sadly, that project also has lost some steam.
[0] https://github.com/ceu-lang/ceu-arduino
[1] http://ceu-lang.org/
[2] https://github.com/fsantanna/dceu
[3] https://github.com/blech-lang/blech
- Ceu = Structured Concurrency + Event-Driven Programming
- Show HN: Ceu = Structured Concurrency and Event-Driven Programming
BehaviorTree.CPP
- Coroutines make robot code easy for high schoolers
-
ROS2 task/schedule/statemachine discussion
Have a look at Behavior Trees, especially the BehaviorTreeCpp library https://www.behaviortree.dev The method is simple to understand, scales better than State Machines and if you implement the actions well they’re inherently modular. Nav2 uses them, and also BostonDynamics in their Spot SDK.
-
Facts about State Machines
Unrelated to javascript, but in the robotics industry there is a trend towards Behaviour Trees. https://www.behaviortree.dev/ is a C++ library that was originally designed for controlling robots via ROS, but it appears to be decoupled from the ROS ecosystem so it could be used for other projects.
There is a basic UI available for editing the tree https://github.com/BehaviorTree/Groot
- BehaviorTree.CPP: C++ behavior tree library, batteries included
What are some alternatives?
blech - Blech is a language for developing reactive, real-time critical embedded software.
ros2_control_demos - This repository aims at providing examples to illustrate ros2_control and ros2_controllers
quaint-lang - An experimental statically typed procedural language with first-class resumable functions.
navigation - ROS Navigation stack. Code for finding where the robot is and how it can get somewhere else.
2023RobotCode
ardupilot - ArduPlane, ArduCopter, ArduRover, ArduSub source
pros - Source code for PROS kernel: open source C/C++ development for the VEX V5 microcontroller
carla - Open-source simulator for autonomous driving research.
preemptible-thread - How to preempt threads in user space
linorobot - Autonomous ground robots (2WD, 4WD, Ackermann Steering, Mecanum Drive)
ceu-arduino - Arduino binding for Céu