Git Product home page Git Product logo

mep3's People

Contributors

angstrem98 avatar darda5 avatar dovvla avatar filiparag avatar hepek93 avatar lukicdarkoo avatar marijagolubovic avatar miloshunter avatar petarubavic avatar vladimirvincan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

mep3's Issues

Lidar doesn't detect cylinders in Webots

commit: 2f84846

The cylinders that hold the hat are added but they are not detected by the Lidar. The bounding object and physics have been added to the cylinders. Is there something else needed to be added to the cylinders in order for them to be detected or does the Lidar not publish very small distances? @lukicdarkoo

image
image

Make advanced strategies with the big robot

Make BT Subtrees to do the following actions on the purple side:

Big robot:

  • Swap sample between hands
  • Get the red__ sample, in the right playing area, into the right hand
  • Get the green sample, in the right playing area, into the right hand
  • Get the blue_ sample, in the right playing area, into the right hand
  • No. 1: Get the blue_ sample, in the right middle vertical dispenser, into the right hand
  • No. 2: Get the green sample, in the right middle vertical dispenser, into the right hand
  • No. 3: Get the red__ sample, in the right middle vertical dispenser, into the right hand
  • No. 1: Get the blue_ sample, in the purple vertical dispenser, into the right hand
  • No. 2: Get the green sample, in the purple vertical dispenser, into the right hand
  • No. 3: Get the red__ sample, in the purple vertical dispenser, into the right hand
  • Get the red__ sample, in the purple horizontal dispenser, into the right hand
  • Get the blue_ sample, in the purple horizontal dispenser, into the right hand
  • Get the green sample, in the purple horizontal dispenser, into the right hand
  • Get a sample from the excavation site
    image
  • Place the red__ sample in the campsite, with the right hand
  • Place the green sample in the campsite, with the right hand
  • Place the blue_ sample in the campsite, with the right hand
    image
  • Place the red__ sample on the gallery, with the right hand
  • Place the green sample on the gallery, with the right hand
  • Place the blue_ sample on the gallery, with the right hand
    image
  • Place a sample under the work shed, with the right hand
    image
  • Measure excavation square 5, with the right hand
  • Measure excavation square 6, with the right hand
  • Measure excavation square 7, with the right hand
  • Measure excavation square 8, with the right hand
  • Measure excavation square 9, with the right hand
  • Push excavation square
  • Return to the camp (task D11)
  • Return to the excavation site (task D11)
  • REPEAT Implement all tasks with the left hand
  • REPEAT Implement all tasks on the yellow side

Small robot:
image

  • Place replica
  • Remove statuette
  • Place statuette
  • activate display cabinet (task D10)
  • REPEAT Implement all tasks on the yellow side

Osnovna BT strategija failuje u main brenču

Mislim da se nešto poremetilo u poslednja tri commit-a. Proverio sam ponovo commit cdb5aff, strategija se izvršava bez problema. Zanemariti protivničke robote, isto se dešava i kad oni nisu pored.

BTfail.mp4

Internet pristup za robote

Ovo treba hitno resiti, previse vremena mi oduzima, nekad treda samo jedan paket da instaliram i moram menjati hotspot-ove. Plus treba nam pristup git repozitorijumu.

Pedestal

To do:

  • Ubaciti 3D model
  • Napraviti boundingObject od primitivnih oblika

Wroot

Predlazem da napravimo web alternativu Groot-u.

Utvrdili smo da Groot ima dosta problema, neke izmjene bi bile prihvacene od Groot tima, ali se bojim da ne bismo uspjeli da izmijenimo sve sto nam je potrebno. Vjerujem da nije previse kompleksno da reimplementiramo osnovne funkcionalnosti Groot editora.

Web verziju Groot-a bi mogli hostovati na memristorrobotics.com, a interfejs bi interagovao sa robotom preko posebnog, jednostavnog, daemon-a.

Sljedeca biblioteka bi trebalo da je od pomoci:
https://github.com/retejs/rete


https://github.com/cs01/pyxtermjs/blob/master/pyxtermjs/app.py
https://xtermjs.org/

Smanjiti broj trouglova kod velikog robota

WARNING: RobotMemristor (PROTO) > Shape > Mesh: Too many triangles (27604) in mesh: unable to cast shadows, please reduce the number of triangles below 21845 or set Shape.castShadows to FALSE to disable this warning.

Dynamixel library

Potrebno je omogućiti slanje komandi sa računara preko CAN-a na Dynamixel aktuatore. Imamo primer koda koji je radio unutar mep2.
Skrenuo bih pažnju na problem koji je postojao tad: ukoliko se pošalje nekoliko komandi zaredom ka više servoa (pokrenuti 3-4 servoa istovremeno) desi se da neki ne odreaguje. Primitivno rešenje koje je korišćeno jeste ubacivanje malog sleep-a između komandi ka servoima.

Nije isključeno da je problem u firmveru aktuatorske ploče. Moguće je da se prijemni FIFO CAN kontrolera na aktuatorskoj prepuni. Treba proveriti i da li svi servoi imaju podesenu istu vrednost Response Delay Time.

Use JointTrajectoryController for Dynamixel Servos

Treba da implementiramo drajver za Dynamixel servoe preko ros2_control umjesto #68. Odlucili smo se za #68 zbog nedostataka u trenutnoj implementaciji JointTrajectoryController (npr. timeout se ne moze definisati na nivou akcije).

Takodje, vjerovatno bi bilo dobro izmijeniti prilagodnu da mozemo povezati Dynamixel servoe direktno na Raspberry Pi.

Bad rotation estimation with ArUco tags (z axis flipped)

Additional info about the problem can be found on this link.
We need to find a way to tell the PnP algorithm that the z axis is always faced up, in order to minimize the rotation error.
Also, it would be nice if we could tell the algorithm that the z axis distance from the world frame (e.g. ArUco tag no. 42) is always 510 mm, in order to minimize the translation error.

rotacija-zajedno

Peek_2022-03-02_23-57.mp4

Navigation2 kalibracija

  • Iz nekog razloga ignorise globalne prepreke, kao da ne postoje (Darko)
  • Cini mi se da DWA mnogo bolje radi, moj prijedlog je da vratimo DWA i da njega stimamo (Darko)

Vratiti Viewpoint

Vrednosti treba da budu:
orientation -0.33 0.33 1 1.67
position 0 -4.2 3.5

umesto:
orientation -0.5773502691896258 0.5773502691896258 0.5773502691896258 2.0944
position 0 0 10

Promeniti svuda naziv `galactic_ws` u `ros2_ws`

Primetio sam za sad na sledećim mestima:

mep3/README.md

Lines 25 to 29 in 09c6999

source /opt/ros/galactic/local_setup.bash
# Create a workspace
mkdir -p ~/galactic_ws/src
cd ~/galactic_ws

mep3/README.md

Line 76 in 09c6999

source /opt/ros/galactic/local_setup.bash

mep3/README.md

Line 101 in 09c6999

source /opt/ros/galactic/local_setup.bash

mep3/install.bash

Lines 44 to 51 in 24cb997

mkdir -p ~/galactic_ws/src
git clone https://github.com/memristor/mep3.git ~/galactic_ws/src/mep3
if [ "${TARGET_HARDWARE}" = "rpi" ]; then
touch ~/galactic_ws/src/mep3/mep3_simulation/COLCON_IGNORE
fi
# Build mep3
pushd ~/galactic_ws

PreciseNavigateToActionIssue

@angstrem98
Napravili smo prvu strategiju pomoću komande PreciseNavigateToAction, međutim ta akcija se vrti više nego što bi trebalo. Molim te uđi u commit e732ccd, i pokreni sledeće komande:

ros2 launch mep3_bringup simulation_launch.py

ros2 run mep3_behavior_tree mep3_behavior_tree first_strategy --ros-args -r __ns:=/big

PreciseNavigateToActionError.mp4

LCD Driver

Potrebno je pokernuti LCD iz ROS-a i obezbediti mehanizam za dodavanje bodova servis/akcija + odgovarajući BT čvor.

Integrisati sistemske testove u CI

Cilj je napraviti sistemske testovi koji pokrecu simulaciju i provjeravaju poziciju elemenata (recimo robota) nakon izvrsene komande (recimo cmd_vel). Svi testovi treba da se izvrsavaju u CI na svaki komit.

Primjer testa:
https://github.com/cyberbotics/webots_ros2/blob/d18ed74aad165cba57a028dc62d0a391ae8c88ea/webots_ros2_tests/test/test_system_epuck.py#L91-L104

CI for ROS:
https://github.com/ros-industrial/industrial_ci

To do

  • Napraviti Action workflow koji se poziva za komitove i PR
  • U CI okruzenje dodati sve neophodne pakete i namestiti okruzenje
    • Napisati test koji radi colcon build
    • Napisati test koji radi colcon test
  • Napisati test za proveru pomeranja probnog robota
    • Testirati ponasanje CI za oba slucaja - kada ocekujemo da test prodje i kada ocekujemo da ne prodje

Prečice za terminal

Za brži rad u terminalu predlažem da dodamo sledeće alias-e u ~/.bashrc razvojnog okruženja:

  • cb colcon build --symlink-install
  • rr rm -rf ~/ros2_ws/install/ ~/ros2_ws/build/
  • s source ~/ros2_ws/install/local_setup.bash
  • sim ros2 launch mep3_simulation simulation_launch.py
  • br ros2 launch mep3_bringup simulation_launch.py
  • rv ros2 launch mep3_bringup rviz_launch.py

Ako imate još neku ideju, pišite u komentarima 🙃

Ubacivanje robota u Webots

To do

  • Probni robot
    • Osnovni model (#8)
    • Motori za točkove (#8)
    • Senzori udaljenosti
    • Rotacioni enkoderi na točkovima
    • Lidar
    • ...
  • Veliki robot
    • ...
  • Mali robot
    • ...

Integrisati `Navigation2` paket

ROS 2 and Webots

This will be a basic ROS 2 integration, we need to expose only cmd_vel (Twist) and odom (Odometry) topics. It will allow us to command the robot and read the robot's position obtained through the wheel odometry.

The webots_ros2 package comes with a webots_ros2_control package that integrates ros2_control. Thanks to the ros2_control we can spin a diffdrive_controller node that will automatically expose necessary topics.

Reference:

Example:


To do

  • Podesiti okruženje
  • Opisati probnog robota u URDF
  • Kontrola motora

Adding support for MX28 servo

  • Handling of the difference in GoalPosition arguments
  • Add handling of errors to know what failure exactly happened
  • Decide what to do if the command is unachievable? (Service call position is out of available range)

Some differences include GoalPosition arguments:
image

Code is doubled, does not compile, just delete lines 198... 206 in /home/filip/galactic_ws/src/mep3/mep3_behavior_tree/include/mep3_behavior_tree/team_color_strategy_mirror.hpp

/home/filip/galactic_ws/src/mep3/mep3_behavior_tree/include/mep3_behavior_tree/team_color_strategy_mirror.hpp:207:22: error: ‘static std::string mep3_behavior_tree::StrategyMirror::strip_server_name(const string&)’ cannot be overloaded with ‘static std::string mep3_behavior_tree::StrategyMirror::strip_server_name(const string&)’

tf2 listener neće da učita statičke transformacije

Imam problem sa učitavanjem statičkih transformacija terena u robot detection node, ako pokrenem:
ros2 run mep3_localization static_broadcaster
ros2 run mep3_localization robot_detection
Trebalo bi da se transformacije između kamere, mape i markera 42 učitaju u tf2 stablo, što se i vizualizuje u RViz-u i prikazuje preko komande npr. ros2 run tf2_ros tf2_echo map camera_static, kao i da se učitaju u robot detection node, ali se kod ovde i dalje blokira:

self.tf_buffer = Buffer()
self.tf_listener = TransformListener(self.tf_buffer, self)
print('waiting')
trans = self.tf_buffer.lookup_transform(child, parent,
rclpy.time.Time())

Nije nešto suštinski bitno, mogu se uneti transformacije ručno u kod, ali mi ovo deluje kao elegantnije rešenje.

Excavation Squares

image

image

Bacite pogled na excavation squares. Za sad koliko vidim, ostala su 2 problema da se reše:

  1. Kolika je masa tih pločica, odnosno gustina drveta
  2. Podesiti da zglob ima odgovarajući opseg. Ako povećam opseg koji može imati zglob, taj opseg kao da nestane kad primenim silu, odnosno pločice ne prestanu da se vrte. Koliko sam shvatio, maksimalni opseg zgloba je Pi. Poželjno bi bilo da kad pločice padnu, stoje vertikalno usled sile gravitacije, umesto pod uglom. I sad u toku simulacije se desi da se pločice vrte koji krug, ali završe u krajnjem dozvoljenom položaju zgloba.

Raspberry

Obezbediti raspberry za drugog robota i pripremiti SD kartice.

Fotoelektrični senzori

Potrebno je obezbediti komunikaciju sa senzorskom pločom i prikupiti podatke sa fotoelektričnih senzora.
Postoji poruka sensor_msgs/Range i podržava naš tip senzora (fiksna distanca). Uvezivanje sa nav2 paketom je jednostavno pomoću range_layer-a.

Sam podatak sa senzora prethodno treba obraditi, slično lidaru, da se ne detektuju predmeti van stola i statičke prepreka kao što je toranj.

PreciseNavigateToAction + IR readings subtree

Za ovakve situacije name treba PreciseNavigateToAction:

Peek_2022-03-18_15-04.mp4

ali postoji mogucnost da nam se pojavi protivnik.

Moj prijedlog (mislim da je i @angstrem98 spominjao) je da napravimo subtree koji ce definisati ponasanje robota kada IR senzor detektuje nesto ispred robota. Recimo, robot moze u tom slucaju da stane, saceka 2s, ako i dalje postoji onda fejluje.

Osvetljenje terena u simulatoru

Trenutno postoji problem sa senkama, previše utiču na sliku, treba dodati smisleno osvetljenje...

@lukicdarkoo dao dobru ideju, da na slučajan način generišemo osvetljenje, simulirajući i npr okidanje blica, kamermana koji snima s uključenim svetlom, sunce pod uglom i slično.

A algoritme praviti da budu otporni na to.

mep3_navigation neće da se build-uje u main brenču

Starting >>> mep3_navigation
--- stderr: mep3_navigation
CMake Error at CMakeLists.txt:23 (find_package):
By not providing "Findnav2_core.cmake" in CMAKE_MODULE_PATH this project
has asked CMake to find a package configuration file provided by
"nav2_core", but CMake did not find one.

Could not find a package configuration file provided by "nav2_core" with
any of the following names:

nav2_coreConfig.cmake
nav2_core-config.cmake

Add the installation prefix of "nav2_core" to CMAKE_PREFIX_PATH or set
"nav2_core_DIR" to a directory containing one of the above files. If
"nav2_core" provides a separate development package or SDK, be sure it has
been installed.

make: *** [Makefile:326: cmake_check_build_system] Error 1
__

Improve startup time

Pokretanje aplikacije na Raspberry Pi je sporo, moramo ubrzati. Vjerujem da brzinu pokretanje aplikacije najvise utice broj ROS cvorova, broj akcionih servera, Python implementacije i broj procesa. Evo prijedloga:

ROS cvorovi Akcioni serveri Python Procesi Ostalo
Obrisati distance angle kontroler
(integrisati u RPP)
-1 -1 -1
Integrisati laser scan republisher u costmap plugin -1 -1 smanjuje se slanje velikih poruka
Integrisati Dynamixel drajver u ros2_control -1 -7 -1
Nav2 composition -6
Integrisati cinc drajver u ros2_control -1 -1 -1
Integrisati drajver za pumpe u ros2_control -1 -4 -1 -1
Prebaciti LCD drajver u C++ -1
Ukupno -5 -12 -3 -11

(pretpostavka da robot ima 8 Dynamixel motora i 4 vakum pumpe)
(pumpe prebaciti u servise)

Dodatno, uraditi review nav2 plugina koje koristimo:

- nav2_compute_path_to_pose_action_bt_node
- nav2_compute_path_through_poses_action_bt_node
- nav2_follow_path_action_bt_node
- nav2_back_up_action_bt_node
- nav2_spin_action_bt_node
- nav2_wait_action_bt_node
- nav2_clear_costmap_service_bt_node
- nav2_is_stuck_condition_bt_node
- nav2_goal_reached_condition_bt_node
- nav2_goal_updated_condition_bt_node
- nav2_initial_pose_received_condition_bt_node
- nav2_reinitialize_global_localization_service_bt_node
- nav2_rate_controller_bt_node
- nav2_distance_controller_bt_node
- nav2_speed_controller_bt_node
- nav2_truncate_path_action_bt_node
- nav2_goal_updater_node_bt_node
- nav2_recovery_node_bt_node
- nav2_pipeline_sequence_bt_node
- nav2_round_robin_node_bt_node
- nav2_transform_available_condition_bt_node
- nav2_time_expired_condition_bt_node
- nav2_distance_traveled_condition_bt_node
- nav2_single_trigger_bt_node
- nav2_is_battery_low_condition_bt_node
- nav2_navigate_through_poses_action_bt_node
- nav2_navigate_to_pose_action_bt_node
- nav2_remove_passed_goals_action_bt_node
- nav2_planner_selector_bt_node
- nav2_controller_selector_bt_node
- nav2_goal_checker_selector_bt_node
- nav2_globally_updated_goal_condition_bt_node

Dosta tih plugina vjerujem da ne koristimo, a potencijalno kreiraju akcione klijente/servere. Recimo, Spin plugin je ucitan i kreira akcioni server, a ne koristimo ga.

Model diska

Dodati model diska sa promenjivim ArUco markerima

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.