diff --git a/littlebot_control/CMakeLists.txt b/littlebot_control/CMakeLists.txt
index ed2691b..0f9fb3b 100755
--- a/littlebot_control/CMakeLists.txt
+++ b/littlebot_control/CMakeLists.txt
@@ -5,7 +5,7 @@ project(littlebot_control)
find_package(ament_cmake REQUIRED)
-install(DIRECTORY config launch
+install(DIRECTORY config launch rviz
DESTINATION share/${PROJECT_NAME}
)
diff --git a/littlebot_control/config/control.yaml b/littlebot_control/config/control.yaml
index 797ba16..f75c34b 100755
--- a/littlebot_control/config/control.yaml
+++ b/littlebot_control/config/control.yaml
@@ -28,7 +28,7 @@ littlebot_velocity_controller:
twist_covariance_diagonal: [0.001, 0.001, 0.001, 0.001, 0.001, 0.01]
open_loop: false
- enable_odom_tf: false
+ enable_odom_tf: true
cmd_vel_timeout: 0.5
#publish_limited_velocity: true
diff --git a/littlebot_control/launch/spawn_diffdriver_controller.launch.py b/littlebot_control/launch/spawn_diffdriver_controller.launch.py
new file mode 100644
index 0000000..1f59eb3
--- /dev/null
+++ b/littlebot_control/launch/spawn_diffdriver_controller.launch.py
@@ -0,0 +1,46 @@
+from launch_ros.actions import Node
+from launch import LaunchDescription
+from launch.actions import RegisterEventHandler
+from launch.event_handlers import OnProcessExit
+
+
+def generate_launch_description():
+ joint_state_broadcaster_spawner = Node(
+ package="controller_manager",
+ executable="spawner",
+ arguments=["joint_state_broadcaster",
+ "--controller-manager", "/controller_manager"],
+ )
+
+ robot_controller_spawner = Node(
+ package="controller_manager",
+ executable="spawner",
+ arguments=["littlebot_velocity_controller", "--controller-manager",
+ "/controller_manager"],
+ )
+
+ rviz_node = Node(
+ package="rviz2",
+ executable="rviz2",
+ name="rviz2",
+ output="log",
+ )
+
+ delay_robot_controller_after_joint_state_spawner = RegisterEventHandler(
+ event_handler=OnProcessExit(
+ target_action=joint_state_broadcaster_spawner,
+ on_exit=[robot_controller_spawner],
+ )
+ )
+ delay_rviz_after_robot_controller = RegisterEventHandler(
+ event_handler=OnProcessExit(
+ target_action=robot_controller_spawner,
+ on_exit=[rviz_node],
+ )
+ )
+
+ return LaunchDescription([
+ joint_state_broadcaster_spawner,
+ delay_robot_controller_after_joint_state_spawner,
+ delay_rviz_after_robot_controller
+ ])
diff --git a/littlebot_control/package.xml b/littlebot_control/package.xml
index 106b9e2..41953a4 100755
--- a/littlebot_control/package.xml
+++ b/littlebot_control/package.xml
@@ -10,15 +10,17 @@
ament_cmake
- controller_manager
- diff_drive_controller
- interactive_marker_twist_server
- joint_state_broadcaster
- joint_trajectory_controller
- joy
- robot_state_publisher
- teleop_twist_joy
- twist_mux
+
+
+ ros2_control
+ ros2_controllers
+
+
+
+
+
+
+
ament_cmake
diff --git a/littlebot_control/rviz/diff_drive.rviz b/littlebot_control/rviz/diff_drive.rviz
new file mode 100644
index 0000000..32a8f12
--- /dev/null
+++ b/littlebot_control/rviz/diff_drive.rviz
@@ -0,0 +1,235 @@
+Panels:
+ - Class: rviz_common/Displays
+ Help Height: 78
+ Name: Displays
+ Property Tree Widget:
+ Expanded:
+ - /Global Options1
+ - /Status1
+ - /RobotModel1
+ Splitter Ratio: 0.5
+ Tree Height: 570
+ - Class: rviz_common/Selection
+ Name: Selection
+ - Class: rviz_common/Tool Properties
+ Expanded:
+ - /2D Goal Pose1
+ - /Publish Point1
+ Name: Tool Properties
+ Splitter Ratio: 0.5886790156364441
+ - Class: rviz_common/Views
+ Expanded:
+ - /Current View1
+ Name: Views
+ Splitter Ratio: 0.5
+ - Class: rviz_common/Time
+ Experimental: false
+ Name: Time
+ SyncMode: 0
+ SyncSource: ""
+Visualization Manager:
+ Class: ""
+ Displays:
+ - Alpha: 0.5
+ Cell Size: 1
+ Class: rviz_default_plugins/Grid
+ Color: 160; 160; 164
+ Enabled: true
+ Line Style:
+ Line Width: 0.029999999329447746
+ Value: Lines
+ Name: Grid
+ Normal Cell Count: 0
+ Offset:
+ X: 0
+ Y: 0
+ Z: 0
+ Plane: XY
+ Plane Cell Count: 10
+ Reference Frame:
+ Value: true
+ - Alpha: 1
+ Class: rviz_default_plugins/RobotModel
+ Collision Enabled: false
+ Description File: ""
+ Description Source: Topic
+ Description Topic:
+ Depth: 5
+ Durability Policy: Volatile
+ History Policy: Keep Last
+ Reliability Policy: Reliable
+ Value: /robot_description
+ Enabled: true
+ Links:
+ All Links Enabled: true
+ Expand Joint Details: false
+ Expand Link Details: false
+ Expand Tree: false
+ Link Tree Style: Links in Alphabetic Order
+ base_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ caster:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ chassis_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ free_wheel:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ imu_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ left_wheel:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ right_wheel:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ Mass Properties:
+ Inertia: false
+ Mass: false
+ Name: RobotModel
+ TF Prefix: ""
+ Update Interval: 0
+ Value: true
+ Visual Enabled: true
+ - Class: rviz_default_plugins/TF
+ Enabled: true
+ Frame Timeout: 15
+ Frames:
+ All Enabled: true
+ base_link:
+ Value: true
+ caster:
+ Value: true
+ chassis_link:
+ Value: true
+ free_wheel:
+ Value: true
+ imu_link:
+ Value: true
+ left_wheel:
+ Value: true
+ odom:
+ Value: true
+ right_wheel:
+ Value: true
+ Marker Scale: 1
+ Name: TF
+ Show Arrows: true
+ Show Axes: true
+ Show Names: false
+ Tree:
+ odom:
+ base_link:
+ chassis_link:
+ caster:
+ free_wheel:
+ {}
+ imu_link:
+ {}
+ left_wheel:
+ {}
+ right_wheel:
+ {}
+ Update Interval: 0
+ Value: true
+ Enabled: true
+ Global Options:
+ Background Color: 48; 48; 48
+ Fixed Frame: odom
+ Frame Rate: 30
+ Name: root
+ Tools:
+ - Class: rviz_default_plugins/Interact
+ Hide Inactive Objects: true
+ - Class: rviz_default_plugins/MoveCamera
+ - Class: rviz_default_plugins/Select
+ - Class: rviz_default_plugins/FocusCamera
+ - Class: rviz_default_plugins/Measure
+ Line color: 128; 128; 0
+ - Class: rviz_default_plugins/SetInitialPose
+ Covariance x: 0.25
+ Covariance y: 0.25
+ Covariance yaw: 0.06853891909122467
+ Topic:
+ Depth: 5
+ Durability Policy: Volatile
+ History Policy: Keep Last
+ Reliability Policy: Reliable
+ Value: /initialpose
+ - Class: rviz_default_plugins/SetGoal
+ Topic:
+ Depth: 5
+ Durability Policy: Volatile
+ History Policy: Keep Last
+ Reliability Policy: Reliable
+ Value: /goal_pose
+ - Class: rviz_default_plugins/PublishPoint
+ Single click: true
+ Topic:
+ Depth: 5
+ Durability Policy: Volatile
+ History Policy: Keep Last
+ Reliability Policy: Reliable
+ Value: /clicked_point
+ Transformation:
+ Current:
+ Class: rviz_default_plugins/TF
+ Value: true
+ Views:
+ Current:
+ Class: rviz_default_plugins/Orbit
+ Distance: 5.098728656768799
+ Enable Stereo Rendering:
+ Stereo Eye Separation: 0.05999999865889549
+ Stereo Focal Distance: 1
+ Swap Stereo Eyes: false
+ Value: false
+ Focal Point:
+ X: -0.0343431793153286
+ Y: 0.13100281357765198
+ Z: -0.0660405084490776
+ Focal Shape Fixed Size: true
+ Focal Shape Size: 0.05000000074505806
+ Invert Z Axis: false
+ Name: Current View
+ Near Clip Distance: 0.009999999776482582
+ Pitch: 0.6753981113433838
+ Target Frame:
+ Value: Orbit (rviz)
+ Yaw: 1.0353977680206299
+ Saved: ~
+Window Geometry:
+ Displays:
+ collapsed: false
+ Height: 884
+ Hide Left Dock: false
+ Hide Right Dock: false
+ QMainWindow State: 000000ff00000000fd00000004000000000000015f000002ccfc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005f00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c0061007900730100000041000002cc000000d000fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f000002ccfc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a005600690065007700730100000041000002cc000000af00fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e100000197000000030000054c00000040fc0100000002fb0000000800540069006d006501000000000000054c000002a700fffffffb0000000800540069006d00650100000000000004500000000000000000000002d2000002cc00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
+ Selection:
+ collapsed: false
+ Time:
+ collapsed: false
+ Tool Properties:
+ collapsed: false
+ Views:
+ collapsed: false
+ Width: 1356
+ X: 2276
+ Y: 64
diff --git a/littlebot_description/gazebo/littlebot.gazebo.xacro b/littlebot_description/gazebo/littlebot.gazebo.xacro
index dbf71b2..2326276 100644
--- a/littlebot_description/gazebo/littlebot.gazebo.xacro
+++ b/littlebot_description/gazebo/littlebot.gazebo.xacro
@@ -2,15 +2,63 @@
+
+
+
+
+
+ ign_ros2_control/IgnitionSystem
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(find littlebot_control)/config/control.yaml
+
+
-
+
-
+
-
+
-
+
-
-
-
-
-
+
+
+
+
+
diff --git a/littlebot_description/urdf/littlebot_body.urdf.xacro b/littlebot_description/urdf/littlebot_body.urdf.xacro
index 5f910a5..c8b8d45 100644
--- a/littlebot_description/urdf/littlebot_body.urdf.xacro
+++ b/littlebot_description/urdf/littlebot_body.urdf.xacro
@@ -52,7 +52,7 @@
-
+
-
+
-
+
diff --git a/littlebot_description/urdf/littlebot_description.urdf.xacro b/littlebot_description/urdf/littlebot_description.urdf.xacro
index 95eeb1e..71156dc 100755
--- a/littlebot_description/urdf/littlebot_description.urdf.xacro
+++ b/littlebot_description/urdf/littlebot_description.urdf.xacro
@@ -9,10 +9,10 @@
-
+
-
+
@@ -34,10 +34,10 @@
-
+
-
+