robotique-ecam / cdfr Goto Github PK
View Code? Open in Web Editor NEWROS 2 repository for CDFR 2022
Home Page: https://github.com/robotique-ecam/cdfr/wiki
License: GNU General Public License v3.0
ROS 2 repository for CDFR 2022
Home Page: https://github.com/robotique-ecam/cdfr/wiki
License: GNU General Public License v3.0
Rendre possible la sélection de coté du robot
Il est possible de définir un callback sur une rclcpp::Node
/rclpy.node.Node
lors de la reception d'un rcp_interface::msg::ParameterEvent
, émis lors d'un événement sur un/plusieurs paramètre de la node. Voir exemple
Features Hyperion, à contribuer
By using canTransform(...)
i was hoping for something like a "wait for transform" behavior.
It did the trick, but while checking for the transform it spams a lot of warning messages like Warning: Invalid frame ID "odom" passed to canTransform argument target_frame - frame does not exist
in the log.
I haven't found anything that will simply prevent this warning from appearing. So in order to avoid this garbage to appear, i decided to disable the log of drive node.
As discussed with @3wnbr1 in #31, this move is too rough, we need to work around to achieve a smoother solution and keep the log of drive.
@3wnbr1 comes with:
See example below to catch exceptions
https://github.com/ros2/geometry2/blob/ros2/tf2_ros/src/tf2_echo.cpp
When compiling with colcon build --cmake-args " -DSIMULATION=ON -DTIMER=ON"
, odometer doesn't update in realtime
This causes all NavigateToPose
actions to be treated as SUCCESS
and therefore, failed goals are never dropped by the robot
Could be nice to create a function is_simulation
or even is_this_reality
dans un package et l'utiliser partout pour detecter la simu. ARM64 will become more common in the future and this limits code duplication
Originally posted by @3wnbr1 in #31 (comment)
According to this article and by looking at what's going on in lifecycle_manager, at startup of titan node, map_server stays in an unconfigured state when bringing up the nav.
There is two map_server, one in the asterix namespace and another one in obelix.
Some cool tools might be useful to transition map_server to its active state in nav2_util package especially this function in lifecycle_utils.
#39 reverted a mitigation against this race condition
The ideal design would be prevent cetautomatix initialization completion as long as an odom message hasn't been received. We can't block the constructor's completion as this would result onto the odom callback handler not being called. We could instead use a boolean semaphore within the node to let know each subroutine if the node is ready and early return if it is not / report as not not ready yet.
Short term mitigation was to position with dummy values but this is impractical and can cause side effects.
Each package needs to be documented on the WIKI (Github Menubar).
Edit the ROS markdown and add a description of your package and how to use it.
DOC en Français les amis 😉
Les custom_behaviors
de cetautomatix utilisent time.time()
au lieu de robot.get_clock().now()
. Du fait de la simulation, cetautomatix tourne en temps réel au lieu du temps simu ce qui donne des durées de matchs fausses. Il faudrait remplacer tout les time.*
par get_clock().now()
dans tout les packages.
Le contrôleur DWB présent dans la navigation de base ne réponds pas aux exigences de performance.
20Hz
. Le pas d'integration n'est alors pas suffisant pour l'odomètrie ce qui augmente l'erreur. Le nouveau contrôleur devra tourner à 200Hz
minimum.1 cm
, l'erreur minimale du contrôleur DWB est 25 cm
, il n'est de plus pas adapté aux robots non-holonomiques, ne favorisant pas les rotations sur lui même.nav_msgs::msg::Path
qui n'est pas une liste de geometry_msgs::msg::Point
mais de geometry_msgs::msg::Pose
contenant également une orientation interpretable par le contrôleur.Il est donc entreprit de développer 2 plugins de navigation
Le Planner à partir de nav2_core::GlobalPlanner
et sur base de https://navigation.ros.org/tutorials/docs/writing_new_nav2planner_plugin.html
Le planneur pourra combiner déplacements linéaires, rotations et courbes de bezier en fonction de la situation. Un planeur plus complexe tel que contenus dans OMPL n'est pas nécessaire pour l'instant mais pourrais à fortiori remplacer les courbes de bezier sur la trajectoire intermédiaire
Le contrôleur à partir de DWB
et TEB
qui sont les 2 seuls contrôleurs supporté par navigation2.
Design en cours...
See this run
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.