Skip to content

Commit adcba1e

Browse files
committed
ackermann works with reference acceptance
1 parent 0594c9b commit adcba1e

16 files changed

+91
-395
lines changed

example_11/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ install(
4949
DESTINATION include/ros2_control_demo_example_11
5050
)
5151
install(
52-
DIRECTORY description/launch description/ros2_control description/urdf description/rviz
52+
DIRECTORY description/launch description/ros2_control description/urdf
5353
DESTINATION share/ros2_control_demo_example_11
5454
)
5555
install(

example_11/bringup/config/carlikebot_controllers.yaml

-23
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,6 @@ controller_manager:
88
ackermann_steering_controller:
99
type: ackermann_steering_controller/AckermannSteeringController
1010

11-
bicycle_steering_controller:
12-
type: bicycle_steering_controller/BicycleSteeringController
13-
1411

1512
ackermann_steering_controller:
1613
ros__parameters:
@@ -33,23 +30,3 @@ ackermann_steering_controller:
3330
front_wheels_radius: 0.05
3431
rear_wheels_radius: 0.05
3532

36-
bicycle_steering_controller:
37-
ros__parameters:
38-
39-
reference_timeout: 2.0
40-
front_steering: true
41-
open_loop: false
42-
velocity_rolling_window_size: 10
43-
position_feedback: false
44-
use_stamped_vel: false
45-
rear_wheels_names: [rear_wheel_joint]
46-
front_wheels_names: [steering_axis_joint]
47-
48-
odom_frame_id: odom
49-
base_frame_id: base_link
50-
enable_odom_tf: true
51-
52-
53-
wheelbase: 0.325
54-
front_wheel_radius: 0.05
55-
rear_wheel_radius: 0.05

example_11/bringup/launch/carlikebot.launch.py

+14-34
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,9 @@ def generate_launch_description():
3232
description="Start RViz2 automatically with this launch file.",
3333
)
3434
)
35-
declared_arguments.append(
36-
DeclareLaunchArgument(
37-
"sim",
38-
default_value="true",
39-
description="Whether to start controllers for simulation or real hardware.",
40-
)
41-
)
4235

4336
# Initialize Arguments
4437
gui = LaunchConfiguration("gui")
45-
sim = LaunchConfiguration("sim")
4638

4739
# Get URDF via xacro
4840
robot_description_content = Command(
@@ -52,8 +44,6 @@ def generate_launch_description():
5244
PathJoinSubstitution(
5345
[FindPackageShare("ros2_control_demo_example_11"), "urdf", "carlikebot.urdf.xacro"]
5446
),
55-
" sim:=",
56-
sim,
5747
]
5848
)
5949
robot_description = {"robot_description": robot_description_content}
@@ -66,7 +56,7 @@ def generate_launch_description():
6656
]
6757
)
6858
rviz_config_file = PathJoinSubstitution(
69-
[FindPackageShare("ros2_control_demo_example_11"), "rviz", "carlikebot.rviz"]
59+
[FindPackageShare("ros2_control_demo_description"), "carlikebot/rviz", "carlikebot.rviz"]
7060
)
7161

7262
control_node = Node(
@@ -80,20 +70,9 @@ def generate_launch_description():
8070
executable="robot_state_publisher",
8171
output="both",
8272
parameters=[robot_description],
83-
# remappings=[
84-
# ("/ackermann_steering_controller/reference_unstamped", "/cmd_vel"),
85-
# ],
86-
condition=IfCondition(sim),
87-
)
88-
robot_state_pub_bicycle_node = Node(
89-
package="robot_state_publisher",
90-
executable="robot_state_publisher",
91-
output="both",
92-
parameters=[robot_description],
93-
# remappings=[
94-
# ("/bicycle_steering_controller/reference_unstamped", "/cmd_vel"),
95-
# ],
96-
condition=UnlessCondition(sim),
73+
remappings=[
74+
("/ackermann_steering_controller/reference_unstamped", "/cmd_vel"),
75+
],
9776
)
9877
rviz_node = Node(
9978
package="rviz2",
@@ -114,13 +93,6 @@ def generate_launch_description():
11493
package="controller_manager",
11594
executable="spawner",
11695
arguments=["ackermann_steering_controller", "--controller-manager", "/controller_manager"],
117-
condition=IfCondition(sim),
118-
)
119-
robot_bicycle_controller_spawner = Node(
120-
package="controller_manager",
121-
executable="spawner",
122-
arguments=["bicycle_steering_controller", "--controller-manager", "/controller_manager"],
123-
condition=UnlessCondition(sim),
12496
)
12597

12698
# Delay rviz start after `joint_state_broadcaster`
@@ -135,17 +107,25 @@ def generate_launch_description():
135107
delay_robot_controller_spawner_after_joint_state_broadcaster_spawner = RegisterEventHandler(
136108
event_handler=OnProcessExit(
137109
target_action=joint_state_broadcaster_spawner,
138-
on_exit=[robot_ackermann_controller_spawner, robot_bicycle_controller_spawner],
110+
on_exit=[robot_ackermann_controller_spawner],
139111
)
140112
)
113+
114+
# the steering controller libraries by default publish odometry on a seperate topic than /tf
115+
relay_topic_to_tf_node = Node(
116+
package='topic_tools',
117+
executable='relay',
118+
arguments=['/ackermann_steering_controller/tf_odometry', '/tf'],
119+
output='screen',
120+
)
141121

142122
nodes = [
143123
control_node,
144124
robot_state_pub_ackermann_node,
145-
robot_state_pub_bicycle_node,
146125
joint_state_broadcaster_spawner,
147126
delay_rviz_after_joint_state_broadcaster_spawner,
148127
delay_robot_controller_spawner_after_joint_state_broadcaster_spawner,
128+
relay_topic_to_tf_node,
149129
]
150130

151131
return LaunchDescription(declared_arguments + nodes)

example_11/description/launch/view_robot.launch.py

+12-5
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def generate_launch_description():
2626
declared_arguments.append(
2727
DeclareLaunchArgument(
2828
"description_package",
29-
default_value="ros2_control_demo_example_11",
29+
default_value="ros2_control_demo_description",
3030
description="Description package with robot URDF/xacro files. Usually the argument \
3131
is not set, it enables use of a custom description.",
3232
)
@@ -37,6 +37,14 @@ def generate_launch_description():
3737
default_value="carlikebot.urdf.xacro",
3838
description="URDF/XACRO description file with the robot.",
3939
)
40+
),
41+
declared_arguments.append(
42+
DeclareLaunchArgument(
43+
"gui",
44+
default_value="true",
45+
description="Start Rviz2 and Joint State Publisher gui automatically \
46+
with this launch file.",
47+
)
4048
)
4149
declared_arguments.append(
4250
DeclareLaunchArgument(
@@ -51,6 +59,7 @@ def generate_launch_description():
5159
# Initialize Arguments
5260
description_package = LaunchConfiguration("description_package")
5361
description_file = LaunchConfiguration("description_file")
62+
gui = LaunchConfiguration("gui")
5463
prefix = LaunchConfiguration("prefix")
5564

5665
# Get URDF via xacro
@@ -59,19 +68,17 @@ def generate_launch_description():
5968
PathJoinSubstitution([FindExecutable(name="xacro")]),
6069
" ",
6170
PathJoinSubstitution(
62-
[FindPackageShare(description_package), "urdf", description_file]
71+
[FindPackageShare("ros2_control_demo_example_11"), "urdf", description_file]
6372
),
6473
" ",
6574
"prefix:=",
6675
prefix,
67-
" ",
68-
"sim:=true",
6976
]
7077
)
7178
robot_description = {"robot_description": robot_description_content}
7279

7380
rviz_config_file = PathJoinSubstitution(
74-
[FindPackageShare(description_package), "rviz", "carlikebot_view.rviz"]
81+
[FindPackageShare(description_package), "carlikebot/rviz", "carlikebot_view.rviz"]
7582
)
7683

7784
joint_state_publisher_node = Node(

example_11/description/ros2_control/carlikebot_bicycle.ros2_control.xacro

-23
This file was deleted.

example_11/description/urdf/carlikebot.urdf.xacro

+4-12
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,14 @@
22
<!-- 4 Wheel Robot with front steering and rear drive -->
33
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="carlikebot_robot">
44
<xacro:arg name="prefix" default="" />
5-
<xacro:arg name="sim" default="true" />
65

6+
<xacro:include filename="$(find ros2_control_demo_description)/carlikebot/urdf/carlikebot_description.urdf.xacro" />
77

88
<!-- Import Rviz colors -->
9-
<xacro:include filename="$(find ros2_control_demo_example_11)/urdf/carlikebot.materials.xacro" />
9+
<xacro:include filename="$(find ros2_control_demo_description)/carlikebot/urdf/carlikebot.materials.xacro" />
1010

11-
<!-- Import carlikebot description and ros2_control based on sim arg -->
12-
<xacro:if value="$(arg sim)">
13-
<xacro:include filename="$(find ros2_control_demo_example_11)/urdf/carlikebot_ackermann_description.urdf.xacro" />
14-
<xacro:include filename="$(find ros2_control_demo_example_11)/ros2_control/carlikebot_ackermann.ros2_control.xacro" />
15-
</xacro:if>
16-
17-
<xacro:unless value="$(arg sim)">
18-
<xacro:include filename="$(find ros2_control_demo_example_11)/urdf/carlikebot_bicycle_description.urdf.xacro" />
19-
<xacro:include filename="$(find ros2_control_demo_example_11)/ros2_control/carlikebot_bicycle.ros2_control.xacro" />
20-
</xacro:unless>
11+
<!-- Import carlikebot ros2_control description -->
12+
<xacro:include filename="$(find ros2_control_demo_example_11)/ros2_control/carlikebot.ros2_control.xacro" />
2113

2214
<xacro:carlikebot prefix="$(arg prefix)" />
2315

0 commit comments

Comments
 (0)