Git Product home page Git Product logo

Comments (7)

angstrem98 avatar angstrem98 commented on August 18, 2024 1

Treba smisliti kako obraditi to. Ako se robot krece napred a senzori nazad okinu, onda ne treba da stane, dok pri rotaciji mislim da treba da stane ako bilo koji okine (ali ako se rotira blizu ivice terena mozda detektuje osobe van terena). Mozemo citati trenutnu brzinu robota iz /big/odom pa na osnovu toga zakljuciti mozda.
Ovo je predlog za ovu godinu, tu svakako mislim da moramo reorganizovati stvari za narednu.

from mep3.

lukicdarkoo avatar lukicdarkoo commented on August 18, 2024 1

@angstrem98 To je dobra ideja, samo sto bih ja prije citao Twist, manje suma ima i manje kasni od Odometry.

Treba nam BT uslov koji provjerava da li postoji prepreka:

  • BT bi slusao LaserScan, Range, Twist i TFMessage teme.
    • Svaki od LaserScan i Range ima zaglavlje u kome se nalazi frame_id, pa se pozicija svakog senzora moze odrediti u odnosu na map frejm uz pomoc TFa.
  • Sve prepreke van terena treba da se ignorisu (baciti pogled na #106).
  • Ukoliko se robot okrece (abs(twist.angular.z) > 0) i bilo koji od LaserScan i Range prepozna prepreku onda BT treba da vrati true.
  • Zavisno da li se robot krece naprijed ili nazad (twist.linear.x) i bilo koji od LaserScan i Range prepozna prepreku na odgovarajucoj strani onda BT treba da vrati true.

Zatim, treba napraviti BT podstablo (recimo skill_safe_precise_navigate_to) koje bi koristilo BT uslov:

  • Mislim da PipelineSequence BT cvor moze da inicira PreciseNavigateToAction, a onda u pozadini provjerava neki uslov:
    <PipelineSequence name="NavigateWithReplanning">
    <Fallback>
    <Inverter>
    <GlobalUpdatedGoal />
    </Inverter>
    <ComputePathToPose goal="{goal}" path="{path}" planner_id="GridBased" />
    </Fallback>
    <RecoveryNode number_of_retries="1" name="FollowPath">
    <FollowPath path="{path}" controller_id="FollowPath" />
    <ClearEntireCostmap name="ClearLocalCostmap-Context" service_name="local_costmap/clear_entirely_local_costmap" />
    </RecoveryNode>
    </PipelineSequence>
  • Ukoliko se prepreka ne ukloni za vise od x sekundi podstablo treba pukne.

from mep3.

angstrem98 avatar angstrem98 commented on August 18, 2024

@VladimirVincan Predlog je da se vecina koda ne piše unutar BT. Napisati zaseban cvor koji obradjuje senzore, za lidar slusati temu /big/scan_inflated jer su tu vec uklonjene tacke van terena i neprijateljski roboti su uvecani (ovde postoji neki mali bag da taj cvor puca, ali resicu ubrzo).
U tom cvoru predlazem da se TF transformacije obradjuju u posebnom thread-u, imas ovde primer:

void DistanceAngleRegulator::process_robot_frame()
{
rclcpp::Rate r(200);
while (run_process_frame_thread_) {
std::string to_frame = "map";
std::string from_frame = "base_link";
geometry_msgs::msg::TransformStamped transform_stamped;

Dakle tacke lidara van terena su resene (trenutno sve sto se nalazi na 10 cm ili blize ivici terena se uklanja, zbog tornja npr.), kad se tacka dobijena sa range senzora transformise u map frame onda je izbaciti na slican nacin.

Moj predlog za jednostavnu detekciju prepreka lidarom jeste da gledas tacke ispred i iza robota i prebrojis koliko tacaka je na distanci manjoj od neke konstante safe_distance. Ako imamo ispred robota vise od min_number tacaka na distanci manjoj od safe_distance znaci imamo prepreku ispred.

Na osnovu citanja Twist, sto mozes dobiti sa teme /big/cmd_vel dobijas da li ce doci do kolizije. Ovaj podatak objavljujes na neku temu, moze neka bool ili int poruka. Unutar BT je dovoljno samo prijaviti se na temu i videti da li treba stati ili je bezbedno nastaviti.

from mep3.

lukicdarkoo avatar lukicdarkoo commented on August 18, 2024

Skroz sam zaboravio da /big/scan_inflated ne sadrzi tacke van terena. Ovo pojednostavljuje implementaciju, ne moras da racuns pozicije preko TFa, samo provjeris udaljenosti

from mep3.

angstrem98 avatar angstrem98 commented on August 18, 2024

Skroz sam zaboravio da /big/scan_inflated ne sadrzi tacke van terena. Ovo pojednostavljuje implementaciju, ne moras da racuns pozicije preko TFa, samo provjeris udaljenosti

Za lidar nece morati, ali za range swnzore hoce :(

from mep3.

lukicdarkoo avatar lukicdarkoo commented on August 18, 2024

@angstrem98 Mozes li ubaciti u ROS cvor za filtriranje lidara i filtriranje IR senzora? S obzirom na poziciju IR senzora msm da nam nece trebati inflacija, samo izbacivanje statickih prepreka

from mep3.

lukicdarkoo avatar lukicdarkoo commented on August 18, 2024

Implementirano u #168.

Doduse fale IR senzori. Treba iskoristit IR Webots drajvere iz #145 ako se odlucimo za koriscenje IR senzora

from mep3.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.