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