VPN-ന്റെ വിപരീത അറ്റങ്ങളിലുള്ള രണ്ട് ROS 2 നോഡുകൾക്ക് പരസ്പരം വിഷയങ്ങൾ ലിസ്റ്റ് ചെയ്യാൻ കഴിയും, എന്നിട്ടും ഒരു സന്ദേശം പോലും എത്തിക്കാൻ കഴിയില്ല. കണ്ടെത്തലും ഉപയോക്തൃ ഡേറ്റയും വെവ്വേറെ പാതകളുള്ള വെവ്വേറെ കൈമാറ്റങ്ങളാണ്, കണ്ടെത്തൽ സർവർ പേലോഡുകൾ റിലേ ചെയ്യുന്നില്ല. ഒന്ന് പരിശോധിച്ച് മറ്റൊന്ന് അനുമാനിക്കുന്നതാണ് ടീമുകൾ ടണൽ ഡേറ്റ തന്നെ കൊണ്ടുപോകാത്തപ്പോഴും മിഡിൽവെയർ മാറ്റാൻ കാരണമാകുന്നത്. താഴെയുള്ള നടപടിക്രമം എന്തും മാറ്റുന്നതിന് മുമ്പ് രണ്ട് ഫലങ്ങളെ വേർതിരിക്കുന്നു.

കണ്ടെത്തൽ സർവർ യഥാർത്ഥത്തിൽ വഹിക്കുന്നത്

Fast DDS-ൽ Discovery Server എൻഡ്പോയിന്റുകളെക്കുറിച്ചുള്ള വിവരങ്ങൾ വിതരണം ചെയ്യുന്നു: ആരു പ്രസിദ്ധീകരിക്കുന്നു, ആരു സബ്സ്ക്രൈബ് ചെയ്യുന്നു, ഓരോരുത്തരും ഏത് QoS പ്രതീക്ഷിക്കുന്നു. സഹപ്രവർത്തകർ പരസ്പരം അറിഞ്ഞുകഴിഞ്ഞാൽ, ഉപയോക്തൃ ഡേറ്റ ആ സർവറിലൂടെയല്ല, നേരിട്ട് അവർക്കിടയിൽ സഞ്ചരിക്കുന്നു. സർവറിലെത്തുന്നത് പരിചയപ്പെടുത്തലുകളുടെ ബ്രോക്കർ ഉത്തരം നൽകുന്നു എന്ന് തെളിയിക്കുന്നു, അത്രമാത്രം. റൗട്ട് ചെയ്ത VPN-ന് ഇപ്പോഴും സഹപ്രവർത്തകർ പ്രഖ്യാപിക്കുന്ന വിലാസങ്ങൾക്കിടയിൽ ഇരു ദിശകളിലും പ്രവർത്തിക്കുന്ന പാത ആവശ്യമാണ്.

ഈ വ്യത്യാസം ഭാഗിക പരാജയങ്ങളെയും വിശദീകരിക്കുന്നു, നിലവിലുള്ള സഹപ്രവർത്തകർ ഡേറ്റ കൈമാറ്റം തുടരുമ്പോൾ പുതിയ കണ്ടെത്തൽ പ്രവർത്തിക്കുന്നത് നിർത്തുന്നു. അവയെ രണ്ട് വെവ്വേറെ അന്വേഷണങ്ങളായി കാണുക.

നോഡുകൾ യഥാർത്ഥത്തിൽ ഉപയോഗിക്കുന്ന RMW വായിക്കുക

ROS 2-ന് വ്യത്യസ്ത മിഡിൽവെയറുകൾ ലോഡ് ചെയ്യാനാകും, നിങ്ങളുടെ ഷെല്ലിൽ എക്സ്പോർട്ട് ചെയ്ത വേരിയബിൾ മറ്റൊരിടത്ത് ആരംഭിച്ച പ്രോസസ്സുകളിലേക്ക് എത്തുന്നില്ല. നിങ്ങളുടെ ടെർമിനൽ ചരിത്രത്തിന് പകരം പ്രവർത്തിക്കുന്ന സിസ്റ്റത്തോട് ചോദിക്കുക.

printenv RMW_IMPLEMENTATION
ros2 doctor --report | head -n 20

സെറ്റ് ചെയ്യാത്ത വേരിയബിൾ സാധാരണയായി ഇൻസ്റ്റാൾ ചെയ്ത ഡിഫോൾട്ട് അർത്ഥമാക്കുന്നു, അത് ഒരേ പരീക്ഷണത്തിലെ മെഷീനുകൾക്കിടയിൽ വ്യത്യാസപ്പെടാം. ഉപയോഗിക്കുന്ന ഡിസ്ട്രിബ്യൂഷനും മിഡിൽവെയറും റിപ്പോർട്ട് പേരിടുന്നു, അതിനാൽ അവ ഒത്തുപോകുന്നു എന്ന് അനുമാനിക്കുന്നതിന് മുമ്പ് ടണലിന്റെ ഇരുവശത്തും അവ താരതമ്യം ചെയ്യുക. ROS കമാൻഡ്-ലൈൻ ഡീമൺ സ്റ്റേറ്റ് കാഷെ ചെയ്യുന്നു, അതിനാൽ പരിസ്ഥിതി മാറ്റിയ ശേഷം അത് പുനരാരംഭിക്കുക, പഴയ കോൺഫിഗറേഷന് കാലഹരണപ്പെട്ട ഡീമൺ ഉത്തരം നൽകാൻ അനുവദിക്കരുത്. സെഷൻ തുറന്നിരിക്കുമ്പോൾ രണ്ട് ഹോസ്റ്റുകളുടെയും ഡിസ്ട്രിബ്യൂഷനും RMW-യും ടെസ്റ്റ് കുറിപ്പുകളിൽ എഴുതുക.

കണ്ടെത്തലും ഡേറ്റയും രണ്ട് ഫലങ്ങളായി പരീക്ഷിക്കുക

ഒരു ഹാനികരമല്ലാത്ത വിഷയം തിരഞ്ഞെടുത്ത് പരിചയപ്പെടുത്തൽ ഡെലിവറിയിൽ നിന്ന് വെവ്വേറെ അളക്കുക. info കമാൻഡ് എൻഡ്പോയിന്റുകളും QoS-ഉം ലിസ്റ്റ് ചെയ്യുന്നു, echo ഒരു സന്ദേശം യഥാർത്ഥത്തിൽ ലിങ്ക് കടക്കുന്നുണ്ടോ എന്ന് തെളിയിക്കുന്നു.

ros2 topic info /chatter --verbose
ros2 topic echo /chatter --once

info ഔട്ട്പുട്ടിൽ എൻഡ്പോയിന്റുകൾ പ്രത്യക്ഷപ്പെടുന്നത് കണ്ടെത്തലിന്റെ ഫലമാണ്. സന്ദേശം സബ്സ്ക്രൈബറിലെത്തുന്നത് ഗതാഗതത്തിന്റെ ഫലമാണ്, രണ്ടാമത്തേത് മാത്രമാണ് അപ്ലിക്കേഷന് ആവശ്യമായ പാത പരീക്ഷിക്കുന്നത്. കണ്ടെത്തൽ പ്രവർത്തിക്കുകയും echo സമയപരിധി കഴിയുകയും ചെയ്യുമ്പോൾ, കണ്ടെത്തൽ സേവനത്തിന് പകരം പ്രഖ്യാപിത വിലാസങ്ങളും മടക്കപ്പാതയും പരിശോധിക്കുക. ഓരോ ഹോസ്റ്റിൽ നിന്നും രണ്ട് കമാൻഡുകളും പ്രവർത്തിപ്പിക്കുക, കാരണം അസമമായ VPN പാത പലപ്പോഴും ഒരു വശത്തുനിന്ന് മാത്രമേ വെളിപ്പെടുത്തൂ.

ഒരു സമയം ഒരു ആശ്രിതത്വം മാറ്റുക

ഡേറ്റാ പാത പരാജയപ്പെടുമ്പോൾ, അതേ സെഷനിൽ മിഡിൽവെയർ, കണ്ടെത്തൽ മോഡ്, സന്ദേശ വലുപ്പം എന്നിവ മാറ്റുന്നത് ഒഴിവാക്കുക, കാരണം പിന്നീട് ഒരു ഫലവും ആരോപിക്കാനാകില്ല. Zenoh RMW സാധുവായ ബദലാണ്, പക്ഷേ അതിന്റെ റൗട്ടർ ടണലിലൂടെ ലഭ്യമായിരിക്കേണ്ട മറ്റൊരു ആശ്രിതത്വമായി മാറുന്നു.

export RMW_IMPLEMENTATION=rmw_zenoh_cpp
ros2 run rmw_zenoh_cpp rmw_zenohd

ആ RMW-യിൽ റൗട്ടർ Jazzy-യുടെ ഡിഫോൾട്ട് ക്രമീകരണത്തിൽ കണ്ടെത്തൽ വഹിക്കുന്നു, അവിടെ മൾട്ടികാസ്റ്റ് കണ്ടെത്തൽ പ്രവർത്തനരഹിതമാണ്, അതിനാൽ ഈ ആശ്രിതത്വം മറ്റൊരു മിഡിൽവെയറിൽ നിന്ന് കടമെടുത്ത അനുമാനത്തിലല്ല, നിങ്ങളുടെ കുറിപ്പുകളിൽ ഉണ്ടായിരിക്കണം. ഒരു ക്രമീകരണം മാറ്റുമ്പോൾ വർക്ക്ലോഡ് സ്ഥിരമായി നിർത്തുക, തുടർന്ന് echo പരീക്ഷണം ആവർത്തിച്ച് ദിശ, സന്ദേശ നിരക്ക്, ലിങ്ക് അവസ്ഥകൾ എന്നിവ രേഖപ്പെടുത്തുക. യഥാർത്ഥ മെച്ചപ്പെടുത്തലിനെ ഭാഗ്യകരമായ പുനർബന്ധനത്തിൽ നിന്ന് വേർതിരിക്കാൻ താരതമ്യം രണ്ടുതവണ പ്രവർത്തിപ്പിക്കുക. ഒരു മാറ്റം കണ്ടെത്തൽ മെച്ചപ്പെടുത്തുകയും ഡെലിവറി അതേപടി നിൽക്കുകയും ചെയ്താൽ, നിങ്ങൾ പരിചയപ്പെടുത്തൽ സേവനം നീക്കി, ഡേറ്റാ പാതയല്ല.

അനുബന്ധ ലേഖനങ്ങൾ