diff --git a/src/sherpa/config/ackermann_controller.yaml b/src/sherpa/config/ackermann_controller.yaml
new file mode 100644
index 0000000..85a353a
--- /dev/null
+++ b/src/sherpa/config/ackermann_controller.yaml
@@ -0,0 +1,34 @@
+
+controller_manager:
+ ros__parameters:
+ update_rate: 100
+
+ ackermann_controller:
+ type: ackermann_steering_controller/AckermannSteeringController
+
+ joint_state_broadcaster:
+ type: "joint_state_broadcaster/JointStateBroadcaster"
+
+
+ackermann_controller:
+ ros__parameters:
+ position_feedback: false
+
+ # Interfaces
+ rear_wheels_names: ["wheel_bl_joint", "wheel_br_joint"]
+ front_wheels_names: ["steer_fl_joint", "steer_fr_joint"]
+
+ # Physical parameters
+ wheelbase: 0.6 # Distance between front and rear axles [m]
+ front_wheel_track: 0.4 # Distance between front wheels [m]
+ rear_wheel_track: 0.5 # Distance between rear wheels [m]
+ front_wheels_radius: 0.15 # Radius of wheels [m]
+ rear_wheels_radius: 0.15 # Radius of wheels [m]
+
+ # Limits
+ max_steering_angle: 0.785 # [rad] ~45 degrees
+ max_speed: 10.0 # [m/s]
+ min_speed: -5.0 # [m/s]
+
+ # Frame config
+ reference_frame: base_link
diff --git a/src/sherpa/launch/simulator.launch.py b/src/sherpa/launch/simulator.launch.py
index 9f5796d..a8da1f7 100644
--- a/src/sherpa/launch/simulator.launch.py
+++ b/src/sherpa/launch/simulator.launch.py
@@ -49,7 +49,7 @@ def generate_launch_description():
controller = Node(
package='controller_manager',
executable='spawner',
- arguments=['mecanum_controller'],
+ arguments=['ackermann_controller'],
output='screen'
)
@@ -89,7 +89,7 @@ def generate_launch_description():
arguments=[
"--ros-args",
"-p",
- f"config_file:={os.path.join(get_package_share_directory('sherpa'), 'config', 'gz_bridge.yaml')}",
+ f"config_file:={os.path.join(pkg_share, 'config', 'gz_bridge.yaml')}",
]
)
diff --git a/src/sherpa/urdf/components/wheel.xacro b/src/sherpa/urdf/components/wheel.xacro
new file mode 100644
index 0000000..5f785a2
--- /dev/null
+++ b/src/sherpa/urdf/components/wheel.xacro
@@ -0,0 +1,84 @@
+
+
+
+
+ 0.05 0.05 0.2 05
+ 0.9 0.9 0.9 1
+ 0.1 0.1 0.1 1
+ 0 0 0 0
+
+
+
+
+ 0.2 0.2 0.2 1
+ 0.25 0.25 0.25 1
+ 0.2 0.2 0.2 1
+ 0 0 0 0 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.5
+ 1.2
+
+
+ 0.01
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/sherpa/urdf/meshes/wheel_cape.stl b/src/sherpa/urdf/meshes/wheel_cape.stl
new file mode 100644
index 0000000..460f571
Binary files /dev/null and b/src/sherpa/urdf/meshes/wheel_cape.stl differ
diff --git a/src/sherpa/urdf/meshes/wheel_spoke.stl b/src/sherpa/urdf/meshes/wheel_spoke.stl
new file mode 100644
index 0000000..0e8d963
Binary files /dev/null and b/src/sherpa/urdf/meshes/wheel_spoke.stl differ
diff --git a/src/sherpa/urdf/sherpa.xacro b/src/sherpa/urdf/sherpa.xacro
index 0727abe..3822985 100644
--- a/src/sherpa/urdf/sherpa.xacro
+++ b/src/sherpa/urdf/sherpa.xacro
@@ -2,7 +2,7 @@
- $(find sherpa)/config/mecanum_controller.yaml
+ $(find sherpa)/config/ackermann_controller.yaml
@@ -21,34 +21,66 @@
-
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
gz_ros2_control/GazeboSimSystem
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -60,5 +92,15 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/sherpa/worlds/empty.world b/src/sherpa/worlds/empty.world
index 26d9fdf..56e0c7f 100644
--- a/src/sherpa/worlds/empty.world
+++ b/src/sherpa/worlds/empty.world
@@ -36,7 +36,7 @@
0.05
0.01
- true
+ false