Ratkaistu: lisää palvelutiedostot setup.py ROS2:een

Viime vuosina robotiikan alalla on tapahtunut räjähdysmäistä kehitystä ja käyttöön otettuja teknologioita. Yksi niistä on ROS2 (Robot Operating System 2), avoimen lähdekoodin väliohjelmistokehys, joka tarjoaa työkaluja, kirjastoja ja käytäntöjä robottien sovellusten kehittämiseen, testaamiseen ja ylläpitoon. Tässä artikkelissa käsitellään palvelutiedostojen lisäämistä ROS2-pakettiin käyttämällä setup.py:tä, joka on olennainen taito tämän alustan kanssa työskenteleville kehittäjille. Aloitamme lyhyellä esittelyllä, esittelemme ratkaisun ongelmaan, opastamme sinut vaiheittaisen oppaan läpi ja keskustelemme aiheeseen liittyvistä aiheista syvemmän ymmärryksen saavuttamiseksi.

Palvelutiedoston määrittäminen ROS2-paketissa sisältää kaksi päävaihetta: palvelusanoman määritystiedoston (.srv) luominen ja tarvittavien määritysten lisääminen package.xml- ja setup.py-tiedostoihin. Tässä opetusohjelmassa luomme yksinkertaisen palvelun, joka ottaa syötemerkkijonon ja palauttaa syötteen pituuden.

Ensin valmistetaan työtilamme. Luo ROS2-paketti nimeltä "string_length_service" seuraavalla komennolla:

”`
ros2 pkg create –build-type ament_python string_length_service
”`

Luo nyt "srv"-niminen hakemisto "string_length_service" -paketin sisään palveluviestinmääritystiedostomme tallentamiseksi:

”`
mkdir srv
”`

Luo "srv"-hakemistoon tiedosto nimeltä "StringLength.srv", jonka sisältö on seuraava:

”`
merkkijono syötemerkkijono
-
pituus int64
”`

Muista lisätä paketti.xml-tiedostoon tarvittavat riippuvuudet:

"`xml
std_msgs
service_interface_packets
ament_cmake
ament_cmake_auto
matplotlib
”`

Siirrytään nyt tämän artikkelin ydinosioon – palvelutiedostojen lisäämiseen setup.py:ssä. Avaa "setup.py"-tiedosto ja lisää seuraava koodi:

"" Python
asennustyökalujen tuonnin asetuksista
alkaen glob import glob

paketin_nimi = 'merkkijonon_pituus_palvelu'

perustaa(
nimi=paketin_nimi,
version='0.0.0',
paketit=[paketin_nimi],
data_files=[
('share/ament_index/resource_index/packages',
['resurssi/' + paketin_nimi]),
('share/' + paketin_nimi, ['paketti.xml']),
('share/' + paketin_nimi, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Totta,
ylläpitäjä='developer_name_here',
karbantartás_email='developer_email_here',
description='Palvelu merkkijonon pituuden laskemiseen',
licence='MIT',
tests_require=['pytest'],
aloituspisteet={
'console_scripts': [
'string_length_server = ' + paketin_nimi + '.string_length_server:main',
'string_length_client = ' + paketin_nimi + '.string_length_client:main',
],
},
)
”`

Keskustellaan nyt siitä, mitä tämä koodi tekee: Setup.py-tiedosto käyttää setuptools-työkaluja pakettimme jakeluun ja hallintaan. Paketin_nimi muuttuja sisältää pakettimme nimen. Data_files-luettelo määrittää tarvittavat resurssit, package.xml- ja palvelutiedostot, jotka jaetaan paketin mukana. install_requires listaa vaaditut paketit ja entry_points määrittelevät palvelumme suoritettavat tiedostot. Muista korvata 'developer_name_here' ja 'developer_email_here' oikeilla arvoilla.

Käyttämällä rclpyä ja std_srvs

Kun palvelutiedostot on määritetty setup.py:ssä, on tarpeen ottaa käyttöön palvelin- ja asiakaskoodi käyttämällä ROS2 Python -asiakaskirjastoa, rclpy- ja std_srvs-tiedostoja vakiopalvelutyypeille.

Luo tiedostot "string_length_server.py" ja "string_length_client.py" pakettihakemistoosi ja ota käyttöön palvelin- ja asiakaskoodi. Lisätietoja palvelin- ja asiakaskoodin kirjoittamisesta on ROS2-dokumentaatiossa.

Palvelun rakentaminen ja testaus

Lopuksi rakenna ja testaa paketti seuraavilla komennoilla:

”`
lähde /opt/ros/foxy/setup.bash
colcon build –paketit-select string_length_service
lähde install/setup.bash
”`

Onnistuneen rakentamisen jälkeen suorita palvelin ja asiakas käyttämällä kahta erillistä päätettä:

”`
ros2 suorita merkkijonon_pituus_palvelu merkkijonon_pituus_palvelin
”`

”`
ros2 suorita string_length_service string_length_client
”`

Tässä oppaassa esitettiin perusteellinen selitys palvelutiedostojen lisäämisestä setup.py-tiedostoon ROS2-paketteja varten ja käsiteltiin aiheeseen liittyviä aiheita, kuten rclpy ja std_srvs. Seuraamalla näitä vaiheita voit luoda ja jakaa ROS2-palvelusi tehokkaasti ja järjestelmällisesti, mikä helpottaa vuorovaikutusta robottisovellustesi sisällä. Onnea ja onnea koodaukseen!

Related viestiä:

Jätä kommentti