ROS Nodes
These are the ROS Nodes provided by this package.
Most likely, you will use a launch file to run these. You can also run them
by using rosrun
:
rosrun rktl_sim <Node name>
simulator
This node wraps around a physics simulator and allows controlling a car
in a simulated environment. The ROS parameter server is used to configure the
simulator, and publishes sensor data and control commands as ROS messages.
The simulator is implemented in simulator.py
in the src
directory. It can be
run in 'realistic'
or 'ideal
’ mode by changing the ~mode
parameter. If the
mode is 'ideal'
, the simulator will use perfect sensor readings and ignore
any control effort messages that it receives. If the mode is 'realistic'
,
the simulator will add noise to sensor readings and simulate the effects of
control effort on the car’s motion. Many parameters are set in
rktl_launch/config.global_params.yaml
or rktl_sim/config/simulator.yaml
.
Subscribed Topics
/cars/car0/effort
(rktl_msgs/ControlEffort): The car’s desired movement, in terms of throttle and steering amount. Only subscribed to if the~mode
parameter is set to'realistic'
./cars/car0/command
(rktl_msgs/ControlCommand): The car’s desired movement, in terms of velocity and steering angle. Only subscribed to if the~mode
parameter is set to'ideal'
.
Published Topics
/ball/pose_sync_early
(geometry_msgs/PoseWithCovarianceStamped): Pose of the ball with a timestamp and added noise. Only published if the~mode
parameter is set to'realistic'
./ball/odom_truth
(nav_msgs/Odometry): Odometry of the ball with no added noise. Only published if the~mode
parameter is set to'realistic'
./ball/odom
(nav_msgs/Odometry): Odometry of the ball with no added noise. Only published if the~mode
parameter is set to'ideal'
./cars/car0/pose_sync_early
(geometry_msgs/PoseWithCovarianceStamped): Pose of the car with a timestamp and added noise. Only published if the~mode
parameter is set to'realistic'
./cars/car0/odom_truth
(nav_msgs/Odometry): Odometry of the car with no added noise. Only published if the~mode
parameter is set to'realistic'
./cars/car0/odom
(nav_msgs/Odometry): Odometry of the car with no added noise. Only published if the~mode
parameter is set to'ideal'
.match_status
(rktl_msgs/MatchStatus): Status of the match, whether the match is ongoing or if a goal has been scored, ending the match (and which goal it was scored on).
Parameters
~mode
(string): Mode of the simulator (either ‘ideal'
or'realistic'
).~render
(bool, default: False): Whether or not to enable rendering of the simulation.~rate
(int, default: 30): Rate at which to run the simulation.~frame_id
(string, default: ‘map’): Frame ID to use for published ROS messages.~timeout
(int, default: 10): Timeout in seconds for certain simulator functions./field/width
(float): Width of the playing field, in meters./field/length
(float): Length of the playing field, in meters./field/wall_thickness
(float): Thickness of the walls around the playing field, in meters./field/goal/width
(float): Width of the goals, in meters.~spawn_height
(float, default: 0.06): Height at which to spawn the ball and car.~urdf
(dict): Dictionary of URDF file paths for each robot. Can be set by settingurdf/*
to whatever is needed.~ball/init_pose
(list): List of 3 floats representing the initial position of the ball.~ball/init_speed
(list): List of 3 floats representing the initial speed of the ball.~ball/sensor_noise
(dict): Dictionary of noise parameters for the ball’s sensors./cars/length
(float): Length of the car, front to rear wheel center to center, in meters./cars/throttle/max_speed
(float): Maximum speed of the car, in meters per second./cars/throttle/tau
(float): The throttle time constant, in seconds./cars/steering/max_throw
(float): The maximum steering throw, in radians./cars/steering/rate
(float): The maxmimum steering rate, in radians per second.~car/init_pose
(list): List of 3 floats representing the initial position of the car.~car/sensor_noise
(dict): Dictionary of noise parameters for the car’s sensors.
visualizer
This node provides a visualizer that uses Pygame to show the position of a car
and a ball on a playing field. The script subscribes to topics that provide
information about the position of the car and the ball, and updates their
position in the visualizer accordingly. Additionally, the script can display a
planned path for the car using a linear path or a bezier curve. Many parameters
are set in rktl_launch/config.global_params.yaml
or
rktl_sim/config/visualizer.yaml
.
Subscribed Topics
/ball/odom
(nav_msgs/Odometry): The ball’s odometry information containing its position, orientation, and velocities./cars/car0/odom
(nav_msgs/Odometry): The car’s odometry information containing its position, orientation, and velocities./cars/car0/path
(rktl_msgs/Path): Used for visualizing the path the car should follow as a series of waypoints./cars/car0/lookahead_pnt
(std_msgs/Float32): Used for visualizing the path the lookahead point for a pure pursuit algorithm./agents/agent0/bezier_path
(rktl_msgs/BezierPathList): Used for visualizing the path the car should follow as a bezier curve.
Parameters
/field/width
(float): Width of the playing field, in meters./field/length
(float): Length of the playing field, in meters./field/wall_thickness
(float): Thickness of the walls around the playing field, in meters./field/goal/width
(float): Width of the goals, in meters./ball/radius
(float): Radius of the ball, in meters.window_name
(string, default: ‘Rocket League Visualizer’): Name of the window~frame_id
(string, default: ‘map’): Frame ID to use for published ROS messages.~timeout
(int, default: 10): Timeout in seconds for certain simulator functions.~rate
(int, default: 30): Rate at which to run the simulation.~cars/body_width
(float): Rendered width of the car in the visualizer, in meters.~cars/body_length
(float): Rendered length of the car in the visualizer, in meters.~media/field
(string): Path to the image representing the field.~media/car
(string): Path to the image representing the car.~media/ball
(string): Path to the image representing the ball.