Drivers onboard f1tenth race cars. This branch is under development for migration to ROS2.
cd scripts
./run_container.sh
This will bring up a container that contains foxy and the f1tenth_stack
. Display is forwarded so rviz
also works inside the container.
On Logitech F-710 joysticks, the LB button is the deadman's switch for teleop, and the RB button is the deadman's switch for navigation.
/drive
: Topic for autonomous navigation, usesAckermannDriveStamped
messages./scan
: Topic forLaserScan
messages./vesc/odom
: Topic forOdometry
messages.
- ackermann_msgs https://index.ros.org/r/ackermann_msgs/#foxy.
- urg_node https://index.ros.org/p/urg_node/#foxy. This is the driver for Hokuyo LiDARs.
- joy https://index.ros.org/p/joy/#foxy. This is the driver for joysticks in ROS 2.
- teleop_tools https://index.ros.org/p/teleop_tools/#foxy. This is the package for teleop with joysticks in ROS 2.
- vesc GitHub - f1tenth/vesc at ros2. This is the driver for VESCs in ROS 2.
- ackermann_mux GitHub - f1tenth/ackermann_mux: Twist multiplexer. This is a package for multiplexing ackermann messages in ROS 2.
- rosbridge_suite https://index.ros.org/p/rosbridge_suite/#foxy-overview This is a package that allows for websocket connection in ROS 2.
- f1tenth_stack: has the throttle interpolator and all bringup launch scripts and launch configs
- joy
- joy_teleop
- ackermann_to_vesc_node
- vesc_to_odom_node
- vesc_driver_node
- urg_node
- ackermann_mux
- rosbridge_websocket.launch
- port the bringup package to ROS2
- finish vesc imu implementation
- test urg_node on car
- test urg_node on car with ethernet and wifi
- test joy on car
- test bringup launch on car
- test foxglove studio integration over rosbridge
- joy_teleop installed through rosdep/apt has a bug where the stamp is not using the correct format, clone from the teleop_tools repo on foxy-devel branch and put it in f1tenth_stack/ so it works correctly.
- Testing results 09/24/21: mux is working but not correctly, when msgs published to /drive, the deadman switch doesn't work. Deadman switch for teleop works. Odom seems to be not published?
- Parameters:
- duty_cycle_min, duty_cycle_max
- current_min, current_max
- brake_min, brake_max
- speed_min, speed_max
- position_min, position_max
- servo_min, servo_max
- Publishes to:
- sensors/core
- sensors/servo_position_command
- sensors/imu
- sensors/imu/raw
- Subscribes to:
- commands/motor/duty_cycle
- commands/motor/current
- commands/motor/brake
- commands/motor/speed
- commands/motor/position
- commands/servo/position
- Parameters:
- speed_to_erpm_gain
- speed_to_erpm_offset
- steering_angle_to_servo_gain
- steering_angle_to_servo_offset
- Publishes to:
- ackermann_cmd
- Subscribes to:
- commands/motor/speed
- commands/servo/position
- Parameters:
- odom_frame
- base_frame
- use_servo_cmd_to_calc_angular_velocity
- speed_to_erpm_gain
- speed_to_erpm_offset
- steering_angle_to_servo_gain
- steering_angle_to_servo_offset
- wheelbase
- publish_tf
- Publishes to:
- odom
- Subscribes to:
- sensors/core
- sensors/servo_position_command
- Parameters:
- rpm_input_topic
- rpm_output_topic
- servo_input_topic
- servo_output_topic
- max_acceleration
- speed_max
- speed_min
- throttle_smoother_rate
- speed_to_erpm_gain
- max_servo_speed
- steering_angle_to_servo_gain
- servo_smoother_rate
- servo_max
- servo_min
- steering_angle_to_servo_offset
- Publishes to:
- topic described in rpm_output_topic
- topic described in servo_output_topic
- Subscribes to:
- topic described in rpm_input_topic
- topic described in servo_input_topic