Raspberry Pi & Ubuntu Server & ROS2(Foxy)에서 마이크로-ROS & Raspberry Pico의 동작을 확인합니다
8249 단어 Raspberry PiROS2microrostech
조금이라도 도움이 됐으면 좋겠어요.
기재 목적
나는 마이크로-ROS로 랩베리 피코를 이동하고 싶었지만 정리된 자료를 찾지 못했다.
Pico의 펌웨어는 Ubuntu PC(20.04LTC &foxy)가 제작해 설치한 것이다.
컨디션
항목
값
OS
ROS
PC
Thinkpad x260
Ubuntu Desktop 20.04
Foxy
SBC
Raspberry Pi 4(4GB)
Ubuntu Server 20.04
Foxy
PC의 Ubuntu에서 펌웨어 개발 환경 만들기
Pico SDK 설치
참조:
# Install dependencies
sudo apt install cmake g++ gcc-arm-none-eabi doxygen libnewlib-arm-none-eabi git python3
git clone --recurse-submodules https://github.com/raspberrypi/pico-sdk.git $HOME/pico-sdk
# Configure environment
echo "export PICO_SDK_PATH=$HOME/pico-sdk" >> ~/.bashrc
source ~/.bashrc
github에서 micro-Los support package를 clone으로 시작하여 example을 Pico에 쓰기
mkdir ~/pico
cd ~/pico
git clone https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk.git -b foxy
mkdir build
cd build
cmake ..
make
# To flash, hold the boot button, plug the USB and run:
cp pico_micro_ros_example.uf2 /media/$USER/RPI-RP2
Raspberry Pi4의 Ubuntu에서 마이크로-ROS 실행 환경 만들기
ROS2 Foxy에 마이크로-ROS 구축 환경 만들기
참조:
# Source the ROS 2 installation
source /opt/ros/$ROS_DISTRO/setup.bash
# Create a workspace and download the micro-ROS tools
mkdir microros_ws
cd microros_ws
git clone -b $ROS_DISTRO https://github.com/micro-ROS/micro_ros_setup.git src/micro_ros_setup
# Update dependencies using rosdep
sudo apt update && rosdep update
rosdep install --from-path src --ignore-src -y
# Install pip
sudo apt-get install python3-pip
# Build micro-ROS tools and source them
colcon build
source install/local_setup.bash
마이크로-ROS 에이전트 만들기
참조:
# Download micro-ROS-Agent packages
ros2 run micro_ros_setup create_agent_ws.sh
# Build step
ros2 run micro_ros_setup build_agent.sh
source install/local_setup.bash
마이크로-Los 에이전트 시작
펌웨어가 새겨진 Pico를 Raspberry Pi에 연결합니다.
# Run a micro-ROS agent
ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/ttyACM0
디바이스의 포트 이름은 환경에 따라 다릅니다.매번 찾아보거나 udev로 포트 이름을 고정합니다.순조롭다면 아래와 같다.잘 안 되면 USB 케이블을 다시 꽂으세요.
그래도 안 되면
/dev/ttyACM0
케이블이 충전전용인지 확인해 보세요[1636278871.515104] info | TermiosAgentLinux.cpp | init | Serial port not found. | device: /dev/ttyACM0, error 2, waiting for connection...
[1636278872.518239] info | TermiosAgentLinux.cpp | init | Serial port not found. | device: /dev/ttyACM0, error 2, waiting for connection...
[1636278873.521781] info | TermiosAgentLinux.cpp | init | Serial port not found. | device: /dev/ttyACM0, error 2, waiting for connection...
[1636278873.806098] info | TermiosAgentLinux.cpp | init | running... | fd: 3
[1636278873.806299] info | Root.cpp | set_verbose_level | logger setup | verbose_level: 4
[1636278874.283705] info | Root.cpp | create_client | create | client_key: 0x19A5DA75, session_id: 0x81
[1636278874.283839] info | SessionManager.hpp | establish_session | session established | client_key: 0x19A5DA75, address: 0
[1636278874.316559] info | ProxyClient.cpp | create_participant | participant created | client_key: 0x19A5DA75, participant_id: 0x000(1)
[1636278874.321438] info | ProxyClient.cpp | create_topic | topic created | client_key: 0x19A5DA75, topic_id: 0x000(2), participant_id: 0x000(1)
[1636278874.323820] info | ProxyClient.cpp | create_publisher | publisher created | client_key: 0x19A5DA75, publisher_id: 0x000(3), participant_id: 0x000(1)
[1636278874.328616] info | ProxyClient.cpp | create_datawriter | datawriter created | client_key: 0x19A5DA75, datawriter_id: 0x000(5), publisher_id: 0x000(3)
다른 Terminal 중 노드가 일어서고,publisher가 있고,publish의 데이터가 어떤지 보여 줍니다.$ ros2 node list
/pico_node
$ ros2 topic list
/parameter_events
/pico_publisher
/rosout
$ ros2 topic info /pico_publisher
Type: std_msgs/msg/Int32
Publisher count: 1
Subscription count: 0
$ ros2 topic echo /pico_publisher
data: 390
---
data: 391
---
data: 392
---
data: 393
---
^C$
최후
로스세리알로 만든 로봇의 모터 제어부를 ROS2로 옮기고 싶어요.
Reference
이 문제에 관하여(Raspberry Pi & Ubuntu Server & ROS2(Foxy)에서 마이크로-ROS & Raspberry Pico의 동작을 확인합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/katsuitoh/articles/0d33c3e95ff466텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)