Rosserial рдФрд░ STM32

ROS рд░реЛрдмреЛрдЯрд┐рдХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд░реЛрдмреЛрдЯ рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдлреА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдордВрдЪ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ "рдиреЛрдбреНрд╕" рдирд╛рдордХ рд╕рд░рд▓рддрдо рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдШрдЯрдХреЛрдВ рд╕реЗ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдЪреАрдЬреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдФрд░ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЧрдЬрд╝реЗрдмреЛ рд░реЛрдмреЛрдЯрд┐рдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд╕рд┐рдореБрд▓реЗрд╢рди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдбреЗрдЯрд╛ рд╡рд┐рдирд┐рдордп рдкреНрд░реЛрдЯреЛрдХреЙрд▓ред рдЬреНрдпрд╛рджрд╛рддрд░ рдЖрд░рдУрдПрд╕рдбрд┐рдиреЛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдРрд╕реЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЖрд░рдУрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрдВрдЯрд░рдиреЗрдЯ ROS рдФрд░ Arduino рдХреЗ рдПрдХ рд╕рдореВрд╣ рдкрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╕реЗ рднрд░рд╛ рд╣реИред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ STM32 рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЖрд░рдУрдПрд╕ рд░реЛрдмреЛрдЯ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗрд╡рд▓ рд╕рд╡рд╛рд▓реЛрдВ рд╕реЗ рднрд░рд╛ рд╣реИред



рдЖрд░рдВрдн рдХрд░реЗрдВ


STM32 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ STM32CubeMX рдФрд░ SystemworkbenchforSTM32 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЙрдирдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рд╣рдо рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдВрдЧреЗред

рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, STM32CubeMX рдкрд░ рдЬрд╛рдПрдВ

рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред



рд╣рдо рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВрдЧреЗ, рдореЗрд░реЗ рдкрд╛рд╕ STM32f103c8t6 рд╣реИред



рдкрд░рд┐рдзрд┐ рдореЗрдВ, рд╣рдо рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдмрд╛рд╣рд░реА рдХреНрд╡рд╛рд░реНрдЯреНрдЬ рдЧреБрдВрдЬрдпрдорд╛рди рдпрдВрддреНрд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрдирдореЗрдВ рд╕реЗ 2 рд╣реИрдВ



рдЙрди рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рдЬрд┐рдирдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдк рдирд┐рдпрдВрддреНрд░рдХ рдХреА рдбреАрдмрдЧрд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрджрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ C ++ рдореЗрдВ рд╣реИ, рддреЛ рдбреАрдмрдЧрд┐рдВрдЧ рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИ)



рдЖрдЗрдП рдкреЛрд░реНрдЯ 13 рдЖрдЙрдЯрдкреБрдЯ рд╕реА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдПрд▓рдИрдбреА рдЗрд╕рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред



UART рдкрд┐рди рд╕реЗрдЯ рдХрд░реЗрдВред



Lock_configuration рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЪрд┐рддреНрд░ рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧ рдХрд░реЗрдВред



рдЖрдЗрдП рдкрд░рд┐рдзрд┐ рдХреЗ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рдиреНрдпрд╛рд╕ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ


UART

рдбреЗрдЯрд╛ рд╡рд┐рдирд┐рдордп рджрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ред



рдбреАрдПрдордП рд╕реЗрдЯрдЕрдкред





рд╡реНрдпрд╡рдзрд╛рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ, рдЖрдкрдХреЛ UART рдкрд░ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рд░реБрдХрд╛рд╡рдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ



GPIO рд╕реЗрдЯрдЕрдк




рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрд┐рд▓реНрдб рд╕реЗрдЯрдЕрдк




рд╣рдо рдЖрдкрдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ



рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЦреЛрд▓рддреЗ рд╣реИрдВ,



STM32 рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдирд╛


SW4STM32 рдореЗрдВ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕рдореЗрдВ рдХреБрдЫ рдкрд░рд┐рдзреАрдп рдирд┐рдпрдВрддреНрд░рдг рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛, рдЗрд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдлреНрд▓реИрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдореБрдЭреЗ рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рдорд┐рд▓рд╛ред

рдЗрд╕рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ STM32CubeMX рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

STM32 рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдирд╛


1) рдлрд╝рд╛рдЗрд▓> рдирдпрд╛> рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

2) рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ
1) рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд╛рдо рджрд░реНрдЬ рдХрд░реЗрдВ
2) рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ: рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп> Ac6 STM32 MCU рдкреНрд░реЛрдЬреЗрдХреНрдЯ
3) рдЯреВрд▓рдЪрд┐рди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ: рдПрд╕реА 6 рдПрд╕рдЯреАрдПрдо 32 рдПрдорд╕реАрдпреВ рдЬреАрд╕реАрд╕реА
4) "рдЕрдЧрд▓рд╛" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ



3) рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдЪреБрдиреЗрдВ
1) "рдирдпрд╛ рдХрд╕реНрдЯрдо рдмреЛрд░реНрдб рдмрдирд╛рдПрдВ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
1) рдирдИ рдмреЛрд░реНрдб рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╕рд╣реЗрдЬреЗрдВ
2) рдирдП рдмреЛрд░реНрдб рдХрд╛ рдирд╛рдо рджрд░реНрдЬ рдХрд░реЗрдВ: STM32F103
3) рдПрдХ рдЪрд┐рдк рдмреЛрд░реНрдб рдЪреБрдиреЗрдВ: STM32F1
4) MSU рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ: STM32F103RCTx
5) рдУрдХреЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
2) рдЖрдкрдиреЗ рдЕрднреА рдЬреЛ рдмреЛрд░реНрдб рдмрдирд╛рдпрд╛ рд╣реИ, рдЙрд╕рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ!
1) рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ: STM32F1
2) рдПрдХ рдмреЛрд░реНрдб рдЪреБрдиреЗрдВ: STM32F103
3) "рдЕрдЧрд▓рд╛" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ



4) рд╣рдо рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдПрдЪрдПрдПрд▓ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ



5) рд╕рдорд╛рдкреНрдд рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

рдлрд╝рд╛рдЗрд▓реЗрдВ рдЬреЛрдбрд╝рдирд╛


рдХреНрдпреВрдм рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ src рдФрд░ inc рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╣рдорд╛рд░реА рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ, STM32F103C8Tx_FLASH.ld рдХреЛ рднреА рдХреЙрдкреА рдХрд░реЗрдВ



STM32 рдХреЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдФрд░ рд╕реНрд╡рдпрдВ рдХреЗ рдХреЛрдб рдХреЛ рд▓реВрдк рдореЗрдВ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд▓рд┐рдЦреЗрдВ

HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); HAL_Delay(100); 

рдпрд╣рд╛рдВ рд╣рдо рд╕рд┐рд░реНрдл рдПрд▓рдИрдбреА рдХреЛ рдмреНрд▓рд┐рдВрдХ рдХрд░рддреЗ рд╣реИрдВред

рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рджреМрд░рд╛рди, stm32f1xx_hal_msp.c рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ

рд╢реВрдиреНрдп рдлрд╝рдВрдХреНрд╢рди HAL_MspInit (рд╢реВрдиреНрдп) рд╕реЗ рдЬреБрдбрд╝реА рддреНрд░реБрдЯрд┐ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИред
HAL_Driver рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдЦреЛрд▓реЗрдВ, / src рдкрд░ рдЬрд╛рдПрдВ, рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓реЗрдВ stm32f1xx_hal_msp_template.c рдФрд░ рдЙрд╕реА рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ:



рдЖрд╢реНрд╡рд╕реНрдд рдХрд░рдирд╛ (рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЗрдХрдЯреНрдард╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)

рдореИрдВ рдирд┐рдпрдВрддреНрд░рдХ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдВрдЯ-рдлреНрд▓реИрд╢ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ред

 $ sudo apt-get install cmake $ sudo apt-get install libusb-1.0.0 $ git clone github.com/texane/stlink.git $ cd stlink $ make release $ cd build/Release; sudo make install $ sudo ldconfig 

рдПрд╕рдЯреА рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдПрд╕рдЯреА рд▓рд┐рдВрдХ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЬрд╛рдБрдЪ:

 $ st-info тАФprobe 

рдЬрд╡рд╛рдм рдореЗрдВ, рд╣рдореЗрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

 Found 1 stlink programmers serial: 563f7206513f52504832153f openocd: "\x56\x3f\x72\x06\x51\x3f\x52\x50\x48\x32\x15\x3f" flash: 262144 (pagesize: 2048) sram: 65536 chipid: 0x0414 descr: F1 High-density device 

рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдлреНрд▓рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдлреНрд▓реИрд╢ рдХрд░реЗрдВ:

 cd workspace/ros_stm32_2/ st-flash write Debug/ros_stm32_2.bin 0x8000000 

рд╣рдо рдЬрд╛рдБрдЪ рдХреАред рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред

рдЪреВрдВрдХрд┐ ROS рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ C ++ рдореЗрдВ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИрдВ, рд╣рдо рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ main.c, stm32f1xx_hal_msp.c, stm32f1xx_it.c рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ .cpp рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВред

рд╣рдо рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдмрдврд╝рдиреЗ рдХреЗ рд╕рд╛рде рдореЗрд░реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдХреНрд▓реЛрдирд┐рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ STM32 рдкрд░ рд░реЛрдЬрд░реНрд╕рд┐рдпрд▓ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВред

 git clone https://gitlab.com/ivliev123/ros_lib 

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреНрд▓реЛрди рдлрд╝реЛрд▓реНрдбрд░ рдбрд╛рд▓реЗрдВ





рдЖрдЗрдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ (рдЧреБрдг) рдкрд░ рдЬрд╛рдПрдВ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ, рдЬрд╛рдПрдВ ...







рд▓реЗрдЖрдЙрдЯ рдмрджрд▓рдирд╛





рд╣рдо рдЕрдиреБрдХреВрд▓рди рдХрд░рддреЗ рд╣реИрдВ





рдЦреИрд░, рдЕрдм рд╣рдо main.cpp рдореЗрдВ рдХреБрдЫ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд▓рдЧрднрдЧ рдЦрд╛рд▓реА рд╣реИ, рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рд╣рдо рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣ рд╣реИ ROS рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдФрд░ ROS рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдпрд╛ рдмрд▓реНрдХрд┐, рдЗрди рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ред

 #include <ros.h> #include <std_msgs/String.h> #include <std_msgs/UInt16.h> 

рдПрдХ рдиреЛрдб рдмрдирд╛рдПрдВ рдЬреЛ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ

 void led_cb( const std_msgs::UInt16& cmd_msg){ HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); } ros::NodeHandle nh; std_msgs::String str_msg; ros::Publisher chatter("chatter", &str_msg); ros::Subscriber<std_msgs::UInt16> sub("led", led_cb); 

рдиреЛрдб рдФрд░ рд╡рд┐рд╖рдпреЛрдВ рдХреЛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВред

  nh.initNode(); nh.advertise(chatter); nh.subscribe(sub); 

рд╣рдо рд╕рдордп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд░ рднреА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рдХреНрдпрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВрдЧреЗред

 const char * hello = "Hello World!!"; int chatter_interval = 1000.0 / 2; int chatter_last = HAL_GetTick(); 

рдЬрдмрдХрд┐ рд▓реВрдк рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрдВрдЧреЗред рд╣рдо рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреЗ рдмрд╛рдж рдЕрдкрдирд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВрдЧреЗред

  if (nh.connected()) { if(HAL_GetTick() - chatter_last > chatter_interval) { str_msg.data = hello; chatter.publish(&str_msg); chatter_last = HAL_GetTick(); } } nh.spinOnce(); 

рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛ред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐рдпрд╛рдБ рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддреА рд╣реИрдВ:







рдлрд┐рд░ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдФрд░ рдлреНрд▓реИрд╢ред

рдЕрдм рд╕реАрдзреЗ рдЖрд░рдУрдПрд╕ рд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдПрдХ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ, ROS рдЪрд▓рд╛рдПрдБред

 roscore 

рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдиреЛрдбред

 rosrun rosserial_python serial_node.py /dev/ttyUSB0 

рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ

 [INFO] [1551788593.109252]: ROS Serial Python Node [INFO] [1551788593.124198]: Connecting to /dev/ttyUSB0 at 57600 baud [INFO] [1551788595.233498]: Requesting topics... [INFO] [1551788595.258554]: Note: publish buffer size is 2048 bytes [INFO] [1551788595.259532]: Setup publisher on chatter [std_msgs/String] [INFO] [1551788595.275572]: Note: subscribe buffer size is 2048 bytes [INFO] [1551788595.276682]: Setup subscriber on led [std_msgs/UInt16] 

рдЕрдЧрд▓рд╛, рдПрдХ рдирдИ рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛ рдореЗрдВ, рд╡рд┐рд╖рдпреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ

 rostopic list 

рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╖рдп рдорд┐рд▓рддреЗ рд╣реИрдВ:

 /chatter /diagnostics /led /rosout /rosout_agg 

рдмрдХрдмрдХ рдХреЗ рд╡рд┐рд╖рдп рдореЗрдВ, рдирд┐рдпрдВрддреНрд░рдХ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

рд╣рдо рдЯреАрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рд╕реБрди рд╕рдХрддреЗ рд╣реИрдВ

 rostopic echo /chatter 



рдЕрдм рд╡рд┐рд╖рдп рдХреЗ рдиреЗрддреГрддреНрд╡ рдореЗрдВ рдбреЗрдЯрд╛ рднреЗрдЬреЗрдВред

 rostopic pub /led std_msgs/UInt16 "data: 0" 

рдФрд░ рд╣рдореЗрдВ рдПрд▓рдИрдбреА рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред

Source: https://habr.com/ru/post/hi443022/


All Articles