diff --git a/README.md b/README.md index e476717..0ec5176 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,8 @@ Hardware components are written for the Waveshare Motor Driver HAT and MPU6050 s - [WiringPi](#wiringpi) - [MPU6050 library](#mpu6050-library) - [Sourcing ROS Installation](#sourcing-ros-installation) - - [Gazebo](#gazebo) + - [Gazebo Classic](#gazebo-classic) + - [Gazebo Fortress](#gazebo-fortress) - [Display lidarbot model in RViz](#display-lidarbot-model-in-rviz) - [Teleoperation](#teleoperation) - [Twist mux](#twist-mux) @@ -32,22 +33,24 @@ Hardware components are written for the Waveshare Motor Driver HAT and MPU6050 s - [Raspberry Pi Camera](#raspberry-pi-camera) - [MPU6050 offsets](#mpu6050-offsets) - [MPU6050 covariances](#mpu6050-covariances) - - [📡 Network Configuration](#network-configuration) - - [Differential Drive Controller](#differential-drive-controller) - - [IMU Sensor Broadcaster](#imu-sensor-broadcaster) + - [Network Configuration](#network-configuration) + - [ros2 control Framework](#ros2-control-framework) + - [Differential Drive Controller](#differential-drive-controller) + - [Joint State Broadcaster](#joint-state-broadcaster) + - [IMU Sensor Broadcaster](#imu-sensor-broadcaster) - [Test Drive](#test-drive) - - [Gazebo](#gazebo-1) + - [Gazebo](#gazebo) - [Lidarbot](#lidarbot-1) - [Motor Connection Checks](#motor-connection-checks) - [Mapping](#mapping) - - [Gazebo](#gazebo-2) + - [Gazebo](#gazebo-1) - [Lidarbot](#lidarbot-2) - [Aruco package](#aruco-package) - [Generate ArUco marker](#generate-aruco-marker) - [Webcam calibration](#webcam-calibration) - - [Aruco trajectory visualizer node](#aruco-trajectory-visualizer-node) + - [Aruco trajectory visualizer node](#aruco-trajectory-visualizer-node) - [Navigation](#navigation) - - [Gazebo](#gazebo-3) + - [Gazebo](#gazebo-2) - [Lidarbot](#lidarbot-3) - [Acknowledgment](#acknowledgment) @@ -594,7 +597,7 @@ Paste covariance arrays in the imu_broadcaster ros__parameters section in lidarb ``` -## 📡 Network Configuration +## Network Configuration TODO: update with Mini Router setup @@ -624,10 +627,20 @@ A static IP address was assigned to lidarbot on the router for easy discoverabil ***NOTE:*** Best practices might not have been employed in establishing communication between the two systems. The approach proposed [here](https://docs.ros.org/en/humble/How-To-Guides/Installation-Troubleshooting.html) was unable to be replicated in this project but others might find better success. -## Differential Drive Controller +## ros2 control Framework + +
+ +
+ +Image adapted from [Denis Å togl](https://vimeo.com/649651707) (CC-BY) + +### Differential Drive Controller +### Joint State Broadcaster + +### IMU Sensor Broadcaster -## IMU Sensor Broadcaster ## Test Drive @@ -865,6 +878,12 @@ ros2 launch lidarbot_aruco trajectory_visualizer_launch.py ## Navigation ++ +
+ +Image adapted from [Linorobot2](https://github.com/linorobot/linorobot2) + TODO: Brief overview ### Gazebo diff --git a/docs/images/nav2_topics.png b/docs/images/nav2_topics.png new file mode 100644 index 0000000..770b5ab Binary files /dev/null and b/docs/images/nav2_topics.png differ diff --git a/docs/images/ros2_control_arch.png b/docs/images/ros2_control_arch.png new file mode 100644 index 0000000..9678012 Binary files /dev/null and b/docs/images/ros2_control_arch.png differ diff --git a/lidarbot_bringup/launch/lidarbot_bringup_launch.py b/lidarbot_bringup/launch/lidarbot_bringup_launch.py index 936090e..baefbd4 100644 --- a/lidarbot_bringup/launch/lidarbot_bringup_launch.py +++ b/lidarbot_bringup/launch/lidarbot_bringup_launch.py @@ -140,6 +140,7 @@ def generate_launch_description(): package="robot_localization", executable="ekf_node", parameters=[ekf_params_file], + remappings=[("/odometry/filtered", "/odom")], ) # Start joystick node diff --git a/lidarbot_gazebo/launch/gazebo_launch.py b/lidarbot_gazebo/launch/gazebo_launch.py index aa832ff..c7187b4 100644 --- a/lidarbot_gazebo/launch/gazebo_launch.py +++ b/lidarbot_gazebo/launch/gazebo_launch.py @@ -117,6 +117,7 @@ def generate_launch_description(): package="robot_localization", executable="ekf_node", parameters=[ekf_params_file], + remappings=[("/odometry/filtered", "/odom")], ) # Start joystick node for use with ros2_control diff --git a/lidarbot_gz/launch/gz_launch.py b/lidarbot_gz/launch/gz_launch.py index d808f4a..4e58b37 100644 --- a/lidarbot_gz/launch/gz_launch.py +++ b/lidarbot_gz/launch/gz_launch.py @@ -7,7 +7,6 @@ from launch import LaunchDescription from launch.actions import ( DeclareLaunchArgument, - ExecuteProcess, IncludeLaunchDescription, AppendEnvironmentVariable, ) @@ -153,6 +152,7 @@ def generate_launch_description(): package="robot_localization", executable="ekf_node", parameters=[ekf_params_file], + remappings=[("/odometry/filtered", "/odom")], ) # Start joystick node for use with ros2_control