Repository con il codice per la creazione di un robot tramite framework ROS2 (Foxy)
sudo apt install libraspberrypi-bin v4l-utils ros-${ROS_DISTRO}-v4l2-camera ros-${ROS_DISTRO}-image-transport-plugins ros-${ROS_DISTRO}-camera-calibration-parsers ros-${ROS_DISTRO}-camera-info-manager ros-${ROS_DISTRO}-launch-testing-ament-cmake
sudo apt install ros-${ROS_DISTRO}-rosbridge-server ros-${ROS_DISTRO}-rosbridge-suite
sudo apt install ros-${ROS_DISTRO}-slam-toolbox
sudo apt install python3-pip -y
pip install RPi.GPIO xacro
sudo apt install rpi.gpio-common ros-${ROS_DISTRO}-gazebo-ros-pkgs ros-${ROS_DISTRO}-rviz2
python3-roslaunch ros-${ROS_DISTRO}-rqt-image-view
cd ~
git clone https://github.com/riolaf05/robot-ros
cd robot-ros
colcon build
source install/setup.bash
- robot state publisher
- Gazebo
- Rviz
ros2 launch robot_ros test_mobile_robot_1.launch.py
- Nav2 (serve per settare punti di arrivo e partenza e generare il percorso, necessita di
/map
e/odom
),/odom
è generato dal nododiff_drive
(simulato in Gazebo) che serve per fare l'odometria, cioè la stima della posizione del robot dati i comandi di movimento che gli sono stati dati (su/cmd_vel
)
ros2 launch nav2_bringup navigation_launch.py use_sim_time:=True
TODO: integrarlo nel launch file
- Slam Toolbox (è uno dei tool per generare lo slam, fornisce
/map
)
ros2 launch slam_toolbox online_async_launch.py use_sim_time:=True
TODO: integrarlo nel launch file
- robot state publisher
- controller hardware custom fatto in python (
robot_ros/cmd_to_pwm_driver.py
) - ROS bridge per web server
ros2 launch robot_ros launch_robot.launch.py
Lanciare webserver/index.html
(aggiornando l'indirizzo IP) per la console web.
Lanciare ROS bridge
ros2 launch rosbridge_server rosbridge_websocket_launch.xml
Salva le mappe
ros2 run nav2_map_server map_saver_cli -f maps/my_map_1
Visualizza il grafo di nodi e topic
rqt_graph
Visualizza l'albero delle trasformazioni (vedi frames.pdf
)
ros2 run tf2_tools view_frames.py
Tastiera da console
ros2 run turtlebot3_teleop teleop_keyboard