Manual Driving#

Drive the differential-drive base manually with keyboard teleop, publishing velocity commands through the collision-aware /cmd_vel_safe topic. This is the simplest navigation scenario and a good way to confirm the base, odometry (EKF), and robot state publisher (RSP) are wired up before mapping or autonomous navigation. See Example Applications for the shared navigation setup. All commands run through nros.

  1. Open the scene:

    Open ~/workspaces/movensys-simulation/<NAVIGATION_MODEL>/navigation_simulation.usd

    nros ros2 launch movensys_navigation_description gazebo_navigation_simulation.launch.py
    
  2. Run the simulator bridge:

    nros ros2 launch movensys_navigation_nav2_config sim_bridge.launch.py use_sim_time:=true
    
  3. Run the EKF + robot state publisher:

    nros ros2 launch movensys_navigation_nav2_config base.launch.py use_sim_time:=true
    

    Add rsp:=false if using Gazebo or ros2_control – both already publish /robot_description.

  4. Drive with the teleop keyboard:

    nros ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args \
         -p turn:=0.5 \
         -p stamped:=true \
         -p frame_id:=base_link \
         -p use_sim_time:=true \
         -r cmd_vel:=/cmd_vel_safe
    

    Keep this terminal focused to send keystrokes to the base.

  1. Open the scene:

    Open ~/workspaces/movensys-simulation/<NAVIGATION_MODEL>/navigation_hil.usd

    Not applicable for HIL.

  2. Start WMX R2 for the navigation base (real WMX runtime) with use_sim_time:=true (see ~/workspaces/movensys_ws/src/wmx-r2/doc/launch_<NAVIGATION_MODEL>_navigation.md).

  3. Run the EKF + robot state publisher:

    nros ros2 launch movensys_navigation_nav2_config base.launch.py use_sim_time:=true
    

    Add rsp:=false if using Gazebo or ros2_control – both already publish /robot_description.

  4. Drive with the teleop keyboard:

    nros ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args \
         -p turn:=0.5 \
         -p stamped:=true \
         -p frame_id:=base_link \
         -p use_sim_time:=true \
         -r cmd_vel:=/cmd_vel_safe